2014 暑假(清凉一夏) 题解(无Code)
2014-08-03 22:12
148 查看
A题:
看懂题目了以后,果断的模拟(或者数学,或者二分)
按数表的排列顺序,会发现规律,从左下到右上来算一行,奇数项和偶数项分母和分子递增递减的不一样,我们求第n项,只需要求1+2+ ... + m 刚好大于n的项m,然后通过奇数项和偶数项的排列规律,就可以求出来了。
恩 传说这道题还可以用数学方法:额 具体的我就不推导(我也不会)直接给出公式 :m = (-1 + sqrt(1 + 8*n)) / 2。
然后可以二分,由于我们可以用n*(n + 1) / 2的方式算出前n项和,那么我们就可以通过这一方式来利用二分来进行猜数,如果公式算出来的数小于n,那么范围就可以缩小到start - mid之间,这样逐渐缩小范围,就可以快速的求出m。
ps:我还是比较仁慈的,只卡了数据范围,没有卡时间(如果卡时间的话,就只能二分和数学了)
int范围是:(1 << 31 ) - 1 ,没有到 1 << 32
B题:
就是比简单的最大串和麻烦了一点,需要用额外的数组记录一下开始的下标和结束的下标,然后直接输出就OK。对了还有判断一下,是否全是负数。
最大和这个就百度吧。。。。
C题:
简单宽搜:
在处理恶魔节点的时候,把此节点变成道路,但是并不走此节点,坐标不变,然后把步数加1,添加到队列里面。
关键代码:
D题:
这道题是小白(算法竞赛)里面的一道题,最大值最小化。
先用二分枚举,然后利用贪心是否能够进行分割。
二分枚举的是能够大于等于所有数的一个数,然后利用这个数,来对这个序列进行判断,看是否能够利用这个数来进行符合的划分。
贪心的策略是每次尽量向右划分,也就是左边的一组数超过或等于枚举出来的数,就算一次划分。
E题:
一道简单的数学题。
通过画图发现:如果横边正好整出a,那么我横着的瓷砖就可以拼m / a 块,如果横边不能正好整除a,那么横着的就摆上m/ a + 1 块,纵边同理。
那么需要的瓷砖就是 横边需要的数 * 纵边需要的数。
同样的, 数据是从1~1e9,如果相乘,超int。
F题:
额 应该算是博弈吧 还是算贪心?
对于每摞牌来说,要么是奇数,要么是偶数。
偶数时候:
两个各取一半,因为如果靠近小俞这边一半牌里面有很大的数,那小俞想取这张牌就比你简单的多(如果你不拿这摞的牌,那么小俞也可以同样的不取这摞的牌,那么你就不会去浪费步数取你根本取不到的牌。
奇数时候:
肯定有一方要多拿一张牌,那么谁拿走这张牌就由这张牌的大小顺序决定,(如果偶数的摞都取完了,取奇数的话,按照小俞先的顺序,那么这张中间的牌肯定是小俞拿,那么小俞肯定先拿这摞牌,来获取大的分数,然后中间这张就是你的了)。
所以先按顺序取所有的摞(除了中间的奇数摞的中间牌),把所有的中间牌,排一遍序,顺序取就可以了。
G题:
大数减法。。。。。
注意:
1.第一个数需要特别注意
2.不要有多余的0
3.结果是0的时候别忘了
H题:
唯一一道英格力士题。
看懂题意,其实就是找是否有一个2*2的地区是有3个以上同样颜色的块。
IQ = 英文能力
看懂题目了以后,果断的模拟(或者数学,或者二分)
按数表的排列顺序,会发现规律,从左下到右上来算一行,奇数项和偶数项分母和分子递增递减的不一样,我们求第n项,只需要求1+2+ ... + m 刚好大于n的项m,然后通过奇数项和偶数项的排列规律,就可以求出来了。
恩 传说这道题还可以用数学方法:额 具体的我就不推导(我也不会)直接给出公式 :m = (-1 + sqrt(1 + 8*n)) / 2。
然后可以二分,由于我们可以用n*(n + 1) / 2的方式算出前n项和,那么我们就可以通过这一方式来利用二分来进行猜数,如果公式算出来的数小于n,那么范围就可以缩小到start - mid之间,这样逐渐缩小范围,就可以快速的求出m。
ps:我还是比较仁慈的,只卡了数据范围,没有卡时间(如果卡时间的话,就只能二分和数学了)
int范围是:(1 << 31 ) - 1 ,没有到 1 << 32
B题:
就是比简单的最大串和麻烦了一点,需要用额外的数组记录一下开始的下标和结束的下标,然后直接输出就OK。对了还有判断一下,是否全是负数。
最大和这个就百度吧。。。。
C题:
简单宽搜:
在处理恶魔节点的时候,把此节点变成道路,但是并不走此节点,坐标不变,然后把步数加1,添加到队列里面。
关键代码:
struct Node { int x; int y; int tep; Node(int tx, int ty, int tep) { x = tx; y = ty; this -> tep = tep; } Node(){} };
......
if(mp[x][y] == 'x') { mp[x][y] = '.'; Node p(x, y, tep + 1); Q.push(p); continue; }
.....这样第一个搜到的第一个节点的步数就是最少步数。
D题:
这道题是小白(算法竞赛)里面的一道题,最大值最小化。
先用二分枚举,然后利用贪心是否能够进行分割。
二分枚举的是能够大于等于所有数的一个数,然后利用这个数,来对这个序列进行判断,看是否能够利用这个数来进行符合的划分。
贪心的策略是每次尽量向右划分,也就是左边的一组数超过或等于枚举出来的数,就算一次划分。
E题:
一道简单的数学题。
通过画图发现:如果横边正好整出a,那么我横着的瓷砖就可以拼m / a 块,如果横边不能正好整除a,那么横着的就摆上m/ a + 1 块,纵边同理。
那么需要的瓷砖就是 横边需要的数 * 纵边需要的数。
同样的, 数据是从1~1e9,如果相乘,超int。
F题:
额 应该算是博弈吧 还是算贪心?
对于每摞牌来说,要么是奇数,要么是偶数。
偶数时候:
两个各取一半,因为如果靠近小俞这边一半牌里面有很大的数,那小俞想取这张牌就比你简单的多(如果你不拿这摞的牌,那么小俞也可以同样的不取这摞的牌,那么你就不会去浪费步数取你根本取不到的牌。
奇数时候:
肯定有一方要多拿一张牌,那么谁拿走这张牌就由这张牌的大小顺序决定,(如果偶数的摞都取完了,取奇数的话,按照小俞先的顺序,那么这张中间的牌肯定是小俞拿,那么小俞肯定先拿这摞牌,来获取大的分数,然后中间这张就是你的了)。
所以先按顺序取所有的摞(除了中间的奇数摞的中间牌),把所有的中间牌,排一遍序,顺序取就可以了。
G题:
大数减法。。。。。
注意:
1.第一个数需要特别注意
2.不要有多余的0
3.结果是0的时候别忘了
H题:
唯一一道英格力士题。
看懂题意,其实就是找是否有一个2*2的地区是有3个以上同样颜色的块。
IQ = 英文能力
相关文章推荐
- Codeforces April Fools Day Contest 2014(附官方题解)
- Google Code Jam 2014(附官方题解)
- Codechef July Challenge 2014部分题解
- 百度2014校招笔试题目题解
- USACO2014FebruarySilver Secret Code
- [题解]CodeChef APRIL Challenge 17
- Write the code.Change the world.---WWDC2014
- 【最大流】BAPC2014 A Avoiding the Apocalypse (Codeforces GYM 100526)
- Coder-Strike 2014 - Finals (online edition, Div. 2) D.Bug in Code
- Codechef Not a Triangle题解
- 【位运算分析+主席树】CodeChef(PREFIXOR)[Prefix XOR]题解
- [题解] codevs 1080 线段树练习
- Codefores Good Bye 2014 - A,B,C
- codechef The Ball And Cups题解
- 【题解】Radio stations Codeforces 762E CDQ分治
- codechef Little Elephant and Bombs题解
- 【日常学习】codevs1287 矩阵乘法题解
- AC日记——The Street codechef March challenge 2014
- 【题解】HNOI-2014 Day2解题报告
- 【DFS填数】(2014)第五届蓝桥杯省赛 C/C++ B组 题解(第七题)