pku2406 Power Strings

有一個字串,長度在1000000以內,求它最大的鏈節個數,即把s表示成s'+s'+s'······。求s'的個數。用KMP的思想,求出next數組,然後可以用手畫方法發現從next[length(s)]到length(s)間的字串可以不斷向前推,只要這個長度能被總長度整除,它就是最大鏈節長度,否則就是1.View Code 1 program pku2406(input,output); 2 var 3 i,j : longint; 4 s : ansistring;

poj-3253 Fence Repair **

/* * 3253 Fence Repair.cpp * * Created on: 2011-10-25 * * Huffman + 堆排 * * _int64 讓我WA了無數次, 鬱悶 **/#include <iostream>using namespace std;const int maxn = 50000 + 5;__int64 len[maxn], n, size;inline int left(int i){return 2 * i +

pku1046 Color Me Less

有三維座標中的16個點,然後又有若干點,求每一個點和前16個點中哪個更近。View Code 1 program pku1046(input,output); 2 type 3 node = record 4 x,y,z : longint; 5 end; 6 const 7 oo = 10000000; 8 var 9 color : array[1..16] of node;10 now : node;11

pku3311 Hie with the Pie

給定一個n個頂點的完全有向圖,求從0點出發遍曆所有點之後回到0點的最小路徑長度。網上很多人用floyd之後再dp的演算法,看起來沒什麼意思,這種題正是二維SPFA的用武之地,d[now,state]表示到now點,狀態為state的最短路徑,其中state為把遍曆情況壓縮為位元的十進位值,SPFA之後輸出d[0,(1<<(n+1))-1]即可,由於習慣問題,代碼中我把所有的編號都+1了。View Code 1 program pku3311(input,output); 2

pku2752 Seek the Name, Seek the Fame

有一個長度不超過400000的字串s,求滿足{既是s的首碼,又是s的尾碼}的字串,輸出每一個串的起始位置。首先,它本身滿足條件,接下來,用KMP求出next數組,每次去掉next[i]到i的一段字元,剩餘字串仍滿足條件,直到找到頭為止。View Code 1 program pku2752(input,output); 2 var 3 s : ansistring; 4 next : array[0..500000] of longint; 5

pku1674 Sorting by Swapping

這道題需要涉及到置換群的知識,只需知道一個定理。最小交換次數=元素個數-環的個數。View Code 1 program pku1674(input,output); 2 var 3 number :array[0..11000] of integer; 4 v :array[0..11000] of boolean; 5 n,cases:longint; 6 answer :longint; 7 procedure init; 8 var 9

pku1985 Cow Marathon

求一棵樹的直徑。題目沒說資料範圍,無論如何顯然是O(n)的。這裡用了dfs,先找任一點的最遠點,再從這個最遠點找一次最遠點,後一個的兩點距離就是答案。View Code 1 program pku1985(input,output); 2 type 3 node = ^link; 4 link = record 5 goal,w : longint; 6 next : node; 7 end; 8

pku1125 Stockbroker Grapevine

求一個圖中到其他點的最短路的最大值最小的點和這個值。floyd一遍完事View Code 1 program pku1125(input,output); 2 var 3 f:array[0..300,0..300] of longint; 4 n:longint; 5 procedure init; 6 var 7 i,j,s,x,y:longint; 8 begin 9 fillchar(f,sizeof(f),30);10 for i:=1 to

poj-1330 Nearest Common Ancestors **

/* * poj-1330.cpp * LCA * * LCA入門題 * * 沒有用tarjan的離線演算法, 用了個線上的, 時間複雜度O(n)-O(sqrt(n)) * * height為樹的高度 * 把樹按層次分成sqrt(height)個段,每段sqrt(height)層。 * * 對LCA(x, y) * 先把x, y 匯入到同一段, 由於最多sqrt(height)段, 所以O(sqrt(height)) * 再在同一段內, 按普通方法找到x, y的LCA,

騎士共存問題

題意略過,把棋盤上點交叉黑白染色,壞點為-1,則每個騎士在合理跳躍的前提下總會跳到一個不同顏色的點,我們把這兩個點連邊,問題轉化為最大獨立子集問題,用匈牙利最大資料0.39水過,第9個點用cena暴棧,但是直接運行沒有問題,囧View Code 1 program knight(input,output); 2 type 3 node = ^link; 4 link = record 5 goal : longint; 6

POJ上的LCA問題小結

1330和1470是入門系列,可以說基本上時用來測試板子的  1986比上面兩個稍微多了一個距離,但是本質還是一樣的對於一個詢問d[u,v]=dis[u]+dis[v]-dis[LCA(u,v)]可以一邊LCA一邊動態修改當前點到根的距離  3728其實就是記錄的東西多了一點(1)孩子到父親最大價格(2)孩子到父親最小价格(3)從自己到祖先的最大收益 (4)從祖先到自己的最大收益,這裡的分情況討論只需要手動的畫下草圖,在使用並查集的同時,做更新操作,維護上面提到的四個變數,對於一個查詢,我們用

pku3615 Cow Hurdles

給一個n個頂點的圖(怎麼最近的隨筆都拿這句話開頭^_^),Q條詢問,(x,y),查詢從x到y的路徑上的最大邊的最小值。(Q<=40000)最大最小問題99%都是二分答案,這道題卻偏偏是那1%.用floyd,最後的關鍵語句變成f[i,j]=min(f[i,j],max(f[i,k],f[k,j]))即可。演算法執行後f[i,j]就是問題(i,j)的答案。View Code 1 program pku3615(input,output); 2 var 3 f : array[0..

pku1083 Moving Tables

最大的移動時間取決於被經過次數最多的一個房間,把每個移動看做一個區間,覆蓋1-400的點,特別的,有時區間端點需要加減,因為它會影響後面一個點(前面一個點)。View Code 1 program pku1083(input,output); 2 var 3 cover:array[0..801] of integer; 4 x,y,n:longint; 5 cases:longint; 6 i,j:longint; 7 answer:longint;

pku2456 Aggressive cows

數軸上有n個點,現在有c個點,放在n個點中的c個點中,讓c個點中兩點間最小距離最大。這個最大最小問題就真是二分答案了,然後貪心判定即可。加了一個pascal自身最佳化{$inline on}把140+ms拉到了90+ms。View Code 1 {$inline on} 2 program pku2456(input,output); 3 var 4 x : array[0..100010] of longint; 5 n,c : longint; 6

poj-2752 Seek the Name, Seek the Fame **

/* * KMP **/#include <cstdio>#include <cstring>using namespace std;const int maxL = 400000 + 10;char str[maxL];int next[maxL], stack[maxL];//計算next數組void preKMP(char *p, int len){int k, j;//next[0] = -1 是為了標記第一個值.. 也可以把字元數組往後移一位,這樣next[1]

pku3321 Apple Tree

給你一顆蘋果樹,樹的主幹設為1,每一個分支設為一個數,一直到N,代表這顆蘋果樹。每個分支上面只能最多有一個蘋果。下面是兩種操作,Q 和CC  j  的意思是如果 j 這個枝上面有蘋果就摘下來,如果沒有,那麼就會長出新的一個Q  j  就是問 j 這個叉上面的蘋果總數。先一遍DFS確定樹的形態,再一遍DFS求出每各節點標號後作為根的子樹標號範圍,有DFS性質,這個範圍一定連續,接下來問題轉化為在某一個點加一或減一,查詢區間和,用樹狀數組完成。View Code 1 program pku332

poj-1226 Substrings ***

/* * 1226 KMP * * 用的KMP, O(n^3) * 由於資料規模小, 直接暴力枚舉最短串的各個子串再依次與其他串KMP應該也能過 (複雜度也是O(n^3)) * * 這裡不直接枚舉各個子串, 而是枚舉子串的起點位置, 依次與其他串KMP, 記錄和每個串及其反串的最大匹配長度, * 再以此計算這些值的最小值, 就得到該起點的子串所能達到的最大匹配長度(與剛才的方法其實差不多) **/#include <cstdio>#include

pku3617 Best Cow Line

有一個字串,每次只能從兩端取,求取得的字典序最小的子符序列。每次比較剩餘字串的正向和反向字串的大小,正向大就在尾取,否則在頭取,相當於貪心了吧。View Code 1 program pku3617(input,output); 2 var 3 s1,s2 : ansistring; 4 answer : ansistring; 5 n : longint; 6 procedure init; 7 var 8 i : longint; 9 ch :

pku1917 Automatic Poetry

把一個字串按照特定的符號分成5分,把後四份按照特定的順序插入後一個字串的‘...’處,最後將去掉符號的字串輸出即可。View Code 1 program pku1917(input,output); 2 var 3 s : array[0..6] of ansistring; 4 ss,x : ansistring; 5 cases : longint; 6 i,tmp : longint; 7 begin 8 readln(cases); 9

poj-2170 Lattice Animals *****

/* * 2170.cpp * * 很繁的一個題。。。 * * dfs + hash * 這個速度很慢, 不過答案應該都是對的, 先貼上來吧。。 最近沒時間做了 。 以後再改。。 * * 可以改進的有 搜尋方式 和 hash函數 * * Created on: 2011-10-17*/#include <cstdio>#include <cstring>using namespace std;const int maxp = 5000 + 10;const int

總頁數: 61357 1 .... 10325 10326 10327 10328 10329 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.