Codeforces Global Round 11 A~D题解
A.Avoiding Zero
题目链接:https://codeforces.ml/contest/1427
题目大意:给定一个数组a1,a2...,an,要求找出一个a重排后的数组b1,b2,...,bn使得对于任意k,b1+b2+...+bk!=0
题解:
令sum=a1+a2+...+an,
若sum=0,则显然无解
若sum>0,则不妨将>0的放在最前面,其次放<0,=0的不放在第一位即可
若sum<0,则不妨将<0的放在最前面,其次放>0,=0的不放在第一位即可
这样做可以确保b数组前缀和始终与sum正负性相同。
B. Chess Cheater
题目链接:https://codeforces.ml/contest/1427/problem/B
题目大意:给定一个长度为n的仅由'W'和'L'组成的字符串和一个整数k,最多可以更改k个'W'为'L'或者'L'为'W'。若一个'W'前面一个字符也是'W',则得2分,否则得1分(第一个字符为'W'时得1分),输出最大得分
题解:
这题是一道贪心题,首先将'W'改为'L'肯定不会更优,只会更劣,其次WLW改为WWW得分+3,WLLW改为WWLW得分+2,WLLLW改为WLWLW得分+1
那么不难发现将非连续的W块改成连续的W块每次可以+2分/3分,当且仅当两个非连续W块中间只有一个L时将其改成W后得分+3,因此得到我们的贪心思路:优先修改长度最小的连续L块
若存在至少一个W,那么每次答案至少+2,且+3的次数可以最大化。
1.若全是L则特判即可。
2.存在至少一个W时:
要注意的是对于左端点是1或者右端点是n的L块比较特殊,可以证明无论长度多小放在最后修改都会更优,为了方便后续计算答案不妨强制设置这两个块的大小为k+1。
最终答案:初始化ans为刚开始的答案,L块从小到大排序后依次处理,若当前L块大小x<=k,则k-=x,ans+=2*x+1,即将该L块全部变为W块的答案贡献值
若当前L块大小>k,则break,然后ans+=2*k即可。
C. The Hard Work of Paparazzi
题目链接:https://codeforces.ml/contest/1427/problem/C
题目大意:还是看原题题目吧qwq
题解:
令dp[i]表示ti时刻在(xi,yi)点时的最大答案,则dp[i]=max(dp[j])+1(其中t[j]+|x[i]-x[j]|+|y[i]-y[j]|<=t[i])
因为1≤xi,yi≤r≤500,则|x[i]-x[j]|+|y[i]-y[j]|<=(500-1)*2=998,且t是严格递增数列,那么最坏情况下有t[i-998]=t[i]-998+|x[i]-x[j]|+|y[i]-y[j]|<=t[i],所以不妨令DP=max(dp[j])+1(t[j]+998<=t[i])
则复杂度为O(n*r),时限2s可过。
D. Unshuffling a Deck
题目链接:https://codeforces.ml/contest/1427/problem/D
题目大意:给定一个1~n的排列,让你通过至多n次题目所给的重排方式将其排序。
题解:
套路题,这种操作限制次数题一般说来看操作限制的次数就能得到一个大致做法了,而且一般来说都会卡满这个操作限制次数
这题我考试时得想法是每次用两个操作使得第i小和第i大在对应位置。
假设第i小在当前排列位置为p,第i大为q
1.若p<q,不妨设原排列为A B p C q D E ,A为1~i-1,E为n-i+2~n
第一次选A Bp C qD E,则变为E qD C Bp A
第二次选E q D C B p A,则变为A p B C D q E
2.若p>q,不妨设原排列为A B q C p D E,A为1~i-1,E为n-i+2~n
第一次选A Bq C pD E,则变为E pD C Bq A
第二次选E pDCBq A,则变为A p D C B q E
最大操作次数为(n/2)*2次
PS:这题因为至少选择两个,所以要特判一下,就这里卡了我半个多小时,错了两次...
Codeforces Global Round 11 A~D题解的更多相关文章
- Codeforces Global Round 11 个人题解(B题)
Codeforces Global Round 11 1427A. Avoiding Zero 题目链接:click here 待补 1427B. Chess Cheater 题目链接:click h ...
- Codeforces Global Round 11【ABCD】
比赛链接:https://codeforces.com/contest/1427 A. Avoiding Zero 题意 将 \(n\) 个数重新排列使得不存在为 \(0\) 的前缀和. 题解 计算正 ...
- Codeforces Global Round 11 D. Unshuffling a Deck(构造/相邻逆序对)
题目链接:https://codeforces.com/contest/1427/problem/D 题意 给出一个大小为 \(n\) 的排列,每次操作可以将 \(n\) 个数分为 \(1 \sim ...
- Codeforces Global Round 11 C. The Hard Work of Paparazzi(dp/最长上升子序列)
题目链接:https://codeforces.com/contest/1427/problem/C 题意 \(r\) 行与 \(r\) 列相交形成了 \(r \times r\) 个点,初始时刻记者 ...
- Codeforces Global Round 11 B. Chess Cheater(贪心)
题目链接:https://codeforces.com/contest/1427/problem/B 题意 给出一个长为 \(n\) 由 W, L 组成的字符串,如果一个 W 左侧为 W,则它提供 2 ...
- Codeforces Global Round 11 A. Avoiding Zero(前缀和)
题目链接:https://codeforces.com/contest/1427/problem/A 题意 将 \(n\) 个数重新排列使得不存在为 \(0\) 的前缀和. 题解 计算正.负前缀和,如 ...
- Codeforces Global Round 11 C. The Hard Work of Paparazzi (DP)
题意:有\(r\)X\(r\)的网格图,有\(n\)位名人,会在\(t_i\)时出现在\((x_i,y_i)\),如果过了\(t_i\)名人就会消失,从某一点走到另外一点需要花费的时间是它们之间的曼哈 ...
- Codeforces Global Round 11 B. Chess Cheater (贪心,结构体排序)
题意:你和朋友进行了\(n\)个回合的棋艺切磋,没有平局,每次要么输要么赢,每次赢可以得一分,假如前一局也赢了,那么可以得两分,结果已成定局,但是你确可以作弊,最多修改\(k\)个回合的结果,问你作弊 ...
- Codeforces Global Round 2 题解
Codeforces Global Round 2 题目链接:https://codeforces.com/contest/1119 A. Ilya and a Colorful Walk 题意: 给 ...
随机推荐
- 深入了解Netty【八】TCP拆包、粘包和解决方案
1.TCP协议传输过程 TCP协议是面向流的协议,是流式的,没有业务上的分段,只会根据当前套接字缓冲区的情况进行拆包或者粘包: 发送端的字节流都会先传入缓冲区,再通过网络传入到接收端的缓冲区中,最终由 ...
- 【Azure DevOps系列】Azure DevOps构建并发布Nuget程序包
在Azure DevOps中,管道可以用来构建解决方案,O(∩_∩)O哈哈~快万能了,本章主要介绍如何创建Nuget包并且将其发布到Nuget服务器的过程. 前面我创建了一个非常简单的类库,这边我不做 ...
- Cypress系列(44)- 命令行运行 Cypress
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 前言 前面也介绍过 Cypress 命令 ...
- Tomcat9w.exe无法启动为started
问题: startup.bat可以正常启动,http://localhost:8080/ 可以正常访问.但是Tomcat9w.exe无法启动为started,一直为Stopped. 解决方案: 如下图 ...
- 解决Maven的JDK版本问题
在pom文件中添加以下代码 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins&l ...
- SpringBoot打Jar包在命令行运行
首先写一个测试文件 然后点击IDEA右侧的maven,然后选择package,之后点击上面运行或者直接双击即可, 等下方控制台构建成功即可: 然后找到项目目录下target下即可看到打的jar包 然后 ...
- 关于给Tomcat设置maxPostSize的问题
一.为什么要设置maxPostSize tomcat容器对传输数据的大小有限制,如果上传了超过此值的文件,就会报错,使得程序不能正常使用. 二.设置方法 找到tomcat目录下的/conf/serve ...
- Linux:less and Aix:more
在运维工作中,经常要查询应用日志,有Linux和Aix系统,个人感觉,Linux查询日志用less命令比较方便,Aix查询日志用more命令比较方便,在此总结一下两个命令的使用方法 AIX more命 ...
- 刀哥多线程自动释放池autoreleasepool
自动释放池 作用 自动释放对象的 所有 autorelease 的对象,在出了作用域之后,会被自动添加到最近创建的自动释放池中 自动释放池被销毁或者耗尽时,会向池中所有对象发送 release 消息, ...
- 一次MySQL索引失效引发的思考
最近公司做了一个千万数量级的项目,由于要求性能比较高,每一个相对慢的查询都需要优化,项目经理是一个比较有经验的开发人员,基本上遇到问题都会先自行处理:或自己分析原因或网络寻求帮助. 但是项目平稳运行一 ...