1. 程式人生 > >Wannafly挑戰賽1,2

Wannafly挑戰賽1,2

可能 排列 const tro bit div blog images sin

做了好久了,今天大佬講題,好厲害,弱雞只會幾道水題。

Treepath

給定一棵n個點的樹,問其中有多少條長度為偶數的路徑。路徑的長度為經過的邊的條數。x到y與y到x被視為同一條路徑。路徑的起點與終點不能相同。

奇數層到奇數層,偶數層到偶數層。

Xorto

給定一個長度為n的整數數組,問有多少對互不重疊的非空區間,使得兩個區間內的數的異或和為0。

異或題好厲害,問題變成四個點的異或值為0。

厲害的位置是他的遍歷方式O(n*nlogn)

左區間+1個元素,將產生一些新的異或值,有區間探測。(枚舉的起點,不重復不遺漏)

#include <bits/stdc++.h>
 
using
namespace std; const int maxn = 1e3+5; int a[maxn]; int sets[3276800]; int main() { //freopen("in.txt","r",stdin); int n; cin>>n; for(int i = 1; i <= n; i++) scanf("%d",&a[i]); long long cnt = 0; for(int i = 1; i <= n; i++) { int
s = 0; for(int j = i; j <=n; j++) { s^=a[j]; cnt+=sets[s]; } s = 0; for(int j = i; j >= 1; j--) { s^=a[j]; sets[s]++; } } printf("%lld\n",cnt); return 0; }

MMSet2

給定一棵n個節點的樹,點編號為1…n。 Q次詢問,每次詢問給定一個點集S,令技術分享
, 你需要求出技術分享。 其中dist(u,v)表示樹上路徑(u,v)的邊數。

答案就是 (點集的直徑+1)/2,理由想一想就好,代碼待填,嘻嘻~~~

Color

給一個沒有重邊的二分圖, 要求給邊染色. 有公共點的邊不能同色. 問最少用多少種顏色, 並任意構造一組方案. 答案是:度數的最大值。 分析:肯定他是理論的下界,那麽怎麽才能知道他是理論的上界呢?嘻嘻。跳過, 然後染色。 Cut 給你一個長度為n的序列,你每次可以將一個序列分割成兩個連續的的子序列,
分割的代價為原序列的總和。
現在允許你在初始時將序列重新排列一次。
問分割成n個長度為1的序列的最大總代價是多少? 哈夫曼 Travel

精靈王國有N座美麗的城市,它們以一個環形排列在Bzeroth的大陸上。其中第i座城市到第i+1座城市花費的時間為d[i]。特別地,第N座城市到第1座城市花費的時間為d[N]。這些道路都是雙向的。

另外,精靈們在數千年的時間裏建造了M座傳送門,第i座傳送門連接了城市u[i]與城市v[i],並且需要花費w[i]的時間通過(可能有兩座傳送門連接了同一對城市,也有可能一座傳送門連接了相同的兩座城市)。這些傳送門都是雙向的。

小S是精靈王國交通部部長,她的職責是為精靈女王設計每年的巡查路線。每次陛下會從某一個城市到達另一個城市,沿路調查每個城市的治理情況,她需要找出一條用時最短的路線。

枚舉特殊點。

Wannafly挑戰賽1,2