This is my blog.
又恢复正常了……
第一个礼拜开始练习……
经过CCPC杭州站的打击
大家都比之前更加努力,更加坚定了
既然做了,就要做到做好,
何况我们的目标不小,还是需要加油的
经过这些时段的练习,感觉是有进步的,但是体现的不明显
革命尚未成功,同志仍需努力啊!!!
(未完待续)
题目在Codeforces上可以下载到,就暂且不叙述了。
A. Auxiliary Project
水题,分析一下每个数字,找出最优解,分类讨论即可……文件输入输出居然写错了,真神奇!!!
AC代码
|
|
B. Boolean Satisfiability
其实看到这种题目,第一反应就是不看了。这个描述,太绕了……补题的时候,发现其实还……只有两个符号|
和~
,所以,对于一个表达式来说,如果同一个变量既有正又有取反符号,则每个变量都可以既取真又取假,则有2^n
个;而如果没有的话,则去掉全为假的一种情况即可。
AC代码
|
|
C. Consonant Fencity
今天补完,有点感觉……
刚开始看题的时候,没看懂……但直觉告诉我可以做(哪儿来的自信……
题目要求使合法对最多。合法对是由两个大小写不同的辅音字母组成。
字母挺少的,配对的情况也很少。只需要确定两个字母组成的对,然后暴力枚举可能的情况。
看到网上很多有dfs的……其实感觉原理差不多
AC代码
|
|
D. Dividing Marbles
自己觉得能分一半的分一半,不能分一半的分成三等分,否则,就分成1和剩下的。WA了……到时候再想想,争取今天补完……
看网上的一份题解,讲的是用二进制和贪心的想法……
看代码也是除三和除二……
(心情不好,看不下去……改天吧……
E. Equal Numbers
当时漏想了,互为因子的情况;然后就……
博博昨天说了一种思路,感觉挺对的……
估计得明天实现了……
再看了别人的代码,感觉和博博的思路是差不多的。
对于lcm在其中的,可以按照递减的方法;对于不存在的,需要找到因子,然后维护一个ans数组。
AC代码
|
|
F. Fygon 2.0
又是这种表达式,表示还没看题
G. Grand Test
H. Hidden Supervisors
I. Intelligence in Perpendicularia
总周长减去在外部的周长即可。
J. Joker
K. Kotlin Island
在规定的规模下,用.
和#
将区域分为指定的块数。
求出最大可分出的块数,去掉不可能解;因为h,w都挺小的,所以我得到的每行每列的最大可分块数也很小,双重循环,看是否能合成。
L. Little Difference
首先去掉可以用2的次方,因为一定可以用无穷多个1和2的乘积来表示。
接着最小的因数为2,所以可以枚举总次数。然后二分因数。
注其实做题的时候,对于数据范围应该要很敏感才对么……就比如说【见其他】,根据数据的范围来确定做法。并且因为数据很大,所以能用除法就不要用乘法,同时注意除法时的去小数部分的情况。所以尽量除数为较小的数。
AC代码
|
|
其他
题目
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
马路上有一些区域要用来建地铁,这些区域用它们在数轴上的起始点和终止点表示。已知任意区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两颗树)移走。你的任务是计算将这些树都移走后,马路上还有多少树。有M个区域。
解法
小范围
1<=L<=10000 1<=M<=100
开个10000的数组,然后每一个区域标记一下,最后遍历一遍输出。
最坏的情况(1e6)
大范围
1<=L<=100000 1<=M<=100000
给M的左界和右界分别排个序,遍历第一遍,遇到左界+1,遇到右界-1;最后扫一遍整体,遇到值“0”,ans++
超大范围
1<=L<=10^9
1<=M<=100000
设置一个结构体
根据左开右闭的原则
根据左界排序,之后一个for循环计算。这里的for循环的最大值是2*M
,而对于第二种的for循环的最大值是L
。
注 区间是一个点的时候,应该把区间作为左开右闭,可以画图看看。比如1-3
和4-6
,实际上连起来是1-6
,但是你的区间就成了断开的。所以应该看作[1,4)
和[4,7)
。这里用到的一个思想就是离散化。不过,离散数学学到现在,并没觉得有什么用啊……(也有可能是我没体会到它的精髓。不知道图论学完后,还会是这个感觉么 :)
转载请注明出处,谢谢。
愿 我是你的小太阳