151019的测试总结

12 篇文章 0 订阅
1 篇文章 0 订阅

第一题

【题目及题号】图像压缩 superoj928
【题解】
把所有十进制转成八位二进制然后扫到不同数字就求解输出。
数字为零直接输出个数,数字为一答案则为个数+(1<<7)
【考试ING】
我真是傻逼的不行,看题目看跳行了,然后读掉了最关键的信息,导致看不懂样例转码。
最后重读题目,浪费了不少时间。

下次用手指着读好了。【Orz重回小学时代】

第二题

【题目及题号】通讯传递 superoj929
【题解】
这是一个NP问题,只能搜索。
朴素的搜索就是对于每一层,枚举当前已知信息的人,再枚举当前未知信息的人,然后回溯。
这个复杂度是O(n^(2*n))
现在考虑这种朴素搜索的冗余部分。
会出现一种情况,当前这层枚举了px,qx,下一层枚举了px+1,qx+1;
然后回溯到这一层,枚举px+1,qx+1,到下一层又枚举了px,qx;
为了减少这部分的冗余,我们可以给已经被选择的点一个序号,那么保证每次选择都是单调的。
意思为,枚举到px+1,qx+1的时候,下一层就只能出现px+2了。
【考试ING】
写完朴素的搜索,开开心心试了几组数据,发现13以下都可以搜出来。
然后就分块了,13以上剪了一个错误的枝,多过了两个点,开心。
【易错点】
本题会出现一个很可怕的情况,15*15的矩阵输出-1。
这意味着,要搜完所有的情况。
这时候我们就需要特判,如果每个人的工作量累加小于n-1,直接输出-1。就可以避免这种情况。
【我会说我是因为看了标程才知道数据卡了我们这种情况吗?Orz】

即使认为自己的程序应该可以处理某些情况,也应该加上对可能出现特殊情况的特判。【特判保平安Orz】

第三题

【题目及题号】实验基地 superoj930
【题解】
50% O(n^2)的DP
先(n^2)求出minn[i][j]表示第一行左界为i,右界为j之间的最小值。
然后O(n^2)枚举左界右界 求max(sum[j]-sum[i-1]-minn[i+1][j-1])。

100% O(n)的DP
本题要求拼出一个“凹”字。凹有三个部分,左边凸起来的,中间掉下去的,右边凸起来的。
f[i][0]第i列属于左边那一部分;
f[i][1]第i列属于中间那一部分;
f[i][2]第i列属于右边那一部分。

f[i][0] = max(f[i-1][0],0)+a[i]+b[i];
f[i][1] = max(f[i-1][0],f[i-1][1])+b[i];
f[i][2] = max(f[i-1][1],f[i-1][2])+a[i]+b[i];

【考试ING】
其实看到本题的时候我只想出来了n^4的算法。
后来想想能不能降维,就发现了区间最小值与和不相关,那么就分开做minn和答案。n^2的算法就这么想出来了。
最后发现此题和前天那道castle protecting非常类似,然后就做出了O(n)的做法。
【这里挖个坑,题解还有一种算法,没看,找时间看了吧】
【易错点】
求第一部分50分的minn时,要注意先枚举长度再枚举左界,这样才能保证每次转移的值求出来了。

强调一个问题,Dp的状态只能由已知转移而来。

最后的总结(?)
昨晚9点过睡了终于符合了我的生物钟,今天发挥比较正常,至少没出现暴力写错的情况。
另外这套题很简单,基本做出了正常水平,久违的第一Orz。我果然还是太弱了。

题目预估分数实际分数
1100100
250~8070
3100100
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值