原创 hdoj 5724 Chess 博弈初學

組合博弈 就是轉化成取石子模型,然後把se函數通過mex運算求出來,幾個獨立的遊戲的se[i]值抑或起來是0後手贏,非零前手贏 #include <cstdio> #include <cstring> #include <algo

原创 hdoj 5834 Magic boy Bi Luo with his excited tree 樹形dp

假設 1 爲 根節點 dp[i][0] 代表從自己出發選擇到兒子節點最後必須返回自己的最大價值 dp[i][1] 代表從自己出發選擇到兒子節點最後可選擇不回來的最大價值 並記錄最後選擇的離開節點 id[i] 樹形dp先跑一遍

原创 poj 1635 Subway tree systems 判斷樹的同構 樹的最大最小表示法模板

想象成括號匹配,dfs把同優先級的括號由小到大按字典序排個序就是樹的最小表示法了 最大一個意思 #include<cstdio> #include<cstring> #include<algorithm> #include<io

原创 codeforces 55D Beautiful numbers 數位dp

dp[i][lcm][mod] i 推到第幾位 lcm 爲 比i高的位的值的最小公倍數, mod爲此時的數值 %(lcm(1, 2, 3, 4, 5, 6, 7, 8, 9) = 2520)的價值 dp[i][lcm][m

原创 poj 2887 Big String 塊狀鏈表

操作太少 所以分塊然後直接線段樹尋找塊插入後面就行了 //塊狀鏈表 #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #define

原创 hdu 3501 篩素數 + 容斥模板

#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #define mod 1000000007ll

原创 poj 1903 Jurassic Remains 中途相遇法

中途相遇法就是 2^n種狀態 不全部枚舉 先枚舉2^*(n/2)個狀態 再枚舉後 n/2個 2^(n/2)種轉態 再與前面 2^(n/2)個相匹配這樣複雜度會降很多,二分的思想 #include<cstdio> #include<

原创 codeforces Educational Codeforces Round 16 D. Two Arithmetic Progressions 擴展歐幾里得

先用exgcd等式求k的通解 然後根絕函數的單調性確定可選整數的區間注意點很多有點噁心 然後求個數就行了 坑點是整數運算兩個數相除 a/b 的結果爲正返回小於等於結果的第一個數,結果爲負返回大於等於結果的第一個數 //1 9

原创 poj 2480 Longge's problem 關於歐拉函數和積形函數推導

已知歐拉函數是積性函數 當 n = m1 * m2 m和m2互質 已知∑gcd(i, N) 1<=i <=N. 的值等於 ∑phi(n/i) * i 1 <= i <= n && n/i ==0 因爲兩個數a, b要使他們

原创 Codeforces Round #367 (Div. 2) 十字鏈表

建立一個單向的十字鏈表 每個元素有兩個指針 一個指向右元素一個指向下元素 然後兩個矩形互變時 把對應四個邊的右指向和下指向互換就實現了兩個方塊的位置互變了複雜度由o(n^2)優化到O(n) 最後通過指針指向一個個輸出各個位置的

原创 poj 3225 線段樹1,0互變 全變0全變1模板

區間更新 當這區間值相同時翻轉記錄清0因爲此時值固定翻轉無效了 #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<

原创 Hdu 4335 What is N? 歐拉函數降冪公式 + 循環節

a^n mod c= a^(n mod phi(c) + phi(c)) mod c (n >= phi(c) ) n! mod phi(c) = 0 n!的因子只需包含 phi(c) 因爲 這題phi(mod) 不會太大

原创 Codeforces Round #368 (Div. 2) E. Garlands 二維樹狀數組

枚舉每條鏈 把每條鏈上的點的價值都加到樹狀數組去,然後枚舉詢問把每個包括這條鏈的一部分的詢問的答案添加這部分答案,用樹狀數組查詢。。。。 時間複雜度 q*k*log(n)*log(m) 可怕明顯超時啊cf機子跑得太快了居然都過了

原创 hdu 2204 Eddy's愛好 容斥

根據指數的質數分解進行容斥 比如 k = a^3 且 k = b ^ 5,那麼 k = c ^ 15 所以 a 的可選個數 加 b的可選個數減去c的可減個數就是總的個數了因爲 a^3和b^5有重複的 #include<cstdi

原创 hdu 3709 Balanced Number 數位dp

瞎猜的規律:除0以外 每個數只有一箇中心或者沒有,中心是本題定義的中心 dp[i][mid][sum] 代表給第i位填數, 中心點定義爲mid, 比i高的位與中心的距離爲sum 距離定義左正右負 坑點數組要開大和0要特殊