原创 HDU4637 Rain on your Fat brother

任意門: http://acm.hdu.edu.cn/showproblem.php?pid=4637 假設所有雨點都不動,那麼可以看做人物向着左上角勻速移動。 求出人物運動的軌跡(一條線段)與所有雨滴的交線段,然後求線段並就可以了。

原创 CF17B Hierarchy

注意到只有q更大的人才能成爲q較小的人的父節點,所以整個樹的根節點一定是q最大的那個人。 把所有人按q從大到小排序,每次加入到圖中q最大的人,因爲所有q比他大的人都已經加入到圖中,所以所有有可能成爲其父節點的人都在圖中了。反言之,如果圖中

原创 計算幾何【轉】

這兩天在學習計算幾何,隨便說說自己的學習過程吧。   基本的叉積、點積和凸包等東西就不多說什麼了,網上一搜一大堆,切一些題目基本熟悉了就差不多了。   一些基本的題目可以自己搜索,比如這個blog:http://blog.sina.c

原创 HDU4576 Robot

很經典的矩陣快速冪題。 注意,如果裸寫的話時間複雜度會是O(n^4*logm),顯然不行。 所以,我寫這篇題解(?明明就是一個tip一樣的東西= =)就是想說: 1. 對稱矩陣的乘積還是對稱矩陣。(重點是下一個↓↓↓) 2. 這個類似於

原创 ZOJ3435 Ideal Puzzle Bobble

mobius反演的入門題。 首先,先抄一遍mobius反演: 已知 f(n) = sigma(d|n, g(d)) 那麼 g(n) = sigma(d|n, mu(d)*f(n/d)) mobius反演的另一種形式: 在某一範圍內,已知

原创 HDU3068 最長迴文

O(n)求最長迴文串 用輔助數組p記錄以每個字符爲中心得最長迴文串的信息。 在字符間插入'#',可以奇偶兩種情況同時考慮。 具體算法部分參考 #include <cstdio> #include <cstring> #include

原创 HDU4675 GCD of Sequence

設g(n)爲最大公約數等於n的方案數(即本題答案),f(d)爲公約數含有d的方案數。 則有關係:f(d) = sigma(d|n, g(n)) 本題關鍵即在於如何求f(d)。 如果沒有(恰好K個數與序列a中不同)這個條件的話,那麼函數f

原创 HDU4633 Who's Aunt Zhang

根據Burnside引理,等價類數目等於所有 f 的不動點數目 C ( f ) 的平均值。 本題模型共有4大類置換,共24種: 1. 不做任何旋轉 K ^ (54 + 12 + 8) 2. 繞相對面中心的軸轉 1) 90度 K ^ (

原创 HDU4682 The Happy Triangles

二分法的好題,推薦! 題目見http://acm.hdu.edu.cn/showproblem.php?pid=4682 解法需要先證明兩個結論,這兩個結論都是基於最優策略的,可以證明若不滿足這兩個條件中的任一個都可以通過調整使其變得更

原创 CF17C Balance

定義壓縮串爲把某字符串中所有連續相同的字母壓縮成一個所形成的的串。如aabbaaaabcc -> ababc 如果原串是A,變形後的串爲B,那麼A的壓縮串A‘和B的壓縮串B',存在這樣的關係:B'一定是A’的字串。 預處理統計A中每個字符

原创 POJ3243 Clever Y

對於任意正整數x,z,p,求滿足x ^ y = z (mod p) 的最小的y 對Babystep_Giantstep算法的擴展 詳細證明請參考http://blog.csdn.net/tsaid/article/details/7354

原创 CF15C Industrial Nim

做這題的時候我發現一個關於異或運算的性質:0-3,4-7,……從模4餘0到模4餘3每4個連續數的nim和均爲0! 然後這題就是很簡單的裸nim題了。 #include <cstdio> #include <cstring> #incl

原创 POJ3590 The shuffle Problem

http://poj.org/problem?id=3590 題目的意思就是求最大的置換週期。很容易知道,整個序列的置換週期等於其中所有小循環的階的最小公倍數,DP求之。 #include <cstdio> #include <cst

原创 POJ1185 炮兵陣地

這道題用DP做有兩種解法,一是三進製表示,我認爲這種應該是比較理想的,但是比較難寫。 另一種就是二進制,不過需要注意的是,每一行的狀態最多隻有60種,所以60*60*60*100加上一些剪枝勉強可以過= = 用dp[i][j][k]表示第

原创 SOJ4293 Product

統計大集合A中所有含奇數個元素的子集S中元素乘積的和!(我已經儘量說的很不饒了= =) 設ans1是A中所有奇數集元素積的和(要求的答案),ans2是A中所有偶數集元素積的和。 賦初值,令ans1=0,ans2=1(方便每次從空集變成單元