社区讨论
很多题解没有处理只剩一个纪念品的边界情况
P1094[NOIP 2007 普及组] 纪念品分组参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m5jq5wuv
- 此快照首次捕获于
- 2025/01/05 22:45 去年
- 此快照最后确认于
- 2025/11/04 11:55 4 个月前
题解里排序后双指针的做法的代码
CPP while(l<=r)//一定要有等号。
{
if(a[l]+a[r]<=W) //一定要有等号。
l++,r--,ans++;
else
r--,ans++; //贪心过程
}
应该改成
CPP while(l<=r)//一定要有等号。
{
if(l==r) {
ans++;
break;
}
if(a[l]+a[r]<=W) //一定要有等号。
l++,r--,ans++;
else
r--,ans++; //贪心过程
}
判断只剩一个纪念品的边界情况,因为一个纪念品不能复制一个装成一组
在这道题里这个代码不判断边界情况其实对结果没有任何影响,都是ans++,算是歪打正着了。不过逻辑不对,换一道题可能就错了
回复
共 2 条回复,欢迎继续交流。
正在加载回复...