原创 hdu 1812 Count the Tetris polya計數

哈哈哈,簡單polya,公式自己推導。 不過這題需要用到大數,很久沒寫Java,調了好久。 import java.math.*; import java.util.*; import java.io.*; public class M

原创 poj 2409 Let it Bead Polya計數

旋轉可以分爲n種置換,對應的循環個數分別是gcd(n,i),個i=0時不動,有n個 翻轉分爲奇偶討論,奇數時有n種置換,每種有n/2+1個 偶數時有n種置換,一半是n/2+1個,一半是n/2個 啃論文,PPT,各種書好久纔看懂Polya定

原创 poj 2369 Permutations 置換水題

找循環節求lcm就夠了,若答案是12345應該輸出1,被坑了下。 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algori

原创 poj 3478 The Stable Marriage Problem 穩定婚姻問題

題目給出n個男的和n個女的各自喜歡對方的程度,讓你輸出一個最佳搭配,使得他們所有人的婚姻都是穩定的。 所謂不穩婚姻是說,比如說有兩對夫婦M1,F1和M2,F2,M1的老婆是F1,但他更愛F2;而F2的老公雖說是M2.但她更愛M1,這樣的婚

原创 poj 2429 Pollard_rho大數分解

先對lcm/gcd進行分解,問題轉變爲從因子中選出一些數相乘,剩下的數也相乘,要求和最小。 這裏可以直接搜索,注意一個問題,由於相同因子不能分配給兩邊(會改變gcd)所以可以將相同因子合併,這樣的話,搜索的層數也變的很少了。 #inclu

原创 poj 1815 Friendship 最小割輸出最小方案

這題卡了好久啊,最小割模型很容易想,拆點就行。就像poj的Thieves一樣 每個點 a拆成 a->a',容量爲1。 其他相連的點 a'->b ,容量爲INF 源連接s',t連接匯 問題在於輸出最小的割集 更好的方法我還不會,只能枚舉。

原创 hdu 4898 LCP+貪心思維

題意:將一個字符串切成k塊,使得字典序最大的那塊最小。 ORZ  WJMZBMR,幾行題解讀了一天才懂。 快速比較兩個子串的大小可以利用LCP(最長公共前綴),比較公共前綴的下一個字符的大小就夠了。 利用這種思想,首先我們可以預處理所有子

原创 uva 10780 Again Prime? No Time. 質因子亂搞

求最大的k   使得 m^k 能被n!整除 m^k就是讓m的每個質因子個數增加了k倍,只要求得n!的質因子能讓m增加多少倍就夠了。當然這裏要取增加倍數最少的。 木桶裝水的量取決於最短的木板。 預處理2-n每個數的質因子情況,由於n有100

原创 poj Command Network 最小樹形圖

規定根節點,求一顆生成樹使得權值最小,但由於是有向圖,所以最小生成樹算法失效。 查資料後得知此類問題叫做最小樹形圖。 解決最小樹形圖問題的朱劉算法,算法核心基於找 【最小弧集->找環,消環縮點】 的思想,來慢慢構造樹形圖。 所有的靈魂都在

原创 二分圖相關題

HDU 1281 由於每行最多放一個,每列最多放一個(不能放置的位置不影響攻擊,就是因爲沒注意這句話,把這題當做行列覆蓋模型做了好久0.0) 所以把行列直接當做二分圖X和Y集,可以放置的點的行列連邊,求出的完備匹配就是第二個答案。 至於第

原创 POJ 3684 Priest John's Busiest Day 2-SAT+輸出路徑

強連通算法判斷是否滿足2-sat,然後反向建圖,拓撲排序+染色。 一種選擇是從 起點開始,另一種是終點-持續時間那個點 開始。 若2個婚禮的某2種時間線段相交,則有矛盾,建邊。 容易出錯的地方就在於判斷線段相交。 若s1<e2&&s2<

原创 SPOJ 839 Optimal Marks 最小割 經典 按位建圖

胡伯濤論文中的一題,經典建模,由於二進制每一位異或不會相互影響,所以我們把問題轉換模型,按位處理。 即已知一些點的標號0/1(還有些可以自己任意改),和一些邊,邊權定義爲兩端點標號的異或,要求邊權和最小的標號方案。 我們聯想到最小割求的是

原创 poj 2154 Color 歐拉函數優化的ploya計數

枚舉位移肯定超時,對於一個位移i,我們需要的是它的循環個數,也就是gcd(i,n),gcd(i,n)個數肯定不會很多,因爲等價於n的約數的個數。 所以我們枚舉n的約數,對於一個約數k,也就是循環個數爲n/k這樣的個數有phi[k]種,證明

原创 FZU - 1759 Super A^B mod C 降冪公式

知道降冪公式這題就很好辦了 B>=Phi(c)的時候可以降冪然後快速冪計算,否則就直接快速冪計算。 這裏的大數對小數取模直接利用取模性質按位取就行了。 //A^B %C=A^( B%phi(C)+phi(C) ) %C #include

原创 hdu 4888 Redraw Beautiful Drawings 最大流

好難好難,將行列當成X和Y,源匯點連接各自的X,Y集,容量爲行列的和,相當於從源點流向每一行,然後分配流量給每一列,最後流入匯點,這樣執意要判斷最後是否滿流,就知道有沒有解,而解就是每一行流向每一列多少流量。 關鍵在於怎麼判斷多解的情況。