原创 HDU 3313 Key Vertex (bfs)

求從s到t的關鍵點數量,所謂關鍵點即是st路徑必經之點 首先隨便找一條st路徑(方便起見就st最短路吧),那麼關鍵點肯定不會出現在這條路徑之外。 然後從s開始bfs,若搜到該路徑上的點,不將新點加入隊列,並且維護一下s點最遠能bfs到的路

原创 Codeforces Round #232 (Div. 1) ABCD

題目鏈接 代碼鏈接 個人感覺本場題目的排列真是坑爹啊。。CD明顯應該和AB換個位置- -b(好吧其實就是弱) A: 將所有數分解質因數並統計每個質因數的個數,對於質數pi,有ci個,設f(ci)表示把這ci個相等的數放到n個箱子裏的方法種

原创 HDU1754 I Hate It (線段樹java版)

會寫java了咩哈哈哈 import java.util.Scanner; public class Main { static int t[] = new int[201000<<2]; static int a[] = new

原创 The 14th Zhejiang University Programming Contest

轉載請註明出處 比賽鏈接 A: 略 B: 最多隻有3個數,放心大膽的去暴力就可以了 關於原因暫時不明 C: 各種揹包 按照題目給出的順序從0~12對裝備種類標號 對於種類0~8,做每組最多選一樣的分組揹包 對於種類9,做選0,1,2個的揹

原创 ZOJ Monthly, March 2014

A: 模擬,隊友寫的 B: 轉化到十進制後暴力sqrt(n)判素數,不要問我爲什麼,後面都不是素數。。隊友寫的 D: 二分圖最大權獨立集 對於x^y爲奇數的點i和點j,xi^yi^xj^yj爲偶數,而p也爲偶數,所以gcd至少爲2,所以奇

原创 Codeforces Round #148 (Div. 1) ABC

題目鏈接 代碼鏈接 A: 記S[i] 表示位置從0~i的數的異或值,則 i~j 的異或值等於 S[i-1]^S[j]。要找出滿足任意區間異或值都不爲0的序列,則轉化成滿足任意S[i-1] != S[j]的序列。因此答案爲 A(n,2^m-

原创 Codeforces Round #204 (Div. 1)

題目鏈接 代碼鏈接 A: 貪心。考慮一般情況(即每個數都有小數)題目要求的值即是所有的小數部分之和-n,但是由於有整數的存在,整數可以向上取整,也可以向下取整,因此若有x個整數,則有x個可選擇的'1',藉此來調整answer使其絕對值最小

原创 HYSBZ 1503 鬱悶的出納員 (Treap)

提交了50次後發現BZOJ不能用cin,cout的事情,我就是個大傻逼 Treap實現插入,刪除,第k大,事實證明太久沒敲是會手生的。 #include <stdio.h> #include <queue> #include <al

原创 Codeforces Round #222 (Div. 1) ABD

題目鏈接 代碼鏈接 A: 顯然的思路是從網格中最角落的格子開始一個一個的改成'X',那麼怎麼判斷格子在角落呢?就是從任意空格子bfs一遍後隊列最後面的k個格子。 B: 二分天數day判斷可行性。關於如何判斷:從大於最大ai的student

原创 Codeforces Round #223 (Div. 1) ABCD

題目鏈接 代碼鏈接 A: 操作2的L範圍在1~10W之間,也就是說當序列長度達到10W之後,接下來的操作就只需要存標記就好。 B: 對於操作2,將他之前的操作1都枚舉一遍,如果與當前詢問的子樹有交,則將該x[i]加入set中。關於如何判斷

原创 POJ 3728 The merchant (Tarjan LCA)

題意: 給出一棵樹,有點權,5W次詢問從a走到b交易一件物品能獲得的最大利潤(即在某個節點買入一件物品,在後面的節點賣出)。 正確理解題意花了一天多,淚奔。 解法: 設a,b的LCA爲c,則答案來自a->c,c->b,或者在ac段買入在c

原创 Codeforces Round #221 (Div. 1) ABCD

題目鏈接 代碼鏈接 A: 很容易猜到,1 6 8 9這四個數字的排列A能夠滿足 (i*10000 + A)%7 == 0,那麼好了,按照其他數字任意排列後對7取餘的結果來安排這4個數字的順序,最後把所有的0輸出即可。 B: O(n^2)求

原创 UVA12538 Version Controlled IDE (可持久化Treap)

題目鏈接 維護一個文本,支持:p位置插入串,p位置刪除長度c的串,查詢歷史版本某個位置開始的串。強制在線 #include <cstdio> #include <cstring> #include <algorithm> using n

原创 Codeforces Round #208 (Div. 2) ABCD

題目鏈接 代碼鏈接 A: 1000個點組成999條線段,直接暴力判是否有線段相交 B: 按題目描述構造出沒有隨機字母的a串,檢查a是否爲b的子序列。再判一下a,b串的組成合法性 C: 差不多就是模擬題。對於當前需要處理的兩個0之間的區間,

原创 2013 長沙Regional I題:LIKE vs CANDLE (樹dp)

下面用0表示LIKE,1表示CANDLE。 設狀態fw[u]表示以節點u爲根的子樹的 0-1 的最大值,用rv[u]表示以節點u爲根的子樹的 1-0 的最大值。則: fw[u] = max(rv[u]-cost,sigma(fw[v]))