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 题意: 给 ...
随机推荐
- 【转】mac上安装gradle
http://www.douban.com/note/311599602/ 首先,先download最新版本的gradle,网址如下:http://www.gradle.org/get-started ...
- Mybatis入门篇之结果映射,你射准了吗?
目录 前言 什么是结果映射? 如何映射? 别名映射 驼峰映射 配置文件开启驼峰映射 配置类中开启驼峰映射 resultMap映射 总结 高级结果映射 关联(association) 例子 关联的嵌套 ...
- 故障:fork failed:Resource Temporarily Unavailable解决方案
故障:fork failed:Resource Temporarily Unavailable解决方案 AIX在一次crontab bkapp.txt导入N多定时任务时候,该用户无法执行任何命令,再s ...
- 当年偶然发现的 Java Bug(JDK 9及之前仍未修复)
背景 15年在中信银行做持续集成时,由于当时的项目是基于三方采购的 Java 配置开发平台做的,平台自己基于 Ant 插件实现了增量和热部署. 其中有几个项目在持续集成部署时,经常发现 Linux 平 ...
- [BUUOJ记录] [BJDCTF2020]Easy MD5
各种关于md5的Bypass操作,都是基本操作,考察数组绕过.弱类型比较绕过以及md5($password,true) ByPass 1.利用md5($password,true)实现SQL注入 F1 ...
- 【译】Object Storage on CRAQ 上篇
摘要 大型存储系统通常会在许多可能出故障的组件上进行数据复制和数据分区,从而保证可靠性和可扩展性.但是许多商业部署系统为了实现更高的可用性和吞吐量,牺牲了强一致性,特别是那些实时交互系统. 本论文介绍 ...
- 【Java/DateTime】用当前日期时间与确定日期时间比较,大于则执行某动作
代码: package logbackCfg; import java.text.ParseException; import java.text.SimpleDateFormat; import j ...
- 哪些方法可以绕过PowerShell Execution Policy?
哪些方法可以绕过PowerShell Execution Policy? 转: https://blog.csdn.net/qq_27446553/article/details/50577296
- ICARUS主题美化
Icarus用户指南 - 主题美化 Icarus的主题样式编码文件为themes/icarus/layout/layout.jsx. 此文件定义了站点全局的样式设置.本文详细介绍了本主题针对文章分类的 ...
- js中数组扁平化处理