A - The kth great number【模拟】【vector】
[HDU - 4006 ]
一看这个题,求第k大数,以为是主席树呢。仔细一看,哦,用vector模拟一下就行了。
后来看其他队员也有用multiset和priority_queue的,嗯,可以趁这个机会学习一下它们的用法。
1 |
|
B - A Trivial Problem【数学】
CodeForces - 633B
题意:
给出一个数m,求阶乘末尾有m个0的数的个数及这些数。
思路:
一眼望去,以为是这个题,又读了一遍发现这个是“反着求”。
以为是规律,然后写几项看看吧,写了m = 30多时的答案还是没看出什么来。
休息了一会想到还是用上面那个题的代码,因为要求的序列和m的关系是单调的,所以或许可以通过二分枚举答案,接着试了试上界,序列中的数最大到400009,好了可以二分了。最后只要把符合要求的存一下,问题就解决了。
MyCode:
1 |
|
C - New Skateboard【模拟】【分类讨论】
CodeForces - 628B
题意:
给出一个字符串,求出其中的连续&&满足“数值”为4的倍数的子序列的数量。
思路:
纸上写一写,然后分类讨论一下就行了。
MyCode:
1 |
|
D - Color the ball【前缀和或线段树】
HDU - 1556
一眼望去线段树。观察选手代码长度,自信$n^2$莽了一发,收获TLE。老老实实上线段树AC。
AC后发觉事情不太对,这个前缀和应该也可以的,但一时没想起来怎么写。赛后搜了一下不由感叹:秒啊秒啊。
具体一点就是在增加数字的区间两端进行标记,左端点+1右端点的右边坐标-1,这样某个区间的次数就是从1坐标到这个位置的数值之和了。
1 |
|
E - 非常可乐【BFS或数学】
HDU - 1495
kuangbin专题一做过,当时BFS过的,看选手代码发现怎有如此短的代码?打开一看用了gcd什么的,不太懂,等督促数学选手水哥写完博客后大家可直接去访问他的博客(UPD:已更新,点击打开对应文章链接)。
1 |
|
F - 今夕何夕【模拟】
HDU - 6112
2017百度之星初赛签到题。。其实并不难的,就是模拟一下日期,注意一下闰年就完了,不知道为啥做的人这么少。
记得有个公式(蔡勒公式)直接算日期的,找之前的板子没找到,然后直接按百度百科的抄上了,结果姿势有点不太对TLE了两次,最后老老实实模拟了。
哦对了,这题的输入格式,还有大爷直接字符串 + gets然后再转化为int变量,为啥不直接格式读入。。??
1 |
|
G - 第几天?【模拟】
HDU - 2005
签到题,判断闰年。简单提一点,还是上面说的,注意格式读入。。
等会,有人写了好几kb的代码,打开一看十几个if-else,我哭了。。你们通过这种写法A掉的,再按照下面的重新写一遍吧。。
1 |
|
H - 最大子矩阵【二维前缀和】
HDU - 1559
典型的动态规划问题,也是利用前缀和进行求解。
用$sum[i][j]$表示起点为矩形左上角这个点为右下角的矩阵的元素之和,最后枚举大小为$x \times y$的矩阵时枚举左上角位置后,右下角的位置就是$(i+x-1,j+x-1)$,自己画图减一下就能看出来,最后的答案就是:
$sum[i+x-1][j+y-1] - sum[i+x-1][j-1] - sum[i-1][j+y-1] + sum[i-1][j-1]$,
为了避免数组下标出现负数的情况,我存图用的下标是从1开始的。
1 |
|
I - Help is needed for Dexter【规律】
UVA - 11384
不知道如此简单的一道题为啥没人做。。
题目大意:
这里有1~n共n个数,你每次可以选取其中的若干数个让他们减去一个你指定的数(中途不得出现负数),问最少经过多少次操作能使得所有的数变为0。
解题思路:
找了几个数写出来看了看,很显然的规律题。
具体过程:
1 1次
1 2 经过一次变换可以转化为1 1 共需要2次
1 2 3 经过一次变换可以转化为1 0 1 共需要2次
1 2 3 4 经过一次变换可以转化为1 2 1 2 共需要3次
1 2 3 4 5 经过一次变换可以转化为1 2 0 1 2 共需要3次
…………
就是经过尽量少次数的变换让他们变成前面出现过的就行了,就提示到这,一定要自己推出来并AC掉呀。
MyCode:
1 |
|
J - find your present (2)【二进制】
HDU - 2095
签到题,可以直接stl容器存,也可以直接利用异或的性质进行求解。
这个题开场4分钟就被A掉,看来确实是有人对学过的知识还有印象。
代码还是不够精简啊,根本不需要数组,直接三个变量就能A掉,精简代码也是挺重要的。。
1 |
|
END:
这里面大部分是QDU去年算法协会给17级的出的题目,所以并不难,大家做成这样emmm。总之还差得远呢,好好利用寒假吧,开学后各种事又会忙起来,争取这个假期能有质的飞跃。
自己还感受到好久不打比赛后,这样一做还真有些吃力,这个东西,还是不要放下太久,不然要重新捡起来又要费好大劲。