BZOJ3189 : [Coci2011]Slika】的更多相关文章

通过离线将操作建树,即可得到最终存在的操作. 然后逆着操作的顺序,倒着进行染色,对于每行维护一个并查集即可. 时间复杂度$O(n(n+m))$. #include<cstdio> const int N=1010,M=100010; int n,m,i,j,x,C,X1,Y1,X2,Y2,f[M],cnt,pos[M],e[M][5],col[N][N];char ch; struct DSU{ int f[N]; void init(){for(int i=0;i<=n+1;i++)f…
传送门 有回档操作,考虑离线,这样就知道最终的操作序列了 发现前面的操作会被后面覆盖,干脆直接从后往前操作,如果一个位置以前染色过了那就不用再染色 所以我们可以用 $n$ 个链表维护 $n$ 个行,操作过的位置直接从链表中删除即可 然后复杂度就是 $O(nm)$,代码中是用 $n$ 个并查集来维护行,都差不多 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
[题解]Ples [COCI2011] 依旧是没有传送门,只有提供了数据的官网. [题目描述] \(N\) 个汉子和 \(N\) 个妹纸一起参加舞会,跳舞时只能是一个汉子一个妹纸配对,现在给出每个人的身高,任意一个人都只想和比 \(\text{ta}\) 高(矮)的人跳,身高一样的人都不想与对方跳.输出满足人们愿望的前提下可组成的最多对数.. [输入] 第一行一个数 \(N\) 表示汉子和妹纸的个数. 第二行 \(N\) 个整数,其绝对值表示 \(N\) 个汉子的身高 \(h\),\(h\) 为…
[题解]Dvoniz [COCI2011] 没有传送门,只有提供了数据的官网. [题目描述] 对于一个长度为 \(2*K\) 的序列,如果它的前 \(K\) 个元素之和小于等于 \(S\) 且后 \(K\) 个之和也小于等于 \(S\),我们则称之为 \(\text{interesting}\) .现给定一个长度为 \(N\) 的序列 \(a\),要求输出以每个元素开头能找到的最长 \(\text{interesting}\) 序列 的长度. [输入] 第一行两个整数 \(N,S\) . 接下来…
coci2011 debt 还债 Description 有N个人,每个人恰好欠另一个人Bi元钱,现在大家都没有钱,政府想要给其中一些人欠,使得大家都不欠别人钱. 如A欠B 50,B欠C 20,则当政府给A50元时,A会立刻用50还清和B的债务,B也会立刻用20还清和C的债务. 欠款必须一次还清.如A欠B 50, B欠A50,你不能给A 49元让A还49元给B. 问政府至少花多少钱? Input Format 第一行 N (2≤N ≤ 200,000) 表示居民数 接下来N行, 每行有两个数 A…
校内OJ传送门 一般容斥,具体思想参考代码实现,刚开始是在读入时处理所有数的二进制子集,没看$N$的范围以为复杂度不会爆炸.. 然后复杂度就爆炸了. 小优化: 每次整个载入二进制,计数.这个结束后枚举计数的状态和答案的状态. up(i,,(<<)-)up(j,,(<<)-)if((j&i)==j)f[j]+=T[i]; up(i,,(<<)-)f[i]=(f[i]-)*f[i]/; 下面是代码的具体实现. //OJ 1376 //by Cydiater //20…
http://172.20.6.3/Problem_Show.asp?id=1376 题意:找给出的数中含有相同数字的数对的对数. mmp数论题竟然卡快读,莫名拉低通过率什么的太过分了. 刚开始想到了怎么容斥但是没法实现,看了标程发现需要状压,我还是太菜了. 代码 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> us…
无趣的小x在玩一个很无趣的数字游戏.他要在n个数字中找他喜欢友好数对.他对友好数对的定义是:如果有两个数中包含某一个以上相同的数位(单个数字),这两个数就是友好数对.比如:123和345 就是友好数对,因为都包含数位3,显然123和234也是由号数对.而12和34则不是友好数对,因为它们没有相同的数位. 刚拿到题没怎么读懂,因为我直观的想法是存一下扫一遍就行了,后来一想,得用容斥:又犯蠢了: 其实这道题的容斥比较基本,看代码吧: #include<iostream> #include<c…