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题解的更多相关文章

  1. Codeforces Global Round 11 个人题解(B题)

    Codeforces Global Round 11 1427A. Avoiding Zero 题目链接:click here 待补 1427B. Chess Cheater 题目链接:click h ...

  2. Codeforces Global Round 11【ABCD】

    比赛链接:https://codeforces.com/contest/1427 A. Avoiding Zero 题意 将 \(n\) 个数重新排列使得不存在为 \(0\) 的前缀和. 题解 计算正 ...

  3. Codeforces Global Round 11 D. Unshuffling a Deck(构造/相邻逆序对)

    题目链接:https://codeforces.com/contest/1427/problem/D 题意 给出一个大小为 \(n\) 的排列,每次操作可以将 \(n\) 个数分为 \(1 \sim ...

  4. Codeforces Global Round 11 C. The Hard Work of Paparazzi(dp/最长上升子序列)

    题目链接:https://codeforces.com/contest/1427/problem/C 题意 \(r\) 行与 \(r\) 列相交形成了 \(r \times r\) 个点,初始时刻记者 ...

  5. Codeforces Global Round 11 B. Chess Cheater(贪心)

    题目链接:https://codeforces.com/contest/1427/problem/B 题意 给出一个长为 \(n\) 由 W, L 组成的字符串,如果一个 W 左侧为 W,则它提供 2 ...

  6. Codeforces Global Round 11 A. Avoiding Zero(前缀和)

    题目链接:https://codeforces.com/contest/1427/problem/A 题意 将 \(n\) 个数重新排列使得不存在为 \(0\) 的前缀和. 题解 计算正.负前缀和,如 ...

  7. Codeforces Global Round 11 C. The Hard Work of Paparazzi (DP)

    题意:有\(r\)X\(r\)的网格图,有\(n\)位名人,会在\(t_i\)时出现在\((x_i,y_i)\),如果过了\(t_i\)名人就会消失,从某一点走到另外一点需要花费的时间是它们之间的曼哈 ...

  8. Codeforces Global Round 11 B. Chess Cheater (贪心,结构体排序)

    题意:你和朋友进行了\(n\)个回合的棋艺切磋,没有平局,每次要么输要么赢,每次赢可以得一分,假如前一局也赢了,那么可以得两分,结果已成定局,但是你确可以作弊,最多修改\(k\)个回合的结果,问你作弊 ...

  9. Codeforces Global Round 2 题解

    Codeforces Global Round 2 题目链接:https://codeforces.com/contest/1119 A. Ilya and a Colorful Walk 题意: 给 ...

随机推荐

  1. iOS打电话功能的简单实现

    小功能简介 iOS中的很多小功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信等 打电话-方法3 创建一个UIWebView来加载URL,拨完后能自动回到原应用 if (_we ...

  2. python3笔记-字典

    5 1 # 创建字典 6 2 d=dict(name='lily',age=18,phone='') 7 3 print(d) 4 # {'name': 'lily', 'age': 18, 'pho ...

  3. cdq分治——bzoj2683简单题

    https://www.lydsy.com/JudgeOnline/problem.php?id=2683 知识点:1.以操作的顺序进行分治  2.cdq分治维护矩阵 3.计算比mid小的给比mid大 ...

  4. 初探nmap

    nmap 也就是Network Mapper用来扫描电脑开发的端口 主要功能: 探测主机在线情况 扫描主机开发端口和对应的大概服务命令: nmap 127.0.0.1 查看该主机开放的端口和端.端口类 ...

  5. JDK8(jdk-8u212-windows-x64) 下载 安装 及设置

    JDK8 下载页面 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 19.8.2 ...

  6. Effective Objective-C 的读书笔记

    本文主要是摘录了 <Effective Objective-C 2.0>一书中提到的编写高质量iOS 代码的几个方法. 1 熟悉Objective -C 1.1 OC 起源 OC 为C语言 ...

  7. RocketMQ的发送模式和消费模式

    前言 小伙伴们大家好啊,王子又来和大家一起闲谈MQ技术了. 通过之前文章的学习,我们已经对RocketMQ的基本架构有了初步的了解,那今天王子就和大家一起来点实际的,用代码和大家一起看看RocketM ...

  8. python之requests.session()使用

    背景:使用requests.session会话对象先登录至豆瓣网,再进入“我的豆瓣”. 首先说一下,为什么要进行会话保持的操作? requests库的session会话对象可以跨请求保持某些参数. 说 ...

  9. git注册到git管理远程仓库

    注册: ① 注册github网站:地址:https://github.com/,其中sign up 是注册,sign in是登录 (如果是用QQ邮箱的话,如果觉得收不到邮箱,可能是在垃圾箱哦) ② 之 ...

  10. hystrix源码之hystrix请求变量

    HystrixRequestContext 请求的上线文实现,内部定义了一个静态变量ThreadLocal,每个线程可以获取自己的HystrixRequestContext对象.一个请求往往由一个to ...