17.11.06
阿新 • • 發佈:2017-11-09
判斷 scan true bsp static 忘記 每一個 類型 計算
- 上午模擬考試
- Prob.1(AC)
題意:給出一個4*4的黑白棋盤,然後有一個騷操作:選擇一個位置,是它和它的上下左右的四個格子的顏色取反。問最後達到全黑或全白狀態的最小步數。
1).BFS計算出到達每種狀態的最小步數。O(4*216)
2).劉汝佳先生書上的方法。
由於每一個位置最多只會被操作一次。(顯然啦)
所以枚舉第一行的那些位置被操作,然後後面每一行的操作就是要為了把上一行的異種顏色清幹凈。所以之後的操作是唯一固定,只需要判斷到最後一行是否合法就好了。 O(2n*n2,可以處理更大的數據
- Prob.1(AC)
- Prob.2(CE)
並查集維護。
(為了加速,在函數前面寫了inline,不僅沒啥用,反而因為這個忘記寫了函數類型(void,int、、、),cena編譯不過。但我的dev是怎麽編譯過的,還那麽正確的運行著???真的是涼了
但讀入數據之大(9,000,000++),
scanf要7~8s,
普通讀入優化要2~3s
只有寫神級讀入優化,只要0.8s,附上代碼:
char gc(){ static char s[100005]; static int bit=100000,p,len; if(p>=len) len=fread(s,1,bit,stdin),s[len]=EOF,p=0; return s[p++]; } void read(ll &x){ static int f;static char ch; x=0; f=1; ch=gc(); while(ch<‘0‘||‘9‘<ch){if(ch==‘-‘)f=-1;ch=gc();} while(‘0‘<=ch&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=gc();} x=x*f; }
- Prob.3(AC)
一個狀壓dp,維護出F[S],表示集合S的最大值
- Prob.4(不計分)
一個差分約束。
(原來相鄰的兩個點不一定要建邊啊。是要看是否有隱含條件的。)
17.11.06