AGC040
AGC040
A
模拟。
B
因为顺序无关紧要,所以可以先把区间按右端点排序方便处理。
设第一个区间在\(A\)集合,考虑枚举第一个在\(B\)集合的区间\(i\),这样两个集合的右端点\(\min\)就确定了。再考虑\(i\)后面的区间中左端点最大的那个,假设它在\(A\)集合,那么把\(i\)后面的区间都放进\(A\)集合一定不劣,\(B\)集合同理。也就是说,最优方案一定形如:要么一段前缀在\(A\)集合一段后缀在\(B\)集合,要么\(B\)集合只有一个区间。
C
首先可以黑白染色,偶数位置的\(A\)变成\(B\),\(B\)变成\(A\)。问题变成不能删\(AA\)和\(BB\)。
然后我的想法是考虑删除所有\(C\),要求存在一种删除方案使得剩下的字符串中\(A,B\)个数相等,求合法字符串数,不太会做。然后我就打开了题解,发现我是个sb,其实只要字符串中\(A,B\)的个数分别\(\le \frac{n}{2}\)就行了。
D
对于一种排列,显然满足Ringo从\(p\)开始时Snuke能获胜的\(p\)是一段前缀。
画一条折线,\(x\)是距离,\(y\)是用时。那么将Ringo的折线垂直移动,使得它与Snuke的折线恰好有一个交点时,它与\(x\)轴的交点横坐标就是最大的\(p\)。
枚举\((p,0)\)处对应的是哪一条线段,设为\(k\)。考虑这么一条折线\(C\):
从\((p,0)\)出发,沿着Ringo的折线走到两条折线的交点处,再沿着Snuke的折线走到\((n,s)\),其中\(s=\sum a_i\)。
容易发现每一种方案一定可以找出这么一条折线,且这么一条折线(从某个\((x,0)\)开始,先以斜率\(b_i\)向右上走,在某个点后变为以斜率\(a_i\)向右上走,走到\((n,s)\))能对应一种方案。\(p\)要尽量大,也就是说\(C\)要包含尽量少的线段,所以\(C\)上升的越快越好。
考虑一条放在\(k\)右边的线段\(i\)。\(i\)最多使\(C\)上升\(\max(a_i,b_i)\),而这个上界是可以达到的,只要把\(a_i < b_i\)的放在两折线交点前面,其他的放在交点后面即可。那么找出除\(k\)外\(\max(a_i,b_i)\)最大的若干个线段,假设有\(q\)个,要求\(b_k\)加这些线段的\(\max(a_i,b_i)\)之和\(\ge s\),且\(q\)尽量小。那么对于这个\(k\),\(C\)中包含线段数的整数部分就是\(q\),小数部分特殊计算一下即可。
E
先考虑简化版本,如果只有1操作怎么做?显然答案是\(a_i > a_{i+1}\)的个数。
再考虑原问题,考虑最终序列是怎样形成的。可以发现每一个位置的数都是若干次1操作和若干次2操作加出来的。那么每一个\(A\)可以拆成\(x+y\),\(x\)表示1操作对这个位置的贡献,\(y\)同理。那么问题就变成了,要决定序列\(x,y\),满足\(x_i+y_i=A_i\),\(x_i > x_{i+1}\)有\(1\)的代价,\(y_i < y_{i+1}\)有1的代价,求代价最小值。
朴素的想法就是DP,\(f_{i,j}\)表示前\(i\)个数,\(x_i=j\)的最小代价。然后我又sb了,打开题解,显然\(f_{i,0} \le f_{i,A_i}+2\),维护转折点就行了。
F
可以规定两点距离\(\ge 2\)时才能对较左边的点用\(1\)操作,就变成了操作序列计数。
记\((x,d)\)表示较右边的点在\(x\)处,两点距离为\(d\)。那么操作有三种:
1.\(++x,++d\)。
2.当\(d \ge 2\)时,\(--d\)。
3.设置\(d=0\)。
1操作一定执行\(b\)次,考虑枚举2操作的次数\(k\)。注意到一个合法的操作序列(合法定义为每次执行2操作时\(d \ge 2\))删掉所有3操作后一定也合法,那么可以考虑先排列所有\(1,2\)操作,再往里面插入\(n-b-k\)个\(3\)操作。考虑\(3\)操作插在哪些位置可以使序列合法且最终两点分别在\(a,b\)处。有几点限制(以下\(d'\)指忽略所有3操作得到的\(d\)):
1.结束后\(d=b-a\)。这说明最后一次3操作之前一定满足\(d'=a-k\)。
2.任意时刻\(d \ge 2\)。这说明如果要在某个\(d'=k\)的位置后面插入一个\(3\)操作,那么这个位置后面不能出现\(d' \le k\)的位置。
也就是说,可以在最后一次\(d'=0,1,2,\dots,a-k\)的每个位置后面插入任意多个3操作,要求\(d'=a-k\)后面至少插入一个3操作。注意到这与1,2操作具体是怎样排列的无关,所以排列1,2操作和插入3操作是独立的。排列1,2操作的方案数就是一个基础的格路问题,插入3操作的方案数就是一个隔板法。
AGC040的更多相关文章
- AGC040 Task C. Neither AB Nor BA
Observations 对一个长为 $2N$ 的序列重复下述操作:取走两个相邻且不同的元素.最后能把序列取空的充要条件是序列中不存在出现超过 $N$ 次的元素. 证明:必要性,取 $N$ 次最多能取 ...
- 【做题记录】AtCoder AGC做题记录
做一下AtCoder的AGC锻炼一下思维吧 目前已做题数: 75 总共题数: 239 每一场比赛后面的字母是做完的题,括号里是写完题解的题 AGC001: ABCDEF (DEF) AGC002: A ...
- HPU personal training
K - Two Contests 原题链接:https://agc040.contest.atcoder.jp/tasks/agc040_b?lang=en 题目大意: 给一个区间集合,将这些区间分为 ...
- K - Two Contests
题目连接:https://atcoder.jp/contests/agc040/tasks/agc040_b 大佬题解:https://blog.csdn.net/duanghaha/article/ ...
随机推荐
- 一个有关Golang Deferred Function 执行顺序的问题
先看一下一段关于defer的解释, 引自<Go程序设计语言> Syntactically, a defer statement is an ordinary function or met ...
- charles_01_打断点修改接口请求&返回数据
前言 测试过程中,为了模拟某场景测试,经常需要修改接口请求或者返回数据.可通过抓包工具打断点,实现模拟测试场景.常用的抓包工具charles和fiddler均可打断点mock数据.由于小编安装了cha ...
- WebServiceBinding属性
属性 类型 读 写 说明 ConformsTo Wsiprofiles x x 绑定需要遵守的WS-I标准 EmitConformanceClaims Boolean 如果为true,当WSD ...
- zend studio远程自动上传代码并执行
http://devzc.com/archives/382/zend_studio_sftp_upload_and_exec/ 最近要做服务的接口测试,公司原有的ide测试工具对于数组的参数化很弱.由 ...
- AtCoder Beginner Contest 133 B - Good Distance
地址:https://atcoder.jp/contests/abc133/tasks/abc133_b 核心问题:判断一个浮点数开方是否为整数 ; double ans1=sqrt(ans); if ...
- HDU-2571 命运(搜索,我才不是为了插图呢!哼!)
看到这题其实感觉就是搜索题,广搜的话看讨论区里已经有人内存超限了,所以我选择了深搜,有两种思路,第一种是从起点出发,依次更新每一个格子的最大值,这样dp[n][m]就是最后的结果了,第二种是从起点试探 ...
- (四:NIO系列) Java NIO Selector
出处:Java NIO Selector 1.1. Selector入门 1.1.1. Selector的和Channel的关系 Java NIO的核心组件包括: (1)Channel(通道) (2) ...
- Spring事务管理之几种方式实现事务(转)
一:事务认识 大家所了解的事务Transaction,它是一些列严密操作动作,要么都操作完成,要么都回滚撤销.Spring事务管理基于底层数据库本身的事务处理机制.数据库事务的基础,是掌握Spring ...
- JS相比TS的缺点(或TS的优点)
JS只有在运行时,才会抛出错误, JS里有任何的拼写错误 都不会提示错误 JS运行时报的错,指向也未必是错误的源头,也就是说:A类里因为书写代码有误,会造成运行时其他的类报错如B JS无法做到不同pa ...
- html5实现拖拽上传
<html><head> <meta http-equiv="Content-Type" content="text/html; chars ...