151014的测试总结
2015-10-14 16:27
148 查看
【T1】
考查的知识点:DP
【题目及题号】hello superoj925【题解】
f[i][j]表示alice拿了i个数字bob拿了j个数字的最大和。
对于第i位数字,对和产生的贡献实际可以用digit[i]*t[i],t[i]是预处理出来的10^X 次方。
然后转移方程就很明显
f[i][j] = max(f[i-1][j]+digit[i+j]*t[i],f[i][j-1]*digit[i+j]*t[j]);
【考试ING】
做这道题的时候觉得应该是DP,然后我设计状态的时候傻逼了,想要把它搞成一维的,然而发现并不行。
【我也不知道自己怎么想的,数据范围那么小还想搞一维,简直有病。】
然后又去写了个贪心,但是贪心一拍就错,这道题花了近两个小时调试【艹】,策略有问题( ⊙ o ⊙ )啊Orz
最后用半个小时打完了三个题的暴力,也没有查错。
T2和T3我还没开始想时间就差不多了,心碎。
注:其实这种DP的状态很常见,没有想出来大概是因为昨天晚上写汉诺塔写到十一点。
【T2】
考查的知识点:也许是哈希表?
【题目及题号】rect superoj926【题解】
定义一个矩阵可以用其左上角的格子和右下角的格子来表示。那么用xiyixjyj可以表示一个矩阵。
这个题有一个很重要的性质,矩阵xiyixjyj的和 = sum[xi……xj]*sum[yi……yj];
有了这个性质就可以枚举sum[xi……xj],如果能被a整除,就记录下a除以它留下的数出现的次数【用hash表或者map】
最后再枚举一遍sum,累加不同的sum在hash中出现的次数。这样就表示原来的sum*现在的sum = a;
注意特判A为0的情况。
【考试ING】
最后交程序的时候把int 改long long了,然后内存直接炸掉了Orz.
然后下来改了内存,发现有一个问题就是我写30分暴力的时候统计sum是有错的。
假设用a[i][1]记录第i行第1列的原数字,当其相乘的时候是会被改变的,所以要另外开一个数组,代码区别如下:
RIGHT
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) sum[i][j] = aa[i][1]*aa[1][j];
WRONG
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) aa[i][j] = aa[i][1]*aa[1][j];
【T3】
考查的知识点:gcd 因数的性质
【题目及题号】half superoj927【题解】
最暴力的想法就是枚举每个数的因数,分别看其在其他数中出现的次数,找到那个达一半的最大的。
—————————–时间复杂度O(n^2*sqrt(ai))——————————-
对于大一些的数据,我们可以发现一个性质,对于每个数,它的因数是解的概率是(1/2)。
那么枚举10~20个数出错的概率就是(1/2)^20 可以忽略了。
现在的问题就变成了,已知因数的情况下如何快速统计每个因数出现的次数?
首先,如果a[i],a[j]都能整除x,那么gcd(a[i],a[j])必然也能整除x;
所以我们就可以利用这个性质,对于每个a[j]求其和当前枚举数的gcd记录次数。
最后统计的时候如果fac[v]%fac[j]==0那么fac[j]就要加上fac[v]出现的次数。
【考试ING】
傻逼的我暴力也写错了,枚举不应该从头到最大的数开方。
注意:对于概率较小的情况,可以采取类似的方式骗分,想想noip2014的解方程是怎么写的吧。
最后的总结
傻逼的我干傻逼的事。以后千万别再把所有时间耗在一个题上了。
尤其是,明明知道写的是贪心【非正确算法】还想提高正确率的时候,先确定所有题都不能做的时候再来骗分吧。惨痛的教训Orz。
最让人悲伤的事情是,我调了那么久的题,最后我还是只交了卡时暴力。unhappy!
题目 | 预估分数 | 实际分数 |
---|---|---|
Hello | 30 | 80 |
Rect | 30 | 0 |
Half | 40 | 10 |
相关文章推荐
- PropertyChangedCallback 只触发了一次?
- PostgreSQL应用相关问题解决
- matlab将多条曲线绘制在一起
- HDU 2066 一个人的旅行(Dijkstra,建图很巧妙)
- Shell学习/基本Linux命令/文件与目录
- 排序之交换排序
- sap abap 表类型 (transparent Pooled and Cluster table)
- iOS-CoreGraphics(CGGeometry.h--解读)
- 4-8 简单阶乘计算 (10分)
- FineReport——FS
- saiku - schema文件分析
- [PAT (Advanced Level) ]1027. Colors in Mars 解题文档
- Swift之 ? 和 !
- centos 6.5 安装redis 2.8.3 测试和应用
- 正则表达式小记
- 【原创】我辞去了年收入50万的工作,去做在线教育的老师
- java HashMap原理
- Ubuntu下使用GStreamer开发简单的mp3播放器
- 4-7 统计某类完全平方数 (20分)
- java集群技术