2016寒假训练4
题目链接
A CodeForces 490A Team Olympiad
题意:给出N个人,有的人擅长1有的人擅长2有的人擅长3,要求进行分成3人组,每组都有1,2,3,输出尽可能多的组的方案。
做法:暴力,答案肯定是1,2,3人数中的较小值
B CodeForces 490B Queue
题意:给定N个人,已知每个人前面的人(分奇偶),求出原本人的顺序
做法:分奇偶求出原本的顺序
C CodeForces 490C Hacking Cypher
题意:给定一个很长的数以及a,b,问是否可以把这个数切成两部分,前面一部分可以被a整除,后面一部分可以被b整除
做法:moda[i]表示前i位%a的值,modb[i]表示第i位到最后一位的数%b的值,O(N)预处理出这两个数组即可
D CodeForces 490D Chocolate
题意:有两个块巧克力,每一次可以吃掉长或者宽的一半,或者1/3,问最少多少次可以使得两块巧克力的面积相同
做法:求出原本两块巧克力的边长除去所有的2和3之后的长度,如果面积不相同,无论操作多少次都肯定不可以。如果相同,直接模拟
E CodeForces 490E Restoring Increasing Sequence
给定N个数字,有的数字有的位置不确定,要求这N个数严格递增,问是否可以求出一个满足条件的序列。
做法:贪心。如果当前处理的数字位数比上一个数字长,那么这个数字就赋值为1000…0,如果这个数字位数比上一个数字短,那么就直接输出NO。如果位数相等,就通过DFS确定最小的这个数,使得尽可能的满足要求。
F CodeForces 490F Treeland Tour
题意:求一棵树上的最长上升子序列
做法:枚举起点,做二分的LIS
G CodeForces 483A Counterexample
题意:给定L,R,要求求出3个数,使得前两个数互质,2和3两个数互质,1和3两个数不互质
做法:直接3个for
H CodeForces 483B Friends and Presents
题意:给定cnt1,cnt2,x,y,要求构造一个数列1,2,3…v,其中选出cnt1个数字不能被x整除,选出cnt2个数不能被y整除(两组数中不能有相同的)
做法:二分答案+容斥原理
I CodeForces 483C Diverse Permutation
题意:给定n和k,要求构造一个长度为N的数列,使得相邻两个数字的差的绝对值的个数为k
做法:构造
I CodeForces 483D Interesting Array
题意:给定N,M,接着给出M个区间,表示这M个区间的数字的与为Qi,问是否可以求出原本的序列,满足要求
做法:线段树。由于已知的是若干数的相与之后的结果,我们需要尽可能的存下来所有的1,那么我们对所有重复的区间求或,这样可以保留尽可能多的1。然后根据构造出来的这么一个序列,判断是否满足要求。