AGC刷题记
已经刷不了几天了。。。
AGC001
A-BBQ Easy
排个序就过了
B-Mysterious Light
手膜一下,你会发现魔改一下\(gcd\)就行了
C-Shorten Diameter
刚开始猜了个乱搞,但觉得是假的没敢写,最后看了题解才知道真的是那样?
先说做法,就是如果\(k\)为偶数,就枚举每一个点作为根,然后把深度大于\(\frac{k}{2}\)的都删掉;奇数的情况基本同理,就是枚举相邻的两个点,然后在两边分别删就行了
正确性感觉上是对的
D-Arrays and Palindrome
看错题了,把最后一个条件理解为\(a\)和\(b\)的\(n\)个字母两两对应相等了。。。
考虑建一张图,两点之间有连边代表这两个位置的字母相同,那么合法的图必须是联通的。
然后随便画几个情况,按照各路神仙的说法,你会发现奇数特别没前途。事实上,只要有超过两个奇数就得输出不可能,证明如下:
设\(x\)为奇数的个数,那么把\(a\)中的边连完后会形成\(\frac{n-x}{2}+x\)个联通块,最少需要\(\frac{n-x}{2}+x\)边才能把他们联通,而\(b\)中最多可以提供\(\frac{n}{2}\)条边,由此我们可以推出,如果边数足够,有:
\]
解得
\]
证毕
最后我们需要把\(b\)构造出来,考虑把奇数放到\(a\)的头尾,然后大力讨论一下怎么连边就行了
注意不能输出\(0\)
E-BBQ Hard
考虑那个二项式系数的组合意义:每次只能向上或向右走一格,从\((-A_i,-B_i)\)走到\((A_j,B_j)\)的方案数。然后就是个普及组\(dp\)了
最后统计时要减去自己到自己的贡献然后除以\(2\)
P.S.这个转化似乎挺常用的
F-Wide Swap
第一步的转化没有想到怎么办啊
考虑搞一个序列\(q\),\(q[p[i]]=i\),那么问题等价于使\(q\)的字典序最小,每次操作可以交换\(q\)中相邻的且差值大于等于\(k\)的两个元素
发现无论怎么交换,差值小于\(k\)的两个元素的先后顺序是不会变的,而且先后关系正确的序列一定合法。这样提示我们建个图并在其中连有向边代表先后关系,然后就变成一个拓扑排序的题了
但是这样建图的复杂度是\(O(nk)\)的,显然有一些边是冗余的,我们可以拿线段树优化一下,这样边的数量就变成\(O(n)\)级别的了
最后只要用小根堆搞一个字典序最小的拓扑序就行了
代码不长。。。
P.S.对于排列,建立权值到位置的双射似乎挺常用的
AGC002
A-Range Product
不用说了
B-Box and Ball
模拟就可以了
C-Knot Puzzle
倒着考虑,就变成一个很简单的模型了
D-Stamp Rally
注意看题,是从两个点分别出发,不是从\(x\)到\(y\)
问题等价于最早在什么时候两个点所在联通块并集的大小大于等于\(z\)
首先想到二分答案:每次二分一条边,然后暴力重构并查集。但是这样的复杂度是\(O(qmlog\ m)\),显然不行,考虑整体二分
但是整体二分时会有一个问题,就是重构并查集的代价太大了,同时发现如果把整体二分改成\(BFS\)就可以只重构\(log\ m\)次了,这样总复杂度为\(O((m+q)log\ mlog\ n)\),可以\(AC\)此题
E-Candy Piles
好神奇的转化
考虑把每一堆看成一个宽\(1\)长\(a_i\)的矩形,并把它们左对齐、从长到短、自底向上垒成一摞。
随便画几个简单的例子,发现问题可以转化为从左下角出发,每次可以向上移或向右移一格,移出边界者输
然后我们找找规律,为了方便,令\(0\)为先手必败,\(1\)为先手必胜
1010
010110
101101
0110110
......
发现第\(i\)行是由第\(i-1\)行左移\(1\)位并加上\(a[i]-a[i-1]+1\)个数构成的
于是我们可以排个序并从前到后扫一遍并维护一下上一行最后一个位置的值是什么,直到哪一行的某一个位置左移若干次后正好为最后一行的第一位,输出这个位置的值就行了
代码抄的题解的\(QwQ\)
F-Leftmost Ball
据题解说,有一个显然的规律:对于一个合法的序列,任何一个前缀中白球的数量大于等于其他颜色的球的种类数
然后我们来设计一个\(O(n^2)\)的\(dp\)。设\(f[i][j]\)表示已经放了\(i\)个白球和\(j\)种颜色的方案数,转移时考虑从左往右第一个空位放什么,可以得到如下的转移方程:
\]
边界\(f[i][0]=1\),同时\(k=1\)时也要直接输出\(1\)
至于为什么要考虑空位放什么,有两个原因
1.可以保证序列是合法的
2.可以不算重
AGC003
A-
这个不用说了吧
B-
简单的贪心
C-
相当于是有两种操作,要么交换相邻的两个,要么交换隔着的两个,操作一最少要用多少次
发现操作二可以任意交换奇数位置上的值或偶数位置上的值,而操作一可以交换奇数和偶数位置,所以我们统计一下应该在奇数位置上的值缺了几个就可以了
D-Anticube
好神仙的数学题
E-Sequential operations on Sequence
思维题肝不动啊
经观察会发现若操作\(q_i\geqslant q_{i+1}\),那么\(q_i\)就没用了,所以我们可以维护一个单调栈把那些有用的操作保留
然后看一下操作之间有什么关系。因为现在的\(q_i\)严格递增,所以\(q_{i+1}\)由\(q_i\)重复若干次并加上\(q_i\)的一个前缀构成。重复若干次的话我们可以把\(q_i\)乘上一个系数,最主要的就是处理那个前缀
递归地考虑,其实前缀也是由之前的某个操作\(q_j\)重复若干次并加上它的前缀构成的。所以我们可以二分出来\(q_j\)在哪,把\(q_j\)也乘上一个系数,然后把新的前缀递归下去
可以证明复杂度为\(O(nlog^2\ n)\)
F-Fraction of Fractal
不敢做了。。。
AGC004
AGC刷题记的更多相关文章
- PE刷题记
PE 中文翻译 最喜欢做这种很有意思的数学题了虽然数学很垃圾 但是这个网站的提交方式好鬼畜啊qwq 1.Multiples of 3 and 5 直接枚举 2.Even Fibonacci numbe ...
- ctfshow之Web入门刷题记(从89开始,持续更新)
0x01Web89-99PHP特性payload Web89 include("flag.php"); highlight_file(__FILE__); if(isset($_G ...
- AGC007题解
发现自己思维能力又跟不上了...做题有点吃力...所以回归AGC刷题计划... AGC040506都写了一部分题然后懒得补全了,所以从07开始做吧.大概是从C开始. C 这也太人类智慧了吧... 我先 ...
- Flask+pin
Flask+SSTI的新火花 记一次buu刷题记和回顾祥云杯被虐出屎的经历.题目:[GYCTF2020]FlaskApp 一 题目初见 朴实无华的页面,一个base64的小程序页面 看到有提示. 我就 ...
- 谷歌pixel手机解BL锁、刷机、破解电信(史上最详细的帖子)
本文根据网上已有内容进行整理,对每一个步骤都进行了实践,运气爆棚,几乎没有出现什么重大错误,小错误也进行了很好地解决.因此,十分感激那些为折腾google pixel的IT爱好者,为我提供了无穷的帮助 ...
- 8.20~8.25刷散题记录 By cellur925
记录一些散题 / 价值不大但还是想记下来的题目 / 没正八经写博客的题目 8.24 Luogu P1508 沙雕题数字三角形的二维升级版,但是注意阅读理解,李大水牛从桌子最后一行下侧开始吃,而本题是自 ...
- leetcode 刷题记录(java)-持续更新
最新更新时间 11:22:29 8. String to Integer (atoi) public static int myAtoi(String str) { // 1字符串非空判断 " ...
- AtCoder刷题记录
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...
- WPF样式之画刷结合样式
第一种画刷,渐变画刷GradientBrush (拿线性渐变画刷LinearGradientBrush(其实它涵盖在GradientBrush画刷内.现在拿他来说事.),还有一个圆心渐变画刷Radia ...
随机推荐
- MemCache在.NET中使用Memcached.ClientLibrary详解
本文说明:memcached分布式缓存的负载均衡配置比例,数据压缩,socket的详细配置等,以及在.net中的常用方法 首先下载客户端的3个dll,ICSharpCode.SharpZipLib.d ...
- IOI 2005/bzoj 1812:riv 河流
Description 几乎整个Byteland王国都被森林和河流所覆盖.小点的河汇聚到一起,形成了稍大点的河.就这样,所有的河水都汇聚并流进了一条大河,最后这条大河流进了大海.这条大河的入海口处有一 ...
- 前端手势控制图片插件书写三(将transform变化应用在图片和canvas画布上)
注意:transform的scale为负数时,图片会垂直翻转 一.在使用transform将计算得到的变化应用到图片上后,需要考虑到我们每次计算的都是touchmove中本次的差量.在第一次移动过后. ...
- macos 更改罗技k810无线键盘的映射
在mac系统中,command键非常关键,但k810接入后, win键被映射为Command,而Alt的位置却是mac内置键盘的Command的位置. 为方便使用,可以把Win键和Alt键做一个对换. ...
- AMD全新32核线程撕裂者GeekBench跑分曝光:超2950X近一倍
AMD全新32核线程撕裂者GeekBench跑分曝光:超2950X近一倍 2019年09月01日 09:36 1109 次阅读 稿源:快科技 1 条评论 https://www.cnbeta.com/ ...
- SpringBoot 使用WebSocket打造在线聊天室
教程: https://www.jianshu.com/p/55cfc9fcb69e https://wallimn.iteye.com/blog/2425666 关于websocket基础普及见:h ...
- Spark Scala当中reduce的用法和例子
[学习笔记] reduce将RDD中元素前两个传给输入函数,产生一个新的return值,将新产生的return值与RDD中下一个元素(即第三个元素)组成两个元素,再被传给输入函数,这样递归运作,直到最 ...
- 使用pycharm开发web——django2.1.5(五)表单和通用视图
看了刘江老师教程这么多天,卧槽,我才发现他也曾跻身于行伍之间,interesting 刘老师这波讲解很到位,告诉你如何编写单例视图的时候忽然告诉你,其实不用这么麻烦,我们有通用视图,那些总是要做相似的 ...
- 【AtCoder】ARC063
ARC063 C - 一次元リバーシ / 1D Reversi 不同的颜色段数-1 #include <bits/stdc++.h> #define fi first #define se ...
- Java虚拟机内存管理小结