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 ...
随机推荐
- odoo12安装指南
声明:本指南默认已安装好Python3和pycharm及postgresql,odoo12的源码包 一. 1.在pycharm创建一个新的项目 建议创建在虚拟环境中 2.在pycharm的控制台下检验 ...
- Object类的equals方法 常用API
boolean equals (Object obj)(return this==obj): p1.equals(p2): 基本数据类型比较的是值 引用数据类型:默认比较的是两个对象的地址 ...
- uva11624 Fire! (bfs预处理)
题目链接:https://vjudge.net/problem/UVA-11624 题意:给一个1000×1000的矩阵,有几个着火点和Joe,着火点和Joe每个单位时间均移动一个单位,求Joe逃出的 ...
- SQL SERVER修改字段为首字母大写
--修改字段为首字母大写 -- EXEC sp_rename 'ShenBao_CaiGouFuKuan.Tid', 'Tid', @objtype = 'COLUMN'; SELECT 'EXEC ...
- python3连接oracle数据库
声明:python,cx_Oracle和instantclient的版本应一致 我这里使用的版本是python3.6 64位 ,cx_Oracle-5.3-11g.win-amd64-py3.6-2和 ...
- Django2.2连接mysql数据库出现django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None问题
在使用Django2.2开发的时候,想要使用mysql数据库,在settings.py文件中更改命令: DATABASES = { 'default': { 'ENGINE': 'django.db. ...
- python查询neo4j的数据以字典的方式返回数据
在使用python操作neo4j的时候,如果查询的数据比较多,结构比较复杂的时候,返回的数据量会比较大,而且信息比较多,并且不唯一.所以写了该方法,用于查询比较复杂的数据. def query_gra ...
- 数据的特征预处理?(归一化)&(标准化)&(缺失值)
特征处理是什么: 通过特定的统计方法(数学方法)将数据转化成为算法要求的数据 sklearn特征处理API: sklearn.preprocessing 代码示例: 文末! 归一化: 公式: ...
- Scrapy爬虫-win7下创建运行项目
开始的时候,我只安装了python3.5,安装不了scrapy库,网上搜了一下说是scrapy不支持python3.x 然后,我就又安装了python2.7 为了,默认使用2.7,我在环境变量path ...
- 关于FSM的C语言实现与详解
最近一个项目有一个需求,考量了一下决定使用状态机,实现完需求以后,不得不感慨,状态机在处理逻辑上面实现起来很有优势,也便于管理. 在这里分享一下我所修改的状态机实现.改动的地方不多,参考了<C语 ...