已经刷不了几天了。。。

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}\)条边,由此我们可以推出,如果边数足够,有:

\[\frac{n-x}{2}+x-1\leqslant \frac{n}{2}
\]

解得

\[x\leqslant 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][j]=f[i-1][j]+f[i][j-1]\times (n-j+1)\times \binom{n-i-(j-1)\times (k-1)-1}{k-2}
\]

边界\(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刷题记的更多相关文章

  1. PE刷题记

    PE 中文翻译 最喜欢做这种很有意思的数学题了虽然数学很垃圾 但是这个网站的提交方式好鬼畜啊qwq 1.Multiples of 3 and 5 直接枚举 2.Even Fibonacci numbe ...

  2. ctfshow之Web入门刷题记(从89开始,持续更新)

    0x01Web89-99PHP特性payload Web89 include("flag.php"); highlight_file(__FILE__); if(isset($_G ...

  3. AGC007题解

    发现自己思维能力又跟不上了...做题有点吃力...所以回归AGC刷题计划... AGC040506都写了一部分题然后懒得补全了,所以从07开始做吧.大概是从C开始. C 这也太人类智慧了吧... 我先 ...

  4. Flask+pin

    Flask+SSTI的新火花 记一次buu刷题记和回顾祥云杯被虐出屎的经历.题目:[GYCTF2020]FlaskApp 一 题目初见 朴实无华的页面,一个base64的小程序页面 看到有提示. 我就 ...

  5. 谷歌pixel手机解BL锁、刷机、破解电信(史上最详细的帖子)

    本文根据网上已有内容进行整理,对每一个步骤都进行了实践,运气爆棚,几乎没有出现什么重大错误,小错误也进行了很好地解决.因此,十分感激那些为折腾google pixel的IT爱好者,为我提供了无穷的帮助 ...

  6. 8.20~8.25刷散题记录 By cellur925

    记录一些散题 / 价值不大但还是想记下来的题目 / 没正八经写博客的题目 8.24 Luogu P1508 沙雕题数字三角形的二维升级版,但是注意阅读理解,李大水牛从桌子最后一行下侧开始吃,而本题是自 ...

  7. leetcode 刷题记录(java)-持续更新

    最新更新时间 11:22:29 8. String to Integer (atoi) public static int myAtoi(String str) { // 1字符串非空判断 " ...

  8. AtCoder刷题记录

    构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...

  9. WPF样式之画刷结合样式

    第一种画刷,渐变画刷GradientBrush (拿线性渐变画刷LinearGradientBrush(其实它涵盖在GradientBrush画刷内.现在拿他来说事.),还有一个圆心渐变画刷Radia ...

随机推荐

  1. webpack4实例

    webpack现在已经成为前端很多的打包器.网上关于webpack的相关文章也是很多,本文主要是根据自己的学习步骤来记录的,进行简单的webpack实例的讲解. 注意:一定要确定安装的node.js的 ...

  2. 【转】转载一篇优质的讲解epoll模型的文章

    从事服务端开发,少不了要接触网络编程.Epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,Nginx.Redis.Skynet 和大部分游戏服务器都使用到这一多路复用技术. Epoll ...

  3. [CF1010D]Mars Over_位运算性质

    Mars rover 题目链接:http://codeforces.com/problemset/problem/1010/D 数据范围:略. 题解: 因为每次只改一个,改完之后改回去,这个性质很重要 ...

  4. IDEA Java 源发行版 8 需要目标发行版 1.8

     [问题记录] maven新建的一个项目,需要到一些java8的一些特性,但是在编译的时候就报错了,提示这样的错误. 我是在用二进制字面量出现的这个问题,二进制自变量是Java7的特性, 你可以这样写 ...

  5. (六)springMvc 和 mybatis 整合

    目录 文章目录 @[toc] 整合 dao 层 整合 springMvc #整合思路 整合是将spring 看做是一个大的容器,将其他东西整合进来,是以 spring 为大环境的: 整合 spring ...

  6. dp 状态压缩

    之前我们在讨论的dp形式当中, 大多数是对整数的动态规划, 然而对于集合而言呢 ? 我们使用 DFS 吗, 看起来也可以, 但是加上dp记忆 数组的 动态规划效率更高: 那么进一步讨论, 我们如何表示 ...

  7. 串的模式匹配,KMP算法

    串的模式匹配 现考虑一个常用操作,在字符串s(我们称为主串)中的第pos开始处往后查找,看在主串s中有没有和子串p相匹配的的,如果有,则返回字串p第一次出现的位置. 暴力求解 int Index(ch ...

  8. dfs/bfs专项训练

    A.棋盘问题——poj1321 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放 ...

  9. PHP和js判断访问设备是否是微信浏览器实例

    PHP和js判断访问设备是否是微信浏览器实例,代码非常精简,适合新手学习. js判断是否是微信浏览器: 1 function is_weixin() { 2 var ua = window.navig ...

  10. day04_XPATH提取数据

    1.XML简介 1.1.定义 ​ 可扩展标记语言(EXtensible Markup Language) 1.2.特点 一种标记语言,很类似 HTML XML 的标签需要我们自行定义 被设计为具有自我 ...