今天第一次在传说中的codeforces上打了一次线上赛,只A了一道题,而且最近还是太久没用C++了(数模等用python,单片机用C),对C++有点生疏了。
简单记录一下我写了的(包括没过的)几题,刚学尽量做点记录,比赛页面:Codeforces Round 950 (Div. 3)
因为都是英文题,我英语也不好,所以每题只用中文概括
A题
要举办m
场比赛,每场比赛需要A-G题各一题,且每道题只能用一次,题库里有n
题,问至少要出几道新题。
大概思路:统计题库内A-G各几题,然后不够的补上。
1 | int t; |
非常简单的题,然而我就只对了这题。
B题
有n
个数,标记第f
个(从1
开始的第f
个),然后将数组按照从大到小的顺序排序,之后移除第k
个数,如果一定被移除则输出”YES”,有可能被移除输出”MAYBE”一定不会被移除输出”NO”。
这题不知道是我理解有问题还是什么,我看样例都不对。
我的思路是:用a保存标记数的值,用c保存被标记的数的值出现的次数,如果要移除的数的值等于a,且个数为1,那就是一定被移除了。如果个数大于1就是可能被移除。否则就是一定不会被移除。
C题
一组数a,通过一系列值的修改(一次修改一个),变成了数组b,给你数组a和b和一系列修改值d,问能否通过d将a变成b。每一个修改值都需要被使用。
刚刚重新读题才发现,要按顺序应用修改值d,之前比赛的时候没有注意到。
大概思路:因为要按顺序应用,如果最后一个修改值不在b内,那就可以直接输出NO了。其他就是正常的看a和b不同的地方,能不能找到d来修改。
D题
能否从a中最多只移除一个数,使得构建的相邻最大公约数序列不下降。
大概思路:移除第i个数会改变第i-1个的最大公约数和移除原本的第i个最大公约数。也就是说如果最大公约数序列中如果有超过两处不满足不下降的数,那一定不能通过移除一个数使其不下降。