這個題一開始想的是hash+列舉長度+sort尋重o(
n2lo
g2n)
≈50002∗
12≈3∗
108,但是模乙個數就wa了,模兩個數就t了;卡得不行不行的。
問題在於,實際上長度顯然是單調合法的(如果len行,則小於len一定行),所以我們可以變列舉為二分。(巨集哥orz)
!!這也正是我沒有想到的了,最近總是想著要尋找列舉順序,改變列舉順序;但是卻忽略了尋找單調性。
#include
#include
#include
#include
using
namespace
std;
#include
#define p 1000000009
struct s;
for(i=0;i0].key=(hash[0].key*89+a[i])%p;
for(;i1].key-a[i-len]*ni[len-1]%p)*89+a[i])%p,hash[k].r=i;
for(i=0;i1])%p+p)%p;
sort(hash,hash+k),hash[k].key=-1;
for(i=0;i1;
while(hash[j].key==hash[j-1].key)++j;
if(hash[j-1].r-hash[i].r>=len)return
1; }
return0;}
int main()
long
long tmp;
int l=5,r=(n>>1)+1;
if(!check(5))
while(r-l>1)
printf("%d\n",l);
}
但是,其實模乙個數是很容易被坑的,還是模兩個數比較靠譜!
#include
#include
#include
#include
using namespace std;
int mod[2]=;
typedef long long ll;
struct hs
inline bool check(int len);
for(i=0;ifor(d=0;d<2;++d)
hash[0].data[d]=(hash[0].data[d]*base%mod[d]+delta[i])%mod[d];
for(d=0;d<2;++d)hash[0].data[d]=(hash[0].data[d]+mod[d])%mod[d];
/*printf("0:");
for(d=0;d<2;++d)printf("%d ",hash[0].data[d]);
printf("---");
for(d=0;d<2;++d)printf("%d ",cal(0,len,d));
puts("");*/
for(i=1;i+lenfor(d=0;d<2;++d)hash[i].data[d]=(((hash[i-1].data[d]-delta[i-1]*jc[len-1][d]%mod[d])%mod[d]*base%mod[d]+delta[i+len-1])%mod[d]+mod[d])%mod[d];
hash[i].i=i;
/*printf("%d:",i);
for(d=0;d<2;++d)printf("%d ",hash[i].data[d]);
printf("---");
for(d=0;d<2;++d)printf("%d ",cal(i,i+len,d));
puts("");*/
}tot=i;
sort(hash,hash+tot);
int j;
for(i=0;i1)
return0;}
int main
()*/
if(!check(4))
int l=4,r=(n>>1)+1,mid;
while(r-l>1)
printf("%d\n",l+1);
}
COGS血帆海盜
對於已經增廣後的圖,會出現一些反向邊,首先跑一邊最大流,只有對於被增廣的路才有可能成為答案,考慮每一條被曾廣的路,如果他在殘留網路中兩個端點在同乙個強連通分量裡,必然有其他的路徑可以代替這條邊,比如圖中1 2 3 4 構成乙個環3 2 1 4 3,3 2可以替代原來的1 2,所以只有那些被增廣後,起...
90 s games(90年代遊戲)
外掛程式介紹 最經典的坦克遊戲 坦克大戰 最熱血的遊戲 魂斗羅 簡單又好玩的闖關遊戲 超級瑪麗等等,這些小遊戲想必各位小夥伴們曾經都玩過,今天就讓大家一起來回味回味經典。90 s games 90年代遊戲 重拾90年代的遊戲的最佳集合。使用說明 將90 s games 90年代遊戲 新增至chrom...
COGS 2259 異化多肽
qaq 很明顯我們是可以搞一下指數生成函式的 然而複雜度是o m n2 o m n2 無法優化 換個方式做生成函式 a x 表示 質量為 x 的 氨基酸有幾類 b x i 0 a x i b x i 0 a x i 顯然答案是b x 中的n次項係數 上面的式子即為乙個無限等比數列求和 度度的公式s ...