題目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4351 這題囧死了~~~ 耽擱了幾天,終於解決它了~~ 0的字根是0。 非0數a的字根是 a%9==0 ? a%9 : 0 。 ========================================================================================================= 方法一:
題目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4331 方法一是由我寫的求實體矩陣個數的DP + 怪叔叔的YY暴力法(結果證明貌似時間複雜度不是很高)。 方法二是參照CJ牛講的,用優先隊列維護,用樹狀數組求個數。 ============================================================================================ 方法一: DP。。。 用 f[ ][ ]
題目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1247 幫別人解決的問題,字典樹。 題意是求,所有單詞中,有哪個單詞可以由其它兩個組成。 Trick : 1. 兩個單詞公用某些字母,比如說存在 abc 和 cde ,那麼 abcde 這個單詞就不是。 2. 存在不止2個單片語成,比如說 abc 和 cde, 那麼 abccdeabc 或者 abccdee 這個單詞就不是。 其它就不多說了。。。
題目地址: http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3826 分兩種情況計算。 第一種情況,兩個圓水平相切、或者豎直相切。 這種情況很好計算,假設一個(以最大圓直徑為寬、以兩圓直徑之和為長)矩形,在n*m的範圍內有多少放法,計算出來即可。
題目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1394 樹狀數組,一開始想搓了,沒有想到: 當隊頭的數放到隊尾時,隊列中所有數的逆序數都有可能發生改變。。。 於是在扣除逆序數的時候,忘記減去新出現的逆序數! #include<iostream>#include<cstdio>#include<cstring>#define ll (v<<1)#define rr (v&
一眼看見這道的時候,首先就想到了類比,然後就一直寫一直寫,雖然是一種笨的方法,不過,要一行一行敲的話,還可以練練代碼速度,哼哼!邊寫的時候腦海裡邊要想著有些什麼情況比如說一個小數一個整數,小數是0的情況等等,然後,這就是一道純的類比題了!My Code如下:#include<cstdio>#include<cstring>#include<cmath>#define Maxn 310int
題目地址: http://poj.org/problem?id=3669 BFS。 簡單搜尋,記錄每個炸彈落地的時間,在落地之前能走,之後不能走。 #include<iostream>#include<cstdio>#include<cstring>#include<queue>#define bug puts("here");using namespace std;int vis[330][330];int fx[]={0,0,0,1,-1}
魔法學徒 時間限制(普通/Java) : 2000 MS/ 3000 MS 運行記憶體限制 : 65536 KByte總提交 : 20 測試通過 : 6 描述 這裡有一個N*M的大型矩陣,當中充滿了0或1。 小魔法師phk童鞋想從這個大型矩陣中找出一個最大子矩陣,並且這個最大子矩陣全部由1組成。
題目地址: http://poj.org/problem?id=2155 二維樹狀數組入門題,沒什麼好說的,理解二維之後,其實跟一維差不多了。 區間更新,單點查詢。 #include<cstdio>#include<cstring>using namespace std;int n,m;int tree[1001][1001];void update(int x,int y){int
題目地址: http://poj.org/problem?id=2406 KMP 。 NEXT 數組的擴充運用。 求字串的最小迴圈節。(反過來說,就是求最小覆蓋子串:len-next[len]) 我們判斷 NEXT [ LEN ] 就行了,可以得到字串是否重複出現。如果不重複出現,迴圈節為1。否則: 1. 如果重複出現的兩部分,存在重疊,那麼迴圈節一定是len / (len - next[len])。即 len / [非重複部分的長度]。
題目地址: http://poj.org/problem?id=3628 暴力枚舉。 沒什麼好說的。。。 也可以分兩部分,然後二分做,可以節約很多時間。 #include<cstdio>#include<cstring>int p[23],s[23];int main(){int n,i,b,sum,res,tmp,t;scanf("%d%d",&n,&b);for(i=0;i<n;i++){scanf("%d",&s[i]);p[i]=0
電話線 時間限制(普通/Java) : 3000 MS/ 3000 MS 運行記憶體限制 : 65536 KByte總提交 : 38 測試通過 : 13 描述 Farmer John打算將電話線引到自己的農場,但電信公司並不打算為他提供免費服務。於是,FJ必須為此向電信公司支付一定的費用。FJ的農場周圍分布著N(1 <= N <= 1,000)根按1..N順次編號的廢棄的電話線杆,任意兩根電話線杆間都沒有電話線相連。一共P(1 <= P
題目地址 :http://poj.org/problem?id=1961 KMP 首碼數組 NEXT 的使用 。 和這題: http://blog.csdn.net/diannaok/article/details/7887809 一樣。 #include<cstdio>const int MAXN = 1000100;int nxt[MAXN];int get_next(char *ptr){int
題目地址: http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=1071 BFS
中州之旅 時間限制(普通/Java) : 1000 MS/ 3000 MS 運行記憶體限制 : 65536 KByte總提交 : 27 測試通過 : 12 描述 為了慶祝《鬥破蒼穹》的完結,YB,CJ和ZJN決定去中州旅行。但途中會經過可怕黑角域,黑角域由N*N的方形網格組成,設其左上方為起點◎,座標為(1,1),X 軸向右為正,Y軸向下為正,每個方格邊長為1。如所示,三人駕駛的汽車從起點◎出發,駛向右下角終點的中州入口▲,其座標為(N,N)
題目地址: http://poj.org/problem?id=2752 KMP。 考驗對NEXT的理解。 問字串中,含有多少種長度不同的子串,並且這個子串既是這個字串的首碼,同時也是這個字串的尾碼。依次輸出這些長度。 #include<cstdio>#include<algorithm>#include<iostream>using namespace std;const int MAXN = 1000100;int nxt[MAXN];int get_
題目地址 : http://acm.hdu.edu.cn/showproblem.php?pid=1698 線段樹入門題。。。 近期重新寫了一遍,就放了上來。 #include<iostream>#include<cstdio>#define ll (v<<1)#define rr (v<<1|1)#define mmid ((r+l)>>1)using namespace std;const int maxn=100001;int
題目地址: http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=519&page=show_problem&problem=3994 兩種方法。。。 方法一720ms,方法二612ms。 ===========================================================================
題目地址 : http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=519&page=show_problem&problem=3997 這題思路不太好想。 首先先排個序,贏的次數少的人放在前頭。 接下去的判斷方法如下: 前1個人,至少0場勝利,他可能全部敗給後面的人,也可能贏了後面某幾個人。
題目地址 : http://acm.hdu.edu.cn/showproblem.php?pid=1542 這題我做的第一個掃描線題目。 方法: 線段樹 + 掃描線。