博客园 - lienus
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=139725
2016-08-12T08:00:38Z
lienus
https://www.cnblogs.com/lienus/
feed.cnblogs.com
https://www.cnblogs.com/lienus/p/4466657.html
hdu 4963(中途相遇法) - lienus
题目链接:Dividing a String题意:给定一个2*n(n#include #include #include #include #include #include #define LL long longusing namespace std;const int inf = 0x3f3f...
2015-04-29T09:52:00Z
2015-04-29T09:52:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】题目链接:Dividing a String题意:给定一个2*n(n#include #include #include #include #include #include #define LL long longusing namespace std;const int inf = 0x3f3f... <a href="https://www.cnblogs.com/lienus/p/4466657.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4459801.html
UVALive 6869(后缀数组) - lienus
传送门:Repeated Substrings题意:给定一个字符串,求至少重复一次的不同子串个数。分析:模拟写出子符串后缀并排好序可以发现,每次出现新的重复子串个数都是由现在的height值减去前一个height值。#include #include #include #include #inclu...
2015-04-27T04:14:00Z
2015-04-27T04:14:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Repeated Substrings题意:给定一个字符串,求至少重复一次的不同子串个数。分析:模拟写出子符串后缀并排好序可以发现,每次出现新的重复子串个数都是由现在的height值减去前一个height值。#include #include #include #include #inclu... <a href="https://www.cnblogs.com/lienus/p/4459801.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4451966.html
AC自动机小结 - lienus
AC自动机在trie树上实现KMP的一种数据结构,可以完成多模式串的匹配,核心要理解fail指针的含义,即让当前字符失配时跳转到具有最长公共前后缀的字符继续匹配,从根节点到当前节点(s)fail指针的节点(p)的路径字符串必定为从根节点到节点s的路径字符串的一个后缀,还有理解trie图,当字符串...
2015-04-23T14:18:00Z
2015-04-23T14:18:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】AC自动机在trie树上实现KMP的一种数据结构,可以完成多模式串的匹配,核心要理解fail指针的含义,即让当前字符失配时跳转到具有最长公共前后缀的字符继续匹配,从根节点到当前节点(s)fail指针的节点(p)的路径字符串必定为从根节点到节点s的路径字符串的一个后缀,还有理解trie图,当字符串... <a href="https://www.cnblogs.com/lienus/p/4451966.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4416107.html
poj 2409+2154+2888(Burnside定理) - lienus
三道burnside入门题:Burnside定理主要理解置换群置换后每种不动点的个数,然后n种不动点的染色数总和/n为answer。对于旋转,旋转i个时不动点为gcd(n,i).传送门:poj 2409#include #include #include #include #include #inc...
2015-04-10T17:44:00Z
2015-04-10T17:44:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】三道burnside入门题:Burnside定理主要理解置换群置换后每种不动点的个数,然后n种不动点的染色数总和/n为answer。对于旋转,旋转i个时不动点为gcd(n,i).传送门:poj 2409#include #include #include #include #include #inc... <a href="https://www.cnblogs.com/lienus/p/4416107.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4395196.html
HUST 1569(Burnside定理+容斥+数位dp+矩阵快速幂) - lienus
传送门:Gift题意:由n(n#include #include #include #include #include #define LL long long#define N 25#define mod 1000000007using namespace std;/***************...
2015-04-05T16:25:00Z
2015-04-05T16:25:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Gift题意:由n(n#include #include #include #include #include #define LL long long#define N 25#define mod 1000000007using namespace std;/***************... <a href="https://www.cnblogs.com/lienus/p/4395196.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4389953.html
bunoj 34990(hash) - lienus
传送门:Justice String题意:有两个串A,B,问是否存在A的一个子串S,S和B的长度相等,最多有2个字符不同。如果有多个,输出其实下标最小S的下标,没有输出-1。分析:从A每个位置开始找最长公共前缀,如果最长公共前缀长度不大于lenb,继续从下一次位置开始找,至多找两次,如果一直找不到就...
2015-04-03T06:19:00Z
2015-04-03T06:19:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Justice String题意:有两个串A,B,问是否存在A的一个子串S,S和B的长度相等,最多有2个字符不同。如果有多个,输出其实下标最小S的下标,没有输出-1。分析:从A每个位置开始找最长公共前缀,如果最长公共前缀长度不大于lenb,继续从下一次位置开始找,至多找两次,如果一直找不到就... <a href="https://www.cnblogs.com/lienus/p/4389953.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4388920.html
CSU 1506(最小费用最大流) - lienus
传送门:Double Shortest Paths题意:有两个人;给出路径之间第一个人走所需要的费用和第二个人走所需要的费用(在第一个人所需的 费用上再加上第二次的费用);求两个人一共所需要的最小费用。分析:建立超源和超汇,流量分别为2,从源点到汇点的最大流2时最小费用为答案。#include #i...
2015-04-02T16:29:00Z
2015-04-02T16:29:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Double Shortest Paths题意:有两个人;给出路径之间第一个人走所需要的费用和第二个人走所需要的费用(在第一个人所需的 费用上再加上第二次的费用);求两个人一共所需要的最小费用。分析:建立超源和超汇,流量分别为2,从源点到汇点的最大流2时最小费用为答案。#include #i... <a href="https://www.cnblogs.com/lienus/p/4388920.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4384789.html
CF 514C(hash) - lienus
传送门:Watto and Mechanism题意:输入a个字符串和b个待检测字符串。问待检测字符串是否可以由某个已知字符串改变且只改变一个字母得到。分析:字符串hash,枚举待测字符串每一位进行修改,看是否符合,好像正解是trie树。#include #include #include #incl...
2015-04-01T10:59:00Z
2015-04-01T10:59:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Watto and Mechanism题意:输入a个字符串和b个待检测字符串。问待检测字符串是否可以由某个已知字符串改变且只改变一个字母得到。分析:字符串hash,枚举待测字符串每一位进行修改,看是否符合,好像正解是trie树。#include #include #include #incl... <a href="https://www.cnblogs.com/lienus/p/4384789.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4381305.html
lightoj 1297(三分) - lienus
传送门:Largest Box题意:长度为L宽度为W的纸四个角去掉x*x的正方形,然后形成一个长方体,问能组成长方体的最大体积为多少。分析:三分x求最值。#include #include #include #include #define N 100010#define mod 100000000...
2015-03-31T08:31:00Z
2015-03-31T08:31:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Largest Box题意:长度为L宽度为W的纸四个角去掉x*x的正方形,然后形成一个长方体,问能组成长方体的最大体积为多少。分析:三分x求最值。#include #include #include #include #define N 100010#define mod 100000000... <a href="https://www.cnblogs.com/lienus/p/4381305.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4381275.html
lightoj 1179(线段树) - lienus
传送门:Josephus Problem题意:经典约瑟夫问题,有n个人,每次数到第k个人出列,求剩下的最后一人。分析:用线段树模拟约瑟夫问题,记录区间的减少情况,然后根据每次数到的人在区间排第几位,线段树log(n)找到并更新,总复杂度为O(nlog(n))。#include #include #i...
2015-03-31T08:24:00Z
2015-03-31T08:24:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Josephus Problem题意:经典约瑟夫问题,有n个人,每次数到第k个人出列,求剩下的最后一人。分析:用线段树模拟约瑟夫问题,记录区间的减少情况,然后根据每次数到的人在区间排第几位,线段树log(n)找到并更新,总复杂度为O(nlog(n))。#include #include #i... <a href="https://www.cnblogs.com/lienus/p/4381275.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4336267.html
hdu 1392(凸包) - lienus
传送门:Surround the Trees题意:求凸包的周长。分析:凸包模板题,先按极角排好序后,然后根据叉积正负确定凸包。#include #include #include #include #include using namespace std;const double eps = 1e-...
2015-03-13T15:56:00Z
2015-03-13T15:56:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Surround the Trees题意:求凸包的周长。分析:凸包模板题,先按极角排好序后,然后根据叉积正负确定凸包。#include #include #include #include #include using namespace std;const double eps = 1e-... <a href="https://www.cnblogs.com/lienus/p/4336267.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4333899.html
poj2826(线段相交) - lienus
传送门:An Easy Problem?!题意:用两条线段接雨水,雨水是垂直落下的,问我们用给定的两条线段能接到多少水。分析:看起来很简单,写起来略麻烦,先排除不能接到水的情况: 1. 两条线段不相交; 2. 其中任意一条线段水平; 3. 两条线段重合; 4. 相交的情况下,最高的端点遮住了...
2015-03-12T14:19:00Z
2015-03-12T14:19:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:An Easy Problem?!题意:用两条线段接雨水,雨水是垂直落下的,问我们用给定的两条线段能接到多少水。分析:看起来很简单,写起来略麻烦,先排除不能接到水的情况: 1. 两条线段不相交; 2. 其中任意一条线段水平; 3. 两条线段重合; 4. 相交的情况下,最高的端点遮住了... <a href="https://www.cnblogs.com/lienus/p/4333899.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4333352.html
poj1269(直线交点) - lienus
传送门:Intersecting Lines题意:给出N组直线,每组2条直线,求出直线是否相交。如果共线则输出LINE,相交则输入点坐标,否则输出NONE.分析:模板裸题,直接上模板。。。#include #include #include #include #include #include #i...
2015-03-12T11:58:00Z
2015-03-12T11:58:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Intersecting Lines题意:给出N组直线,每组2条直线,求出直线是否相交。如果共线则输出LINE,相交则输入点坐标,否则输出NONE.分析:模板裸题,直接上模板。。。#include #include #include #include #include #include #i... <a href="https://www.cnblogs.com/lienus/p/4333352.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4331388.html
poj 3304(直线与线段相交) - lienus
传送门:Segments题意:线段在一个直线上的摄影相交求求是否存在一条直线,使所有线段到这条直线的投影至少有一个交点分析:可以在共同投影处作原直线的垂线,则该垂线与所有线段都相交 是否存在一条直线与所有线段都相交。去盗了一份bin神的模板,用起来太方便了。。。#include #include #...
2015-03-11T17:12:00Z
2015-03-11T17:12:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Segments题意:线段在一个直线上的摄影相交求求是否存在一条直线,使所有线段到这条直线的投影至少有一个交点分析:可以在共同投影处作原直线的垂线,则该垂线与所有线段都相交 是否存在一条直线与所有线段都相交。去盗了一份bin神的模板,用起来太方便了。。。#include #include #... <a href="https://www.cnblogs.com/lienus/p/4331388.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4331151.html
hdu 1086(判断线段相交) - lienus
传送门:You can Solve a Geometry Problem too题意:给n条线段,判断相交的点数。分析:判断线段相交模板题,快速排斥实验原理就是每条线段代表的向量和该线段的一个端点与 另一条线段的两个端点构成的两个向量求叉积,如果线段相交那么另一条线段两个端点必定在该线段的两边,则该...
2015-03-11T14:28:00Z
2015-03-11T14:28:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:You can Solve a Geometry Problem too题意:给n条线段,判断相交的点数。分析:判断线段相交模板题,快速排斥实验原理就是每条线段代表的向量和该线段的一个端点与 另一条线段的两个端点构成的两个向量求叉积,如果线段相交那么另一条线段两个端点必定在该线段的两边,则该... <a href="https://www.cnblogs.com/lienus/p/4331151.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4330618.html
uva 11355(极角计算) - lienus
传送门:Cool Points题意:给一个圆心为原点的圆和一些线段,问所有线段两端点与圆心连线构成的角度总和占总360度的百分比。分析:首先将所有线段的两端点变成极角,然后排序(范围[-PI,PI],即从x轴负方向逆时针转一圈),如果某一线段极角值之差大于PI,构成的角度值肯定不是#include ...
2015-03-11T10:01:00Z
2015-03-11T10:01:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Cool Points题意:给一个圆心为原点的圆和一些线段,问所有线段两端点与圆心连线构成的角度总和占总360度的百分比。分析:首先将所有线段的两端点变成极角,然后排序(范围[-PI,PI],即从x轴负方向逆时针转一圈),如果某一线段极角值之差大于PI,构成的角度值肯定不是#include ... <a href="https://www.cnblogs.com/lienus/p/4330618.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4328802.html
hdu 1029(hash) - lienus
传送门:Ignatius and the Princess IV题意:给n个数,找出出现次数大于等于(n+1)/2的那个数。分析:大水题,排个序输出中间那个即可,这里随便写个HASHMAP找出次数最大那个。#include #include #include #define N 1000010#de...
2015-03-10T15:50:00Z
2015-03-10T15:50:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Ignatius and the Princess IV题意:给n个数,找出出现次数大于等于(n+1)/2的那个数。分析:大水题,排个序输出中间那个即可,这里随便写个HASHMAP找出次数最大那个。#include #include #include #define N 1000010#de... <a href="https://www.cnblogs.com/lienus/p/4328802.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4328764.html
hdu 1024(dp) - lienus
传送门:Max Sum Plus Plus题意:从n个数中选出m段不相交的连续子段,求这个和最大。分析:经典dp,dp[i][j][0]表示不取第i个数且前i个数分成j段达到的最优值,dp[i][j][1]表示取了第i个数且前i个数分成j段达到的最优值。那么有:dp[i][j][0]=max(dp[...
2015-03-10T15:24:00Z
2015-03-10T15:24:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:Max Sum Plus Plus题意:从n个数中选出m段不相交的连续子段,求这个和最大。分析:经典dp,dp[i][j][0]表示不取第i个数且前i个数分成j段达到的最优值,dp[i][j][1]表示取了第i个数且前i个数分成j段达到的最优值。那么有:dp[i][j][0]=max(dp[... <a href="https://www.cnblogs.com/lienus/p/4328764.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4326866.html
SPOJ DISUBSTR(字符串hash) - lienus
传送门:DISUBSTR题意:给定一个字符串,求不同子串个数。分析:由于数据较小,直接枚举长度为1,2...n的所有子串进行hash即可,复杂度(O(n^2)),后缀数组才是正解(O(nlogn)。#include #include #include #include #include #inclu...
2015-03-10T11:27:00Z
2015-03-10T11:27:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:DISUBSTR题意:给定一个字符串,求不同子串个数。分析:由于数据较小,直接枚举长度为1,2...n的所有子串进行hash即可,复杂度(O(n^2)),后缀数组才是正解(O(nlogn)。#include #include #include #include #include #inclu... <a href="https://www.cnblogs.com/lienus/p/4326866.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lienus/p/4326845.html
SPOJ DISUBSTR(后缀数组) - lienus
传送门:DISUBSTR题意:给定一个字符串,求不相同的子串。分析:对于每个sa[i]贡献n-a[i]个后缀,然后减去a[i]与a[i-1]的公共前缀height[i],则每个a[i]贡献n-sa[i]-height[i]个不同子串。#include #include #include #inclu...
2015-03-10T11:12:00Z
2015-03-10T11:12:00Z
lienus
https://www.cnblogs.com/lienus/
【摘要】传送门:DISUBSTR题意:给定一个字符串,求不相同的子串。分析:对于每个sa[i]贡献n-a[i]个后缀,然后减去a[i]与a[i-1]的公共前缀height[i],则每个a[i]贡献n-sa[i]-height[i]个不同子串。#include #include #include #inclu... <a href="https://www.cnblogs.com/lienus/p/4326845.html" target="_blank">阅读全文</a>