Atcoder 题面传送门 & 洛谷题面传送门 咦?鸽子 tzc 来补题解了?奇迹奇迹( 首先考虑什么样的排列可以得到.我们考虑 \(p\) 的逆排列 \(q\),那么每次操作的过程从逆排列的角度思考,就可视作每次在逆排列中交换两个相邻,且元素值之差 \(\ge k\) 的元素.注意到对于两个元素 \(x,y\),如果 \(|x-y|<k\),那么我们肯定永远无法交换它们,它们的相对位置顺序也永远无法改变,因为要改变它们的相对顺序必须交换它们.而一对 \(|q_i-q_j|<k,i&l…
Wide Swap Time Limit: 50 Sec  Memory Limit: 512 MB Description Input Output Sample Input 8 3 4 5 7 8 3 1 2 6 Sample Output 1 2 6 7 5 3 4 8 HINT Solution 首先,直接做难度系数较高,假设原序列为a,我们考虑设一个p,p[a_i] = i,即将题目中的权值与下标调换. 那么显然,要令a字典序最小,只要让p字典序最小即可.因为“权值小的尽量前”与“前面…
题目大意 给出一个长度为\(n\)的排列\(P\)与一个正整数\(k\). 你需要进行如下操作任意次, 使得排列\(P\)的字典序尽量小. 对于两个满足\(|i-j|>=k\) 且\(|P_i-P_j| = 1\) 的下标\(i\)与\(j\),交换\(P_i\) 与\(P_j\). 解题思路 若构造\(Q_{p_i}=i\), 即\(Q_i\)表示\(i\)在\(P\)序列中的位置, 则容易发现, 当\(Q\)的字典序最小的时候, \(P\)的字典序就达到了最小. 于是可以把原问题转换成求最小…
题目传送门:https://agc001.contest.atcoder.jp/tasks/agc001_d 题目大意: 现要求你构造两个序列\(a,b\),满足: \(a\)序列中数字总和为\(N\) \(b\)序列中数字总和为\(N\) \(a,b\)中包含的数都是正整数 满足以下两个条件的序列,所有元素必定相同 最开始的\(a_1\)个元素是回文的,之后的\(a_2\)个元素是回文的,...,之后的\(a_n\)个元素是回文的 最开始的\(b_1\)个元素是回文的,之后的\(b_2\)个元…
题目传送门:https://agc003.contest.atcoder.jp/tasks/agc003_f 题目大意: 给定一个\(H×W\)的黑白网格,保证黑格四连通且至少有一个黑格 定义分形如下:\(0\)级分形是一个\(1×1\)的黑色单元格,\(k+1\)级分形由\(k\)级分形得来.具体而言,\(k\)级分形中每个黑色单元格将会被替换为初始给定的\(H×W\)的黑白网格,每个白色单元格会被替换为\(H×W\)的全白网格 求\(k\)级分形的四连通分量数,答案对\(10^9+7\)取模…
链接:http://agc001.contest.atcoder.jp/tasks/agc001_c 题解(官方): We use the following well-known fact about trees.Let T be a tree, and let D be the diameter of the tree. • If D is even, there exists an vertex v of T such that for each vertex w inT, the dis…
Link: AGC001 传送门 A: …… #include <bits/stdc++.h> using namespace std; ; ]; int main() { scanf("%d",&n); ;i<=*n;i++) scanf("%d",&dat[i]); sort(dat+,dat+*n+); ;i<=*n;i+=) res+=dat[i]; printf("%lld",res); ; }…
题目传送门:https://agc002.contest.atcoder.jp/tasks/agc002_f 题目翻译 你有\(n*k\)个球,这些球一共有\(n\)种颜色,每种颜色有\(k\)个,然后你可以随意把它们放成一行.放好后把每个颜色最左边的球染成\(n+1\)号颜色,问这样可以搞出多少种不同的颜色序列. 题解 最近没休息好,状态不好,而且这还是我最不擅长的计数题,跪了跪了. 你们去看别人的题解吧,我也讲不清楚,这里只有丑逼代码可以看. 时间复杂度:\(O(nk)\) 空间复杂度:\(…
题目传送门:https://agc017.contest.atcoder.jp/tasks/agc017_f 题目大意: 找出\(m\)个长度为\(n\)的二进制数,定义两个二进制数的大小关系如下:若\(a<b\),则设\(a_i\)表示\(a\)的二进制下第\(i\)位(从左往右)的数,有\(a_i\leqslant b_i,i\in[1,n]\) 现需要满足每个二进制数需要小于其之后的二进制数,并且给出一些性质,满足第\(A_j\)个二进制数的第\(B_j\)位(从左往右)必须要为\(C_i…
题目传送门:https://agc011.contest.atcoder.jp/tasks/agc011_f 题目大意: 现有一条铁路,铁路分为\(1\sim n\)个区间和\(0\sim n\)个站台,区间\(i\)连接站台\(i-1\)和\(i\) 一列火车经过区间\(i\)会消耗\(A_i\),区间内的铁路是单向或者是双向的,现在你需要设计一个火车时间表,满足: 所有火车从\(0\)到\(n\)或从\(n\)到\(0\) 火车在区间中不得逗留 两列同向的火车之间的时间间隔为\(K\) 单向…
题目传送门:https://agc010.contest.atcoder.jp/tasks/agc010_f 题目大意: 给定一棵树,每个节点上有\(a_i\)个石子,某个节点上有一个棋子,两人轮流操作:从棋子所在点上移出一个石子,并将棋子移动到相邻的节点,不能操作的人为输,问哪些节点放棋子使得先手必胜? 性质题--动棋子必定移动到石子数比当前位置少的点,否则该点是个先手必败点,然后\(n^2\)搜索一下就好了-- /*program from Wolfycz*/ #include<cmath>…
题目传送门:https://agc016.contest.atcoder.jp/tasks/agc016_f 题目大意: 给定一个\(N\)点\(M\)边的DAG,\(x_i\)有边连向\(y_i\),保证\(x_i<y_i\),原图有\(2^M\)个生成子图,对于每个子图\(G'\),\(A,B\)两人正在玩一个游戏:初始时点1,2上有棋子,每次操作可以把某个棋子沿有向边移动一步,最后不能操作的人为输.问有多少个子图\(G'\)满足先手必胜 这种神题一看就不会写--首先考虑博弈,先手必胜的话当…
传送门 \(A\) 咕咕咕 const int N=505; int a[N],n,res; int main(){ scanf("%d",&n); fp(i,1,n<<1)scanf("%d",&a[i]); sort(a+1,a+1+(n<<1)); fp(i,1,n)res+=a[(i<<1)-1]; printf("%d\n",res); return 0; } \(B\) 考虑递归,记…
洛谷题面传送门 & Atcoder 题面传送门 好久前做的题了--今天偶然想起来要补个题解 首先考虑排列 \(A_i\) 要么等于 \(i\),要么等于 \(P_i\) 这个条件有什么用.我们考虑将排列 \(P_i\) 拆成一个个置换环,那么对于每一个 \(i\),根据其置换环的情况可以分出以下几类: 如果 \(i\) 所在置换环大小为 \(1\),即 \(P_i=i\),那么 \(A_i\) 别无选择,只能等于 \(i\) 如果 \(i\) 所在置换环大小不为 \(1\),那么 \(A_i\)…
洛谷题面传送门 & Atcoder 题面传送门 一道难度 Au 的 AGC F,虽然看过题解之后感觉并不复杂,但放在现场确实挺有挑战性的. 首先第一问很简单,只要每次尽量让"辗转相除"变为"辗转相减"即可,具体构造就是 \((F_k,F_{k+1})\),其中 \(F_i\) 为斐波那契数列第 \(i\) 项,\(F_0=F_1=1\),也就是说最终的答案即为最大的 \(k\) 满足 \(F_{k-1}\le X\) 且 \(F_k\le Y\)(不妨假设…
Atcoder 题面传送门 & 洛谷题面传送门 一道难度 unavailable 的 AGC F 哦 首先此题最棘手的地方显然在于此题的坐标可以为任意实数,无法放入 DP 的状态,也无法直接计算概率.我们考虑是否能将实数坐标转化为我们熟知的整数坐标.这里有一个套路,注意到每条弧的长度都是整数这个条件,考虑两个坐标 \(A,B\),显然以 \(A\) 开始的长度为 \(l\) 的弧能覆盖到 \(B\) 当且仅当 \(\lfloor B\rfloor-\lfloor A\rfloor<l\),或…
Atcoder 题面传送门 & 洛谷题面传送门 Yet another AGC F,然鹅这次就没能自己想出来了-- 首先需注意到题目中有一个条件叫做"黑格子组成的连通块是四联通的",这意味着我们将所有黑格都替换为题目中 \(H\times W\) 的标准型之后,黑格(标准型)内部是不会对连通块个数产生贡献的,产生贡献的只可能是黑格与黑格之间的边不产生连通块.如果我们记 \(G_{\text{h}}\) 两个标准型横着拼在一起得到的 \(H\times 2W\) 的图形,\(G_…
Atcoder 题面传送门 & 洛谷题面传送门 这道 Cu 的 AGC F 竟然被我自己想出来了!!!((( 首先考虑什么样的序列会被统计入答案.稍微手玩几组数据即可发现,一个颜色序列 \(c_1,c_2,\cdots,c_{nk}\) 满足条件当前仅当对于从左往右数第 \(i\) 个 \(0\) 号颜色的位置 \(p_i\),\([1,p_i-1]\) 中非零颜色的种类 \(<i\).简单证明一下,必要性:如果 \(\exist i\in[1,n]\) 满足 \([1,p_i-1]\) 中…
Atcoder 题面传送门 & 洛谷题面传送门 tsc 考试前 A 的题了,结果到现在才写这篇题解--为了 2mol 我已经一周没碰键盘了,现在 2mol 结束算是可以短暂的春天 短暂地卷一会儿 OI 了(( u1s1 写这篇题解的时候我连题都快忘了... 首先设 \(b_i=\dfrac{A_i}{\sum\limits_{j=0}^{2^n-1}A_j}\),其次碰到这种期望类的题目我们考虑套路地设 \(p_i\) 表示异或得到 \(i\) 的概率,那么有 \(p_i=\sum\limits…
Atcoder 题面传送门 & 洛谷题面传送门 首先我们考虑设 \(dp_{i,j}\) 表示对于一个 \(i\times j\) 的网格,其每行都至少有一个黑格的合法的三元组 \((A,B,C)\) 的个数,那么对于原来的 \(n\times m\) 的网格,如果其存在黑格的行的集合不同,那么三元组 \((A,B,C)\) 肯定不同,因此我们可以直接枚举有多少行存在黑格来计算答案,即 \(ans=\sum\limits_{i=0}^n\dbinom{n}{i}dp_{i,m}\),因此我们只需…
B - Mysterious Light 题意:从一个正三角形边上一点出发,遇到边和已走过的边则反弹,问最终路径长度 思路:GCD 数据爆long long #pragma comment(linker, "/STACK:102c000000,102c000000") #include <iostream> #include <cstdio> #include <cstring> #include <sstream> #include &…
Description 在 \(n*n\) 的棋盘上给出 \(m\) 个黑点,若 \((x,y)\),\((y,z)\) 都是黑点,那么 \((z,x)\) 也会变成黑点,求最后黑点的数量 题面 Solution 把点 \((x,y)\) 看作一条从 \(x\) 到 \(y\) 的有向边 我们分析性质: 如果存在一个自环,那么这个点所在的连通块就会变成一个完全图 原因是和这个点有单向边的点都会变成双向边,有双向边之后就会形成自环,那么就可以一直重复这个过程,就变成了完全图 我们想办法判断图中有没…
题面 传送门 思路 首先,这个涂黑的方法我们来优化一下模型(毕竟当前这个放到矩形里面,你并看不出来什么规律qwq) 我们令每个行/列编号为一个点,令边(x,y)表示一条从x到y的有向边 那么显然只要有一条长度为2的路径,就会得到一个三元环 我们考虑如何统计新加入的边的数量,发现有如下规律: 1.如果一个弱联通块中的点可以被3染色(0的出边染成1,1的染成2,2的染成0,倒着染就是反过来),那么这个联通块中所有0会向所有1连边,所有1会向所有2连边,所有2会向0连边 2.如果一个弱联通块染色的时候…
Atcoder 题面传送门 洛谷题面传送门 又是道思维题,又是道把我搞自闭的题. 首先考虑对于固定的 \(a_1,a_2,\dots,a_n;b_1,b_2,\dots,b_m\) 怎样判定是否合法,我们对于回文串对应的点之间连边,表示它们必须相等,这样可以形成一张图,如果该图连通那么证明这两个数组合法,反之不合法,正确性显然. 注意到对于每个 \(a_i\) 会连出 \(\lfloor\dfrac{a_i}{2}\rfloor\) 条边,换句话说,如果 \(a_i\) 是偶数那么全部 \(\d…
洛谷题面传送门 & Atcoder 题面传送门 如何看待 tzc 补他一个月前做的题目的题解 首先根据 SG 定理先手必输当且仅当 \(\text{SG}(1)=\text{SG}(2)\).考虑从反面入手,拿总情况数减去 \(\text{SG}(1)=\text{SG}(2)\) 的方案数. 怎么求 \(\text{SG}(1)=\text{SG}(2)\) 的方案数呢?看到这类数据范围巨小并且要你求"有多少组边集满足保留边集中的边后符合 xxx 条件"的题目,果断选择对点集…
洛谷题面传送门 & Atcoder 题面传送门 12 天以前做的题了,到现在才补/yun 做了一晚上+一早上终于 AC 了,写篇题解纪念一下 首先考虑如果全是 \(-1\)​ 怎么处理.由于我们不关心每个 pair 中的 max 是多少,并且显然每个 pair 的最小值都是两两不同的,因此我们可以考虑有多少个最小值组成的集合,然后答案乘上 \(n!\) 即可.而显然如果我们将"作为某个 pair 的最小值"的位置放上一个左括号,"不作为某个 pair 的最小值&quo…
题意:给\(n+1\)个站\(0,\dots,n\),连续的两站\(i-1\)和\(i\)之间有一个距离\(A_i\),其是单行(\(B_i=1\))或双行(\(B_i=2\)),单行线不能同时有两辆方向不相同的车在上面,现在每\(k\)分钟发一次车(从\(0\)到\(n\)和从\(n\)到\(0\)),需要安排\(k\)分钟内的时间表,使得从\(0\)开到\(n\)的时间和从\(n\)开到\(0\)的时间和最小. 思路:主席树优化\(dp\). 这道题告诉我们要学好语文 首先避免在单行线上交叉…
Description 题面 Solution HNOI-day2-t2 复制上去,删点东西,即可 \(AC\) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1000010; int n,a[N],w[N],fa[N]; struct data{ ll w;int s,x; bool operator <(const data &p)const{ if(w*p.s!=…
题意 有n个问题答案为YES,m个问题答案为NO. 你只知道剩下的问题的答案分布情况. 问回答完N+M个问题,最优策略下的期望正确数. 解法 首先确定最优策略, 对于\(n<m\)的情况,肯定回答YES: 对于\(n>m\)的情况,肯定回答NO. 所以到最后,肯定由MIn(n,m)个问题可以回答正确. 最后可能正确的情况在于,n==m的情况,有一半的几率正确. 所以加上这部分的期望即可,通过组合数算出路径数目即可.…
AtCoder Grand Contest 010 A - Addition 翻译 黑板上写了\(n\)个正整数,每次会擦去两个奇偶性相同的数,然后把他们的和写会到黑板上,问最终能否只剩下一个数. 题解 洛谷认为此题过水,已被隐藏. #include<iostream> #include<cstdio> using namespace std; inline int read() { int x=0;bool t=false;char ch=getchar(); while((ch…