原创 poj1733 & Ural 1003 Parity Game (hash+並查集 )

長度爲n的0和1組成的字符串, 然後問第L和R位置之間有奇數個1還是偶數個1. 根據這些回答, 判斷第幾個是錯誤(和之前有矛盾)的。 一旦發現有矛盾了,要馬上跳出循環, 後面的那些數據不用去管他了,否則如果用continue就WA。

原创 poj 1013 great equipment(揹包,dp)

A - Great Equipment Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Descri

原创 sicily 1527. Tiling a Grid With Dominoes

方法如下 二維數組dp[n][m]表示有n列且該列狀態爲m的時候的排列方法數。m用四位二進制表示,第a位表示該列第a行的狀態,1已經覆蓋,0表示沒有被覆蓋。初始狀態爲: dp[1][3]=dp[1][6]=dp[1][12]=dp[1]

原创 ural 1136. Parliament (通過後序遍歷構建二叉搜索樹)

對於一個後序遍歷序列,它可以分解爲   (左子樹部分)(右子樹部分)(根),由於是查找樹,可知(左子樹)<(根)  (右子樹)>(根) 所以對於當前一個區間內的序列[l,r],可以知道r下標對應的數值一定是當前子樹的根,然後找到一個

原创 Ural 1016. Cube on the Walk (bfs滾骰子)

題意:個立方體放在國際象棋棋盤的一個格子上,該立方體每一面都和棋盤的格子一樣大。該立方體每一面都標有一個非負整數。你可以在棋盤上滾動該立方體,在這期間計算立方體底面數字的和。你的任務是找出一條從給定的起點到終點的路徑,使得前面所說的和最小

原创 ural 1203. Scientific Conference(dp)給定N個區間,求最大的不相交的區間數

給定N個區間,求最大的不相交的區間數 //動態規劃,遞推公式:f[i] = max(f[i-1],f[g[i]-1]+1); //f[i]表示時間0~i最多所能聽的報告數,g[i]表示所有以時間 i 結束的報告中,最晚的開始時間。 #i

原创 ural 1024. Permutations (置換羣)

算法: 對於第i個數,模擬計算出其置換週期,記爲ai,答案就是所有ai的最小公倍數。      1 2 3 4 5      4 1 5 2 3 次數:3 3 2 3 2,最小公倍數6. #include <iostream>

原创 Ural 1018 Binary Apple Tree(樹形dp)

題意:一棵二叉蘋果樹,每個樹枝上都有蘋果,求剪枝後剩下Q根樹枝的時候的最大蘋果數量。(剪枝的時候不能連根拔起)思路:TreeDP。先由題給出的關係建立一棵二叉樹,把邊上的蘋果移動到子結點,然後對樹進行自底而上的DP,狀態轉移方程式爲:f[

原创 ural 1180. Stone Game (博弈)

#include <iostream> using namespace std; int main() { int i, j, h; char n[300]; cin>>n; h = strlen(n); j = 0; f

原创 Sicily 1784. Road Toll (Dijkstra變形)

#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> using namespace std; double adj[250][2

原创 拓撲排序

參見ural 1022 #include<stdio.h> #include<string.h> #define MAXD 110 #define MAXM 10010 int N, cnt, e, first[MAXD], next[

原创 Ural 1126. Magnetic Storms

給定一個數組,求M連續的和的最大值。用到的數據結構是單調隊列。 #include <cstdio> #include <deque> using namespace std; struct Node

原创 ural 1022. Genealogical Tree 拓撲排序

#include<stdio.h> #include<string.h> #define MAXD 110 #define MAXM 10010 int N, cnt, e, first[MAXD], next[MAXM], v[MAXM

原创 ural 1017. Staircases(dp)

1017. Staircases Time limit: 1.0 second Memory limit: 64 MB One curious child has a set of N little bricks (5 ≤ N 

原创 sicily 1345. 能量項鍊(dp)

http://soj.me/1345 類似矩陣連乘。 /* dp,n顆珠子,求最後剩下一顆珠子能放出最大能量 d[i][j]表示第i顆珠子開始,長度爲j的珠子所釋放的最大能量 轉移方程: d[i][j] = max(d[i][j] ,d[