摘要:辗转相除法:求gcd(a,b)扩展欧几里得:解关于x和y的方程:a*x+b*y=gcd(a,b) 推广:对于关于x和y的方程a*x+b*y=n 有整数解的条件是n%gcd(a,b)==0 所以这种方程可以这样解: 先解方程a*x'+b*y'=gcd(a,...
阅读全文
摘要:题意:给你矩阵A,求S=A+A^1+A^2+...+A^nsol:直接把每一项解出来显然是不行的,也没必要。我们可以YY一个矩阵:其中1表示单位矩阵然后容易得到:可以看出这个分块矩阵的左下角那块就可以得到要求的解S我们取这一块,再减去一个单位矩阵1即可。 1 #include "iostream" ...
阅读全文
摘要:题目原意:N个方块排成一列,每个方块可涂成红、蓝、绿、黄。问红方块和绿方块都是偶数的方案的个数。sol:找规律列递推式+矩阵快速幂设已经染完了i个方块将要染第i+1个方块。a[i]=1-i方块中,红、绿方块数量都是偶数的方案数b[i]=1-i方块中,红、绿方块数量一个是偶数一个是奇数的方案数(红ev...
阅读全文
摘要:1 #include "iostream" 2 #include "vector" 3 #include "cstring" 4 using namespace std; 5 6 typedef unsigned long int ULL; 7 typedef vector vec; 8 typ...
阅读全文
摘要:题意:求fibonacci数列第n项 1 #include "iostream" 2 #include "vector" 3 #include "cstring" 4 using namespace std; 5 6 typedef unsigned long int ULL; 7 typedef...
阅读全文
摘要:一开始题意没读懂 = =题意:比如说对于表盘上a到b、c到d都要连边,这两个边不能交叉。这两个边要么都在圆内要么都在圆外,而且可以是曲线= =比如这种情况:(Reference:http://blog.csdn.net/l04205613/article/details/6668318)(左边情况看...
阅读全文
摘要:原题模型:两者(A,B)不能同时取 1 #include "cstdio" 2 #include "vector" 3 #include "stack" 4 #include "cstring" 5 using namespace std; 6 #define maxn 2010 7 ...
阅读全文
摘要:Reference:http://blog.csdn.net/jarjingx/article/details/8521690其中伍昱的ppt不错。2SAT最裸的模型:一国有n个党派,每个党派在议会中都有2个代表,现要组建和平委员会,要从每个党派在议会的代表中选出1人,一共n人组成和平委员会。已知有...
阅读全文
摘要:这回要求的是第k小的元素,参考了ljl大神的模板,orz 1 //insert 插入 2 //remove 删除 3 //_find 查找 4 //kth 返回root为根的树中第k小的元素 5 //treap插入、删除、查询时间复杂度均为O(logn) 6 #include 7 #...
阅读全文
摘要:后缀数组+RMQ是O(nlogn)的,会TLE.....标准解法好像是马拉车,O(n).... 1 #include "algorithm" 2 #include "cstdio" 3 #include "cstring" 4 using namespace std; 5 #define ...
阅读全文
摘要:1 #include "stdio.h" 2 #define maxn 20010 3 4 int wa[maxn],wb[maxn],wv[maxn],ws[maxn]; 5 int rank[maxn],height[maxn]; 6 int r[maxn],sa[maxn],ans[max...
阅读全文
摘要:题意:给出一串序列,求最长的theme长度(theme:完全重叠的子序列,如1 2 3和1 2 3 or 子序列中每个元素对应的差相等,如1 2 3和7 8 9)要是没有差相等这个条件那就好办多了,直接裸题。一开始想了个2B方法,后来发现真心2B啊蛤蛤蛤 1 for i=1 to 88 do 2 {...
阅读全文
摘要:Orz看到一个很经典的整理:http://blog.csdn.net/v_july_v/article/details/6897097---------------------在字符串匹配问题中经常出现这两个概念:文本(text):原文模板(pattern):关键词(相当于一个子串)任务:在text...
阅读全文
摘要:Reference:IOI2009论文http://www.cnblogs.com/ziyi--caolu/p/3192731.html 1 #include "stdio.h" 2 #include "string.h" 3 #define maxn 200010 4 5 int wa[maxn...
阅读全文
摘要:IOI2009论文reference:http://www.cnblogs.com/staginner/archive/2012/02/02/2335600.html先上个不带注释直接用的版本: 1 //在BT5下attack的时候把数值调大点(超过2000)就行了,具体可以参见网上破解无线网密码的...
阅读全文
摘要:题意:求给定图的欧拉回路(每条边只走一次)若欧拉回路存在,图中只可能有0个or2个奇数度的点。求解时,若有奇数度的点,则必须从该点开始。否则可以从任一点开始求解过程:dfs 1 //主程序部分 2 # circuit is a global array 3 find_euler_circuit...
阅读全文
摘要:set的基本操作:begin() 返回指向第一个元素的迭代器clear() 清除所有元素count() 返回某个值元素的个数empty() 如果集合为空,返回trueend() 返回指向最后一个元素的迭代器equal_range() 返回集合中与给定值相等的上下限的两个迭代器erase() 删除集合
阅读全文
摘要:题意:n+1个点:0--n,找一条路径从0点出发遍历1--n的点再回到0,每个点可经过不止一次,求最短路径裸的TSP问题,先用Floyd求出各个点之间最短路,再状压dp即可用n+1位二进制表示状态附模板: 1 //首先不难想到用FLOYD先求出任意2点的距离dis[i][j] 2 //接着枚举所有状...
阅读全文
摘要:堆优化dijkstra 1 /* 2 PROB:butter 3 LANG:C++ 4 */ 5 6 #include 7 #include 8 #include 9 #include 10 using namespace std;11 const int Ni = 10000;12 con...
阅读全文
摘要:又是个裸BFS...和西安网赛那道1006一样的,只不过加上了要记录方案。顺便复习map记录方案直接在bfs队列的结点里加一个vector opt,把从开头一直到当前结点的操作序列记下来 1 /* 2 PROB:msquare 3 LANG:C++ 4 */ 5 6 #include ...
阅读全文
摘要:题目原意很简单,就是解一个三元一次方程组直接高斯消元解方程组,枚举最后一列的倍数(k)注意double的精度,有很多细节需要处理 1 /* 2 PROB:ratios 3 LANG:C++ 4 */ 5 6 #include 7 #include 8 #include 9 ...
阅读全文
摘要:自己YY了个DP:设f[n][l]为n位数中包含不超过l个1的总个数f[n][l]=f[n-1][l]+f[n-1][l-1]然后用_search()从高位向低位扫描即可,tmp记录当前已记下多少个数了(这些数肯定都比第I个小)一开始f数组的初值YY错了,看了nocow改过来就好了 1 /* 2 P...
阅读全文
摘要:treap插入、删除、查询时间复杂度均为O(logn)treap树中每个节点有两种权值:键值和该节点优先值如果只看优先值,这棵树又是一个堆treap有两种平衡方法:左旋&右旋insert 插入remove 删除_find 查找kth 返回root为根的树中第k大的元素 1 #include 2...
阅读全文
摘要:题意:给你一堆字符串,问是否满足对于任意两个字符串a、b,a不是b的前缀字典树==前缀树==Trie树trie入门题,只用到了insert和query操作 1 #include 2 #include 3 #include 4 using namespace std; 5 #define max...
阅读全文
摘要:1 1 #include 2 2 #define MAXN 1000 3 3 #define offset 10000 4 4 #define eps 1e-8 5 5 #define PI acos(-1.0)//3.14159265358979323846 6 ...
阅读全文
摘要:题意:求最短路和比最短路长度多1的次短路的个数本来想图(有)方(模)便(版)用spfa的,结果妹纸要我看看dijkstra怎么解....写了三遍orzVer1.0:堆优化+邻接表,WA 1 //不能用堆优化+邻接表,因为需要处理dis[i][0]和dis[i][1]两套,如果都挤到一个堆里就乱套了...
阅读全文
摘要:B吉利数字时限:1s【题目描述】算卦大湿biboyouyun最近得出一个神奇的结论,如果一个数字,它的各个数位相加能够被10整除,则称它为吉利数。现在叫你计算某个区间内有多少个吉利数字。【输入】第一行为样例个数N。接下来N行,每一行代表一个输入样例,每个输入样例有2个数,分别代表某个区间的起点a和终...
阅读全文
摘要:上学期刷过裸的RMQ模板题,不过那时候一直不理解>_=l)3 {4 int mid=(l+r)/2; //mid: r-l5 if (calc(mid)) //calc(mid): 判断mid答案是否符合要求6 ...
阅读全文