AGC 012 D - Colorful Balls】的更多相关文章

题面在这里! 为什么atcoder都是神仙题啊qwq 首先发现如果要让 x,y 互换位置的话,要么通过他们直接换 (也就是x和y满足两种操作之一),要么间接换,通过一些其他的元素形如 x可以和 a[1]换,a[1]可以和a[2]换...a[k-1]可以和a[k]换,a[k]可以和y换,x就可以和y换啦. 所以就可以建模到一个无向图上,发现一个联通块内的元素之间都是可以随便换的,所以答案就是每个联通分量的颜色序列数的乘积.. 而一个联通分量的颜色序列数是等于 sz!/(col[1]!)(col[2…
题意: 有N个球排成一行,第i个球颜色为ci, 权为wi, 如果两个同色球权值和 <= X 则它们可以交换: 如果两个异色球权值和 <= Y 则它们可以交换:不限制交换次数,求能到达的颜色序列有多少种. 1<=n<=2e5;1<=x,y<=1e9;1<=ci<=n;1<=wi<=1e9 分析: 我们可以通过n^2的枚举,来枚举两个点是否可以交换,如果交换就连一条边 那么最后会形成若干个连通块,那么每个连通块之间都是独立的,答案相乘:对于一个连通块…
AT2364 Colorful Balls 题意翻译 N个球排成一排,第i个球有颜色ci和重量wi. Snuke每次可以选择两个颜色相同,且重量之和不超过X的球,交换他们的位置. Snuke每次可以选择两个颜色不同,且重量之和不超过Y的球,交换他们的位置. 问,可以得到多少种不同的颜色序列? 答案取膜1000000007 输入输出样例 输入样例#1: 4 7 3 3 2 4 3 2 1 4 4 输出样例#1: 2 输入样例#2: 1 1 1 1 1 输出样例#2: 1 输入样例#3: 21 77…
Problem A: Colorful Balls Description Snuke放了N个一排彩色的球.从左起第i个球的颜色是ci重量是wi她可以通过执行两种操作对这些球重新排序操作1:选择两个相同颜色的球,假如他们的重量和小于等于X,交换两个球的位置操作2:选择两个不同颜色的球,假如他们的重量和小于等于Y,交换两个球的位置求我们总共可以得到多少种 不同的颜色序列?对答案取109+7的模 Input N X Yc1 w1. . .cN wN Output 输出答案. Sample Input…
CF1478-A. Nezzar and Colorful Balls 题意: 有\(n\)个球,每个球上面都有一个数字\(a_i\),这些数字是组成的序列是非递减的.现在你要给每个球涂色,你必须保证相同颜色的球上面的数字组成一个严格递增序列.问你最少多少种颜色可以实现上述要求? 思路: 比赛的时候卡题意了,题意确实有点难懂,这里以题目中的第一个组数据进行解释,同时也将思路理顺: 你有6个球,每个球上的数字分别为1 1 1 2 3 4分别计为\(a_1, a_2, a_3, a_4, a_ 5,…
题目传送门:https://agc012.contest.atcoder.jp/tasks/agc012_d 题目翻译 给你一排一共\(N\)个球,每个球有一个颜色\(c_i\)和一个重量\(w_i\),如果两个球颜色相同,重量相加不超过\(x\)那我就可以交换这俩个球的位置.如果两个球颜色不同,重量相加不超过\(y\)那我也可以交换这俩球的位置.你可以随心所欲的交换或者不交换,求最后颜色序列的种数.\(N\leqslant 2×10^5;c_i\leqslant N;w_i,x,y\leqsl…
题意: 有n个球,每个球有两个值,一个是颜色,另一个是重量.可以进行如下的操作任意次: 1.选择两个颜色相同的球,如果这两个球的重量之和小于等于X,就交换这两个球: 2.选择两个颜色不同的球,如果这两个球的重量之和小于等于Y,就交换这两个球. 问最后能够得到的本质不同的颜色的序列有多少个. 数据范围: 1<=n,color<=10^5 其余值均<=10^5 思路: 假如说X=INF,Y=INF,那么这道题就是一道重排的题目了. 现在有了X和Y的限制,那么就可以考虑到底哪些球是"…
题目链接 AtCoder:https://agc012.contest.atcoder.jp/tasks/agc012_d 洛谷:https://www.luogu.org/problemnew/show/AT2364 Solution 首先很容易得到一个\(O(n^2)\)的做法: 两个可以\(\rm swap\)的点连边,那么答案就是联通块大小的阶乘之积除以颜色相同的阶乘之积. 注意到如果按题目给出的条件,那么这些点一定会连成一个不同色的大块和零散的对答案无贡献的同色小块. 如果从小到大排一…
题面在这里! 神仙构造啊qwqwq. 窝一开始只想到一个字符串长度是 O(log(N)^2) 的做法:可以发现一段相同的长度为n的字符串的贡献是 2^(n-1)-1 ,可以把它看成类二进制,枚举用了多少种字符,把n加上这个种类数,然后每种就可以看成一个二进制位啦,只要 n+种类数 这个数的二进制中1的个数 <= 种类数就可以构造啦,肯定是有解的(考虑种类数最多可以是100). 然鹅最后字符串长只能是200啊,,,,迷 然后%了一发题解发现是一个神仙构造,窝也懒得说了直接贴上题解啦qwq,一段愉快…
题面在这里! (显然首先想到反着做比较简单,每个点取第一次被覆盖到的颜色) 发现d非常小,那么是否可以暴力覆盖呢??? 考虑一个稠密图..暴力肯定就gg了啊... 不过我们可以对每一个点 i 记一个max[i],表示之前到i的时候还能再往外走多少. 之后如果再到这个点并且再往外能走的距离<=max[i]的话就直接返回了,因为这样从这个点就不可能扩展出新的没有染色的点了. 一开始设 max[i]=-1就好啦... 显然每次到i,max至少+1,复杂度O(N * max(d)) #include<…