2012成都網路賽賽後 缺CHJ

2021-06-09 22:43:49 字數 1661 閱讀 5896

應該用線段樹寫,我是塊狀鍊錶水過了

#include#include#include#includeusing namespace std;

typedef long long ll;

const int n=320*320;

struct query

q[n];

int a[n],sz[n],n;

ll sum[320][5];

int main()

printf("%d\n",sap.sap(s,n+d,n*2));

}return 0;

}

c counting formations (

hdu 4290

)先求出g(g(g(n)))每一層的迴圈節

#includeusing namespace std;

int main()

cout<

記迴圈節為a=222222224,b=183120,c=240.

則g(g(g(n)))%mod=g(g(g(n%c)%b)%a)%mod,再利用矩陣二分算一下即可:

#include#includeusing namespace std;

typedef long long ll;

struct mat

mat mul(mat &b,int mod)

mat cal(int n,int mod)

return *this=c;

}};

int g(int n,int mod)

int main()

return 0;

}

①由乙個數組成,

由抽屜原理可知

長度一定不超過n,否則會存在長度為a時與長度為b時對n取模結果相同,即迴圈節為b-a+1,且迴圈中存在某個數%n==0

②由兩個數組成,一定可以。

對任意n,則長度1-n且全為1的數中一定存在兩個長度i,j的數對n取模相同,現在用較大的數減去較小的數,則結果為111111000000,由兩個數組成。

對於每次計算,只需要用pre[k]指向第一次k=x%n對應的x。現在只要保證第一次搜到k時對應的x最小,那麼每次從pre[0]一直找到pre[w]=-1,對應就是答案。

#include#include#includeusing namespace std;

const int n=10010;

int q[n],pre[n],val[n];

bool vis[n];

char s[n],ss[n];

void bfs(int x,int y,int n,int k)

if(!vis[tmp=(np*k+x)%n]) q[++up]=tmp,pre[tmp]=np,val[tmp]=x,vis[tmp]=1;

if(!vis[tmp=(np*k+y)%n]) q[++up]=tmp,pre[tmp]=np,val[tmp]=y,vis[tmp]=1;

}return;

} int main()

return 0;

}

j one and one story (

hdu 4297

)

2012杭州網路賽賽後 缺ACDI

a boomerang hdu 4410 最小費用流,建 inf邊保證n個點都被訪問到 include include includeusing namespace std const int n 222,m 111111 const int inf 0x3f3f3f3f mincostmaxflo...

11年成都網路賽

今天把去年成都的網路賽做了一下,去年是一題不會哇,現在也挺吃力,還有幾題不會,有空再來看 attack 樹狀陣列,這題樹狀陣列節點n記錄的是wall n 和wall n 1 被炮擊的差 include include include includeusing namespace std define...

hdu 4288 2012成都網路賽

線段樹學的遠遠不夠啊,網路賽的時候一直不知道怎麼做,後來看了大神報告,才學了一下。線段樹每個節點 記錄 sum 0.5 即位置mod 5 的5種結果的數對應的和。cnt記錄區間有多少個數。更新的時候 只要把對應子區間的sum i 加起來就可以了 include includeusing namesp...