【每日总结】2021-1-22
学习时间:5h
刷题数:1
学习内容:继续学动态规划和二分。
题目:切绳子
今天在昨天的代码的基础上做了两处修改:
1、将边界l和r定义为double型,这样在可以排除小数点的干扰
2、将最后输出的结果由mid改为r。因为若上一步的运算为r=mid-1,而此时mid=l,则说明mid和l的值偏大,则输出r;若上一步的运算为l=mid+1,而此时l>mid=r,可以输出r或mid的值。
这也就是昨天我错50%的原因。
核心代码:
while(r-l>=0)
{
mid=(l+r)/2;
int count=0;
for(int i=0; i<n; i++)
{
count+=(int)a[i]/mid;
}
if(count>=k)
l=mid+1;
else
r=mid-1;
}
printf("%.2lf\n",(double)r/100);
题目:维斯顿的烦劳
这又是一个鬼畜题目,我还来改去,还是错50%。
刚开始用的二维数组dp,发现数组没法开那么大,报运行错误,然后换成一维数组。
但是这样写枚举的顺序错了,对于当前处理的物品时会被之前的物品所影响,相当于多次放入物品i。
就像这样
然后我就把代码改成和oi-wiki的模板一样
样例通过,但是依然错误50%,
服了,吐血。。。。。。。。。
谁是我们的敌人?谁是我们的朋友?这个问题是革命的首要问题。------《毛选》
庚子年 冬 怀化