您的位置:首页 > 其它

ACM集训日记-8月24日

2017-08-24 17:49 197 查看
    暑期ACM集训也接近结尾了,今天是最后一次训练赛了,我的小队也是都有事了,基本是在孤军奋战,早上还在啃树状数组,早上做的T题点击打开链接,感觉这个又是一个排兵布阵的变形,本来以为会很简单,结果一个地方小小的改变,变得很不好解决,就是他增加值的操作,是将区间内的数组都增加相同的值,由于add的操作会造成之后的数组值更新,所以不好做,用了两个数组维护值。 

if(op[0]=='C')
{
scanf("%d",&x);
add(bit0,a,-(x*(a-1)));
add(bit1,a,x);
add(bit1,b+1,-x);
add(bit0,b+1,x*b);
}     然后下午的训练赛也着实不好做,第一个做完的是B题,这道题以前在单调队列中做过,但再一次做还是费了点时间,一开始是超时,发现没有改scanf 中的%d,改成%I64d就行了,因为之前那样写每次都会强制转换类型,也会花费时间,做过的题还是不够熟练啊,然后做的是D题点击打开链接,一开始看这道题,还理解错题意了,以为是一个贪心的题只要把小的在前面取出来就行了,然后发现样例不过,重新读题才知道,每次取只会从最前和最后选一个取,第二次用的是dfs,把所有情况都举了出来,然后就超时了,然后就发现不能这么做,然后发现这其实是dp!
for(int i=1;i<=n;i++)
{
for(int j=1;j+i-1<=n;j++)
{
int tmp=n-i+1;
int temp=i+j-1;
f[j][temp]=max(f[j+1][temp]+tmp*a[j],f[j][temp-1]+tmp*a[temp]);
}
}找到规律后就一路绿灯,也不超时了。
    今天就这样过去了,小组的都回去了,就留我一人在ACM中独自凌乱XD

    明天加油!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: