一、题意
A.有n个点m条边组成的有向图,要给边涂色,使得不存在一个由相同颜色组成的环,求最大颜色数。
B.给三个数x,y,z求将z分配给 x和y ,并保证x >y,共有多少种分法。
C. 给 n 把刀,怪物头为 m 个,然后每把刀可以砍掉怪物 Xi 个头,如果砍完之后还有头则长出 Yi 个头,问最少砍多少次。
D.给定一个只包含0,1的字符串s,问在这个字符串当中,有多少个子串s[l-r]满足子串长度等于它所表示的十进制数。
E.给你一些坐标,要求是把所有坐标都变成一样的,条件是每次移动两个位置免费,每次移动一个位置需要花费1硬币,问最少花费的硬币数是多少
F.输入m,n两个数,求出1-m中能整除n的数的尾数之和.
G.从后往前不断更新最小的数,求前面有几个数比当前最小数要大。
H.给n个数,每次可以把其中一个数字位运算右移一位(即整除以二),问要至少操作几次才能让这n个数中有至少k个相等。
二、非水题AC过程
B.先判断x和z加起来的和与y的大小,如果大于y的话,那么有两种情况。第一种x本来就远大于y,z加给谁没什么影响,这种情况有z+1种,第二种情况则需要列数学公式最后化简得出有(x+z-y+1)/2种情况,因为两种情况刚好纯在大小关系于是用一个min来判断。
C.这道题也有两种情况,不过大体的思路是先看能不能用砍头最多的刀一刀砍死,不能的话就然后对怪物用让它损失最大的那把刀,然后继续判断能不能一刀砍死。这道题很容易超时,能不用循环的就别用循环,中途超时太难受了。
E.确定一件事,所有的奇数都可以免费变成1,所有的偶数都可以免费变成2,然后判断是奇数多还是偶数多,谁少输出谁。
G.首先输入数据,从后往前慢慢遍历,先把最后一个设为min,然后遍历一个更新一次min,遇到大的就计数,最后输出就行,细心点注意题目数据范围。
三、补题情况
A.H、较难题目,补题的时候进行了一下了解尝试,后来放弃了。。。
D.又是艰难的字符串题目,代码看起来并不是太难,但写的时候总是想不到。
F.这道题还是找规律的题目,但我好像直接把这个略了,当时没找到规律。补题的时候才发现规律那么暴力,有点可惜。
四、感悟
今天练的题也比较水,但不知道为什么,今天数据范围总是犯错,可能数据比较大了用循环就特容易超时,结果还不一定对,而且数组给小了也会超时,哎。