2017 CCPC 秦皇岛站

来源:互联网 发布:网络唤醒bios设置 编辑:程序博客网 时间:2024/04/28 02:15

耗时两天的CCPC青岛站,在一阵吐槽声中,结束了。而我迎来了我acm生涯中的第一次打铁(其实也是第一次参加icpc ccpc)

四题打铁
感觉自己好菜。。。( 给自己一口毒奶 )逃~~~

手机码字。。代码只能等重现赛的时候了。


A:Balloon Robot

传送门


C:Crusaders,Quest

Description

给一个长度为9,包括3个g ,3个a,3个o; 消去三个相同相连的得一分,问最多的几分。

Solution

比赛的时候很慌张,最后直接暴力判断每一种情况。对于每一种可能得的排列,共有6种消法。gao goa ago aog oag oga 求出6种情况得分的最大值。

E: String of CCPC

Description

给一个长度为n的串,求其中CCPC串的个数,可以添加字符,添加的第i个字符花费i-1.答案是CCPC的个数减去花费。

Solution

首先添加一个字符最多使原串增加一个CCPC,所以只要找出是否添加一个字符能是原串的CCPC的个数增加一个。
正常的做法是从头扫一边字符串,判断是否有CCC,CCP,CPC其中CCC要考虑是否破坏原串。
比赛的时候,蜜汁TLE。
我的做法是比较含CCPC 的个数和 含CPC,CCP的个数是否相等。在比较CCCPC和CCC的个数是否相等。用kmp做。十分僵硬,,。。

M: Safest Buildings

Description

吃鸡。。 这很强
给你一个n个建筑坐标和大圆半径和小圆半径。大圆是现在的安全区半径,小圆是即将刷新的安全区半径,问哪些建筑最安全。

Solution

可以想到的是距离中心越近的点越安全。但实际上如果小圆半径很大就会有一些点必然被选到。距离圆心距离L + R <= 2*r 则概率相等,存在结构体里根据倒圆心距离sort一下,看看是否有概率为1的点输出。


更新 11/2/2017
代码


L: One-Dimensional

Description

给一个长度为n的串,和给定位置m,求从m出发到两边修改最少的次数。。

Solution

其实就是m左边出去第一位L的个数,和右边除去最后一位L的个数。遍历一边就好了。