用hexo搭了博客,以后就在这里写题解和随笔了。
$$
mathjax测试:C_i=\sum_{j×k=i}A_j*B_k
$$
复健开了一场CF div2,感觉非常不好啊。。
比赛链接是http://codeforces.com/contest/1011
A:n个字符取k个,不能取字典序相邻的,也不能取相同的。就这样取,问最小的ascii-‘a’+1的和是多少。
贪心,给字符排个序,取第一个,然后后面的取最小的。
1 |
|
B:n个人吃东西,一共m个东西,每个东西都有一类。每个人每天只能吃一个同一类东西,问怎么分配这m个东西,让这n个人吃得时间最久。
m很小,直接遍历天数day,然后贪心地check就ok了(数据量大了套个二分就行)。
1 |
|
C:n个星球,一个人坐重量为m的飞船从1出发到n,需要走1->2->..->n->1这样的路径,从每个点起飞要消耗ai的燃油,在每个点降落要消耗bi的燃油,燃油只能从1上带,问这人要带多少燃油才能完成这个路径。
二分燃油的量,判断是否满足,或从1->n->n-1->…1逆推,上一次的燃油量是x*m/(x-1),x为起飞or降落的消耗。
1 |
|
D:猜一个1到m的数字x,可以询问最多60次。每次回答有可能是假的,假的情况那么会输出真答案判别的相反数(大于的时候返回1,如果假的情况就返回-1,小于同理),回答的真假情况序列p的长为n,回答按照这个序列循环返回结果。求这个数字x。
可以用数字1去试探n次(当然答案是1的时候可以直接结束程序了),把n次询问的真假情况预处理出来记下,之后就可以愉快地二分x,根据上面预处理出来的真假情况修改返回结果了。
1 |
|
E:n个数,每个数可以取任意次,相加后对k取模。求模的结果的个数。
统计k和每个数的gcd,答案就是k/gcd,依次取0,k/gcd,2k/gcd…就行了。过阵子尝试证明一下,相关概念有:有限域,生成元,生成多项式,循环群,裴蜀定理。
1 |
|