圖論一般技巧新建虛點。
新建2^k個虛點。
四種轉移。普通點n,新點k。
n->n 1
n->k(自己的) 0
k->k 0
k->n 1
本題bfs,邊權為1,則最先掃到最優,要避免重複掃。
使虛點只用來更新一次,只入隊一次,從而避免重複考慮。
列舉子集:見小技巧標籤的部落格。
對於每個點列舉子集,(2^k)^2;
但是要是每個點只掃一次。
發現子集如果掃過,子集的子集一定掃過。
所以每次只考慮下一層子集,放到佇列裡即可。
o(n+m+2^k)
#include#define f(i,a,b) for(rg int i=a;i<=b;++i)view code#define ll long long
#define rg register
#define il inline
#define pf(a) printf("%d ",a)
#define phn puts("")
using
namespace
std;
intread();
/*單向雙向
*/#define n 300010
#define m 1000010
#define id 2000010
intn,m,k,val[n],ok[id];
intto[m],fir[m],head[id],cnt;
il void add(int x,int y)
int dis[id],vis[id],id[1500010
],gx[id];
deque
q;il int max(int x,int y)
#define inp(x) q.push_front(x)
#define inb(x) q.push_back(x)
#define out() q.pop_front()
intmain()
rg intu,v,x;
f(i,
1,m)
memset(dis,-1,sizeof
(dis));
inb(
1);vis[1]=1;dis[1]=0
;
while(!q.empty())
}if(!vis[id[x=val[u]]])
if(!gx[x])
}for(rg int j=x;j;j-=j&-j)}}
}else
}for(rg int j=x;j;j-=j&-j)}}
}}
f(i,
1,n)printf("
%d\n
",dis[i]);
}il
intread()
/*g++ 1.cpp -g
./a.out
5 2
5 4 2 3 7
1 4
2 3*/
技巧總結:
樹、圖:邊化點,點化邊,互化。
圖:建立虛點、拆點、源點匯點。
圖到樹:最小生成樹。
樹鏈:1、樹剖 2、倍增 (最終詢問可倍增下放)
測試詳解4 Web測試和App測試的區別
1 相容性測試的區別 在web端是相容瀏覽器,在應用端相容的是手機裝置而且相對應的相容性測試工具也不相同,web因為是測試相容瀏覽器,所以需要使用不同的瀏覽器進行相容性測試 常見的是相容ie6,ie8,鉻,火狐 如果是手機端,那麼就需要相容不同品牌,不同解析度,不同的android版本甚至不同作業系...
效能測試中的4個不可忽視的測試
效能基準測試 穩定性測試 併發測試 容量規劃測試。1 效能基準測試 效能基準測試,通常被稱為 performance benchmark test,是每次對外發布產品版本前 必須要完成的測試型別。效能基準測試,會基於固定的硬體環境和部署架構 比如專用的伺服器 固定的專用網路環 境 固定大小的集群規模...
Junit4測試套件的使用
測試套件就是組織測試類一起執行的 在測試套件中也可以新增其他的測試套件。和新增測試類一樣,直接在suiteclasses裡加入其他測試套件類的名稱就可以了。import static org.junit.assert.import org.junit.test import org.junit.ru...