只看了前面三题,都很水。但是做的很不好。
A.Sockets 题目确实挺晦涩的,但是勉强看着Sample就一下懂了,按照给的supply-line filter排个序,然后由大到小累积,看需要几个能满足所有Devices,如果不行就 -1
View Code #include #include #include #include #include #include #include #include #include
B.Playing Cubes Petya第一个方块放的颜色决定方块的排列。可以模拟放方块的过程来得到结果。答案为 max(red, blue)-1, min(red, blue)
C.View Angle
从原点(0,0)出发的的n条射线,求最小角度包含所有射线。
可以用atan2()函数。
对于任意不同时等于0的实参数x和y,atan2(y,x)所表达的意思是坐标原点为起点,指向(x,y)的射线在坐标平面上与x轴正方向之间的角的角度度。当y>0时,射线与x轴正方向的所得的角的角度指的是x轴正方向绕逆时针方向到达射线旋转的角的角度;而当y<0时,射线与x轴正方向所得的角的角度指的是x轴正方向绕顺时针方向达到射线旋转的角的角度。
当弧度值小于0时候,加上2*M_PI,修正成从0开始。
将这些射线按照弧度值升序,然后依次枚举相邻两个射线的角度,别忘了处理首尾两个射线,最后用360.0 - 枚举出最大的相邻射线弧度,乘以180.0/M_PI,就是答案。
View Code #define _CRT_SECURE_NO_WARNINGS#define _USE_MATH_DEFINES#include #include #include #include #include #include #include #include #include #include
D.Sum
自己YY了,结果过了。因为满足ai ≤ ai+1 ≤ 2ai-1 ,所以有个想法,设定一个变量mend = 0作为修正变量,从尾到头不断根据mend变量来调整取正还是取负。
但是遇到3 3 5这种,从尾到头mend最后为-1,那么就把正负号颠倒过来好了。看到Tag有DP,不知道该怎么想,求各位大牛指导。
View Code #define _CRT_SECURE_NO_WARNINGS#include #include #include #include #include #include #include #include #include #include #include
E.Greedy Elevator