usaco 訓練總結2

2021-07-27 00:21:26 字數 1866 閱讀 5326

usaco 5.3.1

「怎麼做呢?」

「搜唄!」

void dfs(int x,int cnt,int now)

for(int i=1;i<=cnt;i++)

ans[i]=b[i];

return ;

}if(x>p)

return ;

if(vis[now]return ;//剪枝2

vis[now]=cnt;

dfs(x+1,cnt,now);

b[++cnt]=a[x];

for(int j=1;j*a[x]+now<=q;j++)

dfs(x+1,cnt,now+j*a[x]);

}

usaco 5.3.3

這是道強連通分量題,如果一堆學校,其中任意乙個得到訊息其他學校都會得到,那麼就把他們縮成乙個點,然後看整個圖,縮點後有多少個點入度為0,就是傳播訊息的最小開始數;

至於最小擴充套件數,在這個縮點後的圖,一定只有單向邊,而且沒有環,所以只要把它補成一棵「樹」就好了

#include

#include

#include

#include

#include'

#include

#include

using

namespace

std;

int n,ru[105];

bool vis[105][105];

bool jk[105];

int head[105],next[20050],to[20050],cnt;

int head2[105],next2[20050],to2[20050],cnt2;

void add(int f,int t)

void add2(int f,int t)

bool instack[105];

stack

s;int low[105],dfn[105],belong[105],index,colour;

void tarjan(int u)

if(low[u]==dfn[u])

}}void dfs(int x)

}int ans1,ans2;

int main()

}for(int i=1;i<=n;i++)

if(!belong[i])

tarjan(i);

for(int i=1;i<=n;i++)

}}

usaco5.3.2()

這個題看上去像是要在平面上直接,模擬,但那樣複雜度很高。所以可以直接離線求面積。對於每個詢問,四分窗體,如果一片被任意乙個「高度」高於它的窗體全部覆蓋,那麼這片面積為0;如果一片與任何「高度」高於它窗體都不相交,那麼這片面積為這片區域大小;否則繼續遞迴。             

struct chuangti

win[65];

int query(int lx,int ly,int rx,int ry,int nu)

if(win[kl[i]].x1>=rx||win[kl[i]].x2<=lx||win[kl[i]].y11>=ry||win[kl[i]].y2<=ly)

continue;

return query(lx,ly,(lx+rx)/2,(ly+ry)/2,nu)+query(lx,(ly+ry)/2,(lx+rx)/2,ry,nu)+query((lx+rx)/2,ly,rx,(ly+ry)/2,nu)+query((lx+rx)/2,(ly+ry)/2,rx,ry,nu);

}return (ry-ly)*(rx-lx);

}

usaco

usaco訓練總結1

4.2.1 草地排水 裸的最大流 好像不滿足好題的標準。include include include include include include using namespace std struct bian vector tu 1050 bool vis 1050 void add int ...

usaco 訓練總結4

這裡都是些之前在codevs做的但在usaco4章節後沒有找到的 汗 覺得有必要記錄的題目 素數方陣 很刁鑽很刁鑽的暴搜 開始的思路 既然都是質數,那質數的最後一位一定是1,3,7或9,所以先預處理每一位都是1,3,7,9的,各個位和還滿足要求的質數,然後把他們分別列舉填到最後一行,最後一列,然後處...

寒假訓練2 總結

1 hdu 4810 wall painting 組合數 二進位制拆分 2 hdu 5573 binary tree 二進位制思維題 3 hdu 5501 the highest mark 揹包 貪心 4 hdu 5493 queue 樹狀陣列 二分查詢 5 hdu 3639 hawk and ch...