第一题
考查的知识点:也许是排序,或者是map?
【题目及题号】电话号码 superoj
【题解】
第一种做法 用map
第二种做法 转成7位数数字排序然后特判输出。
【易错点】
最后交卷之前出了组数据,发现没有输出前导零,立刻补上了。
{注:字符串题目如果转成数字排序,最后记得转回去要加入前导零。}
第二题
考查的知识点:DP
【题目及题号】擦除线段 superoj
【题解】
算法一:
f[i][j]表示保留j条线段,最后一条为i的方案数。
f[i][j] = sigma(f[k][j-1]) k不与i重合。
算法二:
f[i] 表示前i条线段最多能保留多少条
g[i] 表示前i条线段在保留最多条数的情况下有多少种方案。
那么
情况一 f[j]+1>f[i] f[i] = f[j]+1 g[i] = g[j];(先找到最大的,然后再扫一遍)
情况二 f[j]+1==f[i] g[i]+=g[j];
【考试ING】
首先想出了第一种算法,实际这种算法只能得50分,然后我去针对我自己的转移方程进行了优化,得到了100分。
方法就是把点离散化。
错的原因:分析一下为什么没有想到第二种算法,其实当时是想到了第二种方式的状态,但是并没有深想就跳过了。有点可惜。
第三题
考查的知识点:二分答案
【题目及题号】电路设计 superoj
【题解】
有一个性质就是,如果当前需要拼出x块板子,只需要可用的电阻总数大于x*m即可。
证明:对于同一种电阻,如果它的数量大于x我就把多出去的部分丢掉。
那么现在保证相同的电阻最多x个,那么它就只能分别放到x块板子上。
对于不足x的电阻,就只保留它本身的数量。
例如 33344442255 现在要填三块板子
可以3 3 3 纵向来看就分别是合法的方案。二有两个,五也有两个,只会用多出来的种类(5)来填2的空白,
4 4 4
2 2 5
因为3 4多余的部分被丢掉了,所以它一定不会重复。
那么就可以二分x,通过判断可行性来解决问题了。
{对于不好正向求解的问题,我们可以采用枚举解来验证的方式求解。}
【考试ING】
我写了个自以为正确的贪心,现在不是很清楚为什么错,一会儿再拍,拍了再来写为什么好了。
最后的总结
今天的题没有AK我感到很可惜。Orz。
题目 | 预估分数 | 实际分数 |
---|---|---|
电话号码 | 100 | 100 |
擦除线段 | 50~80 | 100 |
电路设计 | 0~40 | 0 |