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...