codeforces round 207 解题报告

ROUND 207 解题报告

A    Group of Students

关键字:模拟

思路:

    暴力一遍即可。

时间复杂度:O(n)

空间复杂度:O(n)


B    Flag Day

关键字:构造

思路:

    很容易发现,能引起方案出现问题的只有出席两次跳舞的人。那么我们着重考虑这些人。从第一组人物开始分配。分配每组时,首先考虑是否有人已经被分配过颜色,以及除了这些颜色外还有哪些颜色。之后进行随机分配。然后考虑这些被分配的人,是否是出席两次舞蹈的人,如果是,递归分配第二次出现的那个组。

时间复杂度:O(n)

空间复杂度:O(n)


C    Knight Tournament

关键字:

    线段树

思路:

    将整个数据读入后逆序处理。利用线段树进行区间赋值。查询时,碰到的第一个值非0节点即为答案。

时间复杂度:O(nlogn)

空间复杂度:O(nlogn)


D    Xenia and Hamming

关键字:数论

思路:

    因为长度一样,所以总长度一定为s1s2长度的lcm的倍数。我们很容易知道,s1串的第i位需要与s2串的第gcd(s1,s2)+i,2*gcd(s1,s2)+i....位比较。那么我们建立一个数组,存储s2串中%gcd(s1,s2)位不同字符串的个数。之后进行计算即可。

时间复杂度:O(n)

空间复杂度:O(n)


E    Compartments

关键字:分类讨论

思路:

    比较麻烦的一道题。首先我们考虑输出-1的情况。不难证明,如果人的总数是125时,一定无解。其他情况一定存在解。下来主要考虑人数为1的车厢个数a[1]和人数为2的车厢个数a[2](1)a[1]<a[2]。此时最好的方法是:先将人数为1的车厢中的人,移到不同的人数为2的车厢中去。之后,将3个人数为2的车厢重组。然后尝试从人数为4的车厢中抽出一人到人数为2的车厢中去。最后如果还有人数为2的车厢,将其分配至人数为3的车厢中去。(2)a[1]<=a[2],情况类似,不再详细介绍。

时间复杂度:O(1)

空间复杂度:O(1) 


F    Bags and Coins

关键字:动态规划 构造

思路:

    首先考虑最外层的几个包裹。不难证明,这些包裹中必然包括ai最大的其中一个。这些包裹的ai之和等于s。这里用dp可以得到答案。如果不存在这样一种方案,那么输出-1.若存在这样一种方案,我们不难构造出一种方案满足条件。即将所有非最外层的包裹按大小依次排序,一层套一层,最后到套在最大的那个ai下。这样就得到了满足题意的解。

时间复杂度:O(n)

空间复杂度:O(n) 


G    Xenia and String Problem

关键字:后缀数组

思路

    暂时不会。。。

时间复杂度:O(nlogn)

空间复杂度:O(n) 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值