2012年1月30日 星期一

PKU2229-Sumsets

題目:http://poj.org/problem?id=2229

待補

2012年1月29日 星期日

PKU2455-Secret Milking Machine

題目:http://poj.org/problem?id=2455
無向帶權圖有N(200)個點M(40000)條邊,現在想找出T條從點1到達點N的路徑
並且這T條路徑使用的邊不可重複
單個邊的路程越長的話,FJ的行跡也越容易暴露
找出T條夠秘密的路徑讓最長的那條路長度最短、報告這個長度

PKU2454-Jersey Politics

題目:http://poj.org/problem?id=2454

無言指數破表的一題XDDDDDDDD

可是又不算水題,乾脆直接丟無內容好了

PKU3169-Layout

題目:http://poj.org/problem?id=3169
有N(1000)隻牛站在數線上,座標x1,x2,...,xn、並且有x1<=x2<=...<=xn
以及給出ML(10000)條互相喜歡的關係,牛p喜歡牛q希望彼此距離不超過r
還有MD(10000)條互相討厭的關係、希望彼此距離至少超過s
問滿足條件的情形下,最大的xn-x1是多少?
如果條件矛盾輸出-1,答案無限大輸出-2

PKU2393-Yogurt factory

題目:http://poj.org/problem?id=2393
連續N(10000)週每週都有不同的優格生產單位成本、以及當週訂單量
除了當週立即生產滿足訂單之外,
也可以預先生產好、以每單位每週S的成本保存
問滿足全部N週訂單所需的最小生產成本

程式碼就不附了

貪心、意外很水的金組題

2012年1月28日 星期六

PKU2456-Aggressive cows

題目:http://poj.org/problem?id=2456
Farmer John的乳牛們是很Aggressive的
現在數線上有N(100000)個牛舍一字排開
一個牛舍可以裝一隻牛
以及現在想要放M隻牛進去
牛之間的距離越近的話就越容易幹架(真是Aggressive)
所以FJ希望牛之間隔的越遠越好,也就是找出一種分配方案
使得最近的牛隻之間間隔距離可以最大化
輸出這個值

PKU3168-Barn Expansion

題目:http://poj.org/problem?id=3168
給出N(25000)個不重疊的矩形,惟矩形之間可能共邊或共點
所謂可擴張矩形,是那些「不和任何其他矩形共邊或共點」的矩形
問這樣的可擴張矩形有幾個?

2012年1月26日 星期四

PKU3013-Big Christmas Tree

題目:http://poj.org/problem?id=3013
程式碼:http://codepad.org/iTWsHhPr

最短路,待補

2012年1月25日 星期三

PKU2374-Fence Obstacle Course

題目:http://poj.org/problem?id=2374
(請參考原文敘述的"INPUT DETAILS")
我這裡把它想像成SuperMario那樣2D重力的世界
有N(50000)個平台,分別高度是1,2,3,...,N、高度0就是地面
給出這些水平平台在x軸上的左右座標
現在你的起點是無限高空的S
一旦採到空中就會直直的往下掉不能控制
問最少要走水平的幾步,最後才能到達地面的x=0位置?

(我盡力了…好像越來越複雜、還是看原文吧…囧)

2012年1月22日 星期日

PKU3173-Parkside's Triangle

語法練習題,沒什麼好說的

2012年1月20日 星期五

PKU2375-Cow Ski Area

題目:http://poj.org/problem?id=2375
有個棋盤W*L(500*500),每格有它的高度(地形棋盤)
滑雪的規則是這樣的:
1.每次走上下左右一格
2.只能從地形高的格子走到低的格子或一樣高的格子
現在Farmer Ron (不是FJ!!!)想要為他的滑雪場造一些纜車,
「一架纜車」可以為地形圖上任意兩格提供無條件的雙向連結
問最少要架幾架纜車,才能使得所有格子之間都可以互相到達?

PKU3048-Max Factor

找出質因數最大的數,必須小心該數本身是質數這種情形
還有如果只有1的話要輸出1...

PKU3051-Satellite Photographs

給個棋盤,問最大塊的連通塊有幾格?DFS水過

PKU3050-Hopscotch

題目:http://poj.org/problem?id=3050
在5*5棋盤上進行跳格子,每個格子上有數字
每次任選起點,可以任選上下左右跳一步(可以跳之前跳過的)
總共跳五步、包含起點有六個數字
問有多少種不同的跳格子序列?

程式碼:http://codepad.org/ueMxzyrU
單純的爆搜問題,利用STL的set來幫忙判重複

PKU3049-Securing the Barn

簡單明瞭的遞回爆搜問題,值得推薦

2012年1月17日 星期二

PKU3041-Asteroids

題目:http://poj.org/problem?id=3041
給一個N*N的棋盤(500*500),以及M個小行星的座標
現在Bessie有個武器,發射一次可以把一行或一列的小行星毀滅掉
問至少要發射幾次才能毀滅全部小行星?

PKU1094-Sorting It All Out

題目:http://poj.org/problem?id=1094
有N(26)個字母代表的變數(從A開始的前N個字母),以及M條由「小於」構成的關係式
目標是找出這些變數確切的由小到大序列
如果前x條關係式就發現矛盾、或前x條關係即可確定有唯一解都應報告
上述都不成立,應報告無解


程式碼:http://codepad.org/zU4HXHf5
總之就是個[拓撲排序],容易錯的陷阱大概被我敘述掉了(看discuss的)

PKU3026-Borg Maze

題目:http://poj.org/problem?id=3026
有個R*C(50*50)的迷宮,裡面有些障礙物#、1個掃描器S、不超過100個外星人A
現在掃描器會往上下左右一格放置粒子(是為1步)、粒子下次又會再四面放射…(如此循環)
粒子碰到外星人就會把外星人也變成和掃描器一樣
問全部粒子至少要走幾格呢
(我敘述得有點濫…)

另外提醒,這題的輸入資料蛋疼…行尾會有莫名的空格
然而表達迷宮空地的字元也是空格…請審慎選擇輸入的方法

PKU1789-Truck History

題目:http://poj.org/problem?id=1789
(這英文題敘真是他媽的難懂…)
簡言之,有N個點(2...2000)的無向帶權圖、由N個字串來代表
不同點之間連線的權重,就是字串間「相應位置字母不同的各數」
好比說aabca和bbbca的距離就是2
試著選N-1條邊讓全點連通,選中的權重和Q、讓1/Q最大

2012年1月16日 星期一

PKU2240-Arbitrage

題目:http://poj.org/problem?id=2240
程式碼:http://codepad.org/IUp6DyUD

基本和PKU1860一樣、惟輸入較繁瑣,請參考:
http://nphard001.blogspot.com/2012/01/pku1860-currency-exchange.html

PKU2253-Frogger

題目:http://poj.org/problem?id=2253
現在有n個座標點(2...200),青蛙1想跳去找青蛙2
可是它希望可以有個適合的路線,好讓它每次跳的最大腳程可以盡量小(比較輕鬆)
(想像腳力J的青蛙可以跳距離d<=J,在石頭1能抵達石頭2的前提下求最小的J)

PKU1062-昂貴的聘禮

題目:http://poj.org/problem?id=1062
這真是一道PKU名題(?)
很可惜沒有給出「等級值」確切的範圍,我討厭這種題目

程式碼:http://codepad.org/YHCXXNx4
(無腦做法:直接枚舉等級範圍一直BellmanFord…)

PKU1860-Currency Exchange

題目:http://poj.org/problem?id=1860
有N種不同的貨幣以及M種兌換方法(100,100),Nick擁有幣種S數量V
這M種兌換方法A B R->C R<-C
A,B表示對應的兩種貨幣編號
R是兌換比率、C是佣金,每次兌換要先扣佣金、再乘比率
(第一對RC是A->B 第二對反之)

問Nick是否有辦法通過某種兌換方法讓他的錢越換越多(當然,要是S種貨幣)

PKU3259-Wormholes

題目:http://poj.org/problem?id=3259
給定一張有向帶權圖,有N個點、M條雙向正權邊、W條單向負權邊
(N,M,W至多500,2500,200)
問圖上是否存在負環

PKU2394-Checking an Alibi

題目:http://poj.org/problem?id=2394
有N個點M條邊(500,1000)的無向帶權圖,點編號1是起點
對詢問的哪些點最短路徑長<=P

2012年1月15日 星期日

PKU3170-Knights of Ni

題目:http://poj.org/problem?id=3170
有個W*H(1000*1000)的棋盤,上面有一些空格、障礙物、果子
現在Bessie從一個位置出發,她可以走相鄰上下左右的空格
Bessie要摘到任一個果子、再送去給受傷不能走的KnightNi
問最少要走幾格
另外,在摘到果子以前Bessie不能和KnightNi站在同一格

PKU2378-Tree Cutting

題目:http://poj.org/problem?id=2378
題如其名,給一個有N(10000)個節點的無根樹,
問有哪些節點被拔掉以後,殘餘的各分塊節點數皆不超過N的一半?
(換句話說,這樣的點如果當樹根、所有子樹的總點數<=N/2)

PKU2376-Cleaning Shifts

題目:http://poj.org/problem?id=2376
有N(25000)個正整數對表示的線段[ai,bi],
問至少選幾條才能完全覆蓋[1,T] ([1...1000000])
不可能覆蓋則輸出-1

2012年1月13日 星期五

PKU2377-Bad Cowtractors

題目:http://poj.org/problem?id=2377
給N個點M條邊(最多1000,20000),求最大生成樹權重
求不出來必須輸出-1

(最近喜歡秒斬算法裸題…)

PKU2485-Highways

題目:http://poj.org/problem?id=2485
給出帶權無向圖N(3...500)個點間的連線距離
想要選一些連線建造高速公路
所有點之間都有路可通的前提下,最長的那條邊要盡量小
問那條邊的權重是多少?

2012年1月12日 星期四

PKU3167-Cow Patterns

題目:http://poj.org/problem?id=3167
給N(100000)個正整數(1..25),以及K(25000)個數字的"排名格式"
問有哪些位置i,可以使A[i...i+K-1]滿足A[i+k]在這段數中排名恰好為B[k]
好比說範例測資
5 6 2 10 10 7 3 2 9
1 4 4 3 2 1
答案就只有3一個,因為:
2 10 10 7 3 2
1 4 4 3 2 1
恰好2是第1小、3是第2小、7是第3小、10是第4

---
程式碼(假解):http://codepad.org/B4rZJgiu (47.48行表達了答案介於2000~3500)
程式碼(排名法):待補

這裡我正解有點難產了...囧 所以待補
假解本身有一點捏、可以先參考這裡:
http://poj.org/showmessage?message_id=168920

2012年1月10日 星期二

【筆記】優良專題文章

在一些特定的主題、google能找到更精妙的解釋方法
它們多數是來自個人blog,個人的心得筆記下來造福大眾
這裡記下一些我非常喜歡的文章和大家分享:

2012年1月7日 星期六

PKU1961-Period

題目:http://poj.org/problem?id=1961
給一字串S,問對於所有的i-前綴 (指S[0...i-1]),
答出所有能達成如A^k形式的位置和對應k值(並且k>1)

程式碼:http://codepad.org/HOaY6qI0
和以下兩題類似原理的題目當同一個系列,待補內容
http://nphard001.blogspot.com/2011/11/pku3461-oulipo.html
http://nphard001.blogspot.com/2011/12/pku2406-power-strings.html

參考教程(神牛matrix67原著):http://www.matrix67.com/blog/archives/115
堪稱最詳細最好懂的KMP算法講解

(我想,字串匹配應該算是數據結構類
畢竟有Trie有後綴數組,沒道理KMP不放一起)

2012年1月6日 星期五

【筆記】USACO-Training心得

前些日子猛然覺得,要是都比TOI了還沒從USACO-Training畢業、一定會後悔
毅力全開之下果然不出4天就把最後倒數10題做完了

===================
先說說這系列的缺點好了…(我想很少有人願意說自己AC題目的不是吧)
整個系統採取的是一章一節、一板一眼,作完一節才能看下一節的題目
可惜的是整個難度的配布其實不算是理想的簡單到難
只有第一章簡單題特多、第五章爆難,(主觀因素吧)第三章有些都可以殺爆第四章了
然而四五章也充斥不少那種,該說是太簡單呢還是太奇怪,總之就是不明所以的題目

2012年1月5日 星期四

PKU3659-Cell Phone Network

題目:http://poj.org/problem?id=3659
有個由n個點組成的無根樹
選一個點建收訊塔,那麼該點和相鄰的點都可以收到訊號
問最少要蓋幾個塔才能覆蓋全部n個點
(即最小支配集)

PKU3174-Alignment of the Planets

題目:http://poj.org/problem?id=3174
(我看了很久都看不出來題目敘述和Planets有什麼關係…)
有n個整數座標點,列出所有三點共線的三點組合

程式碼:http://codepad.org/QruEHXvF

USACO銅組題

意外的solved人數很少

N只給到770很明顯希望大家作O(n^3)、直覺簡單好懂的一題

勉強算是計算幾何吧

O(n^2lgn)也是可以的(只不過這題無用武就是)

PKU3278-Catch That Cow

題目:http://poj.org/problem?id=3278

程式碼:http://codepad.org/NRDWxBSC

FJ在數線上追牛,他可以+1 -1的移動、座標*2瞬移

問最少要幾步能追到牛

由於整個搜索空間並不大、直接開個queue把數線上0...200000全部BFS掃過就可以了

比起迷宮類的BFS問題簡單,是值得考慮的初學用題

PKU3100-Root of the Problem

和2109很像的水題(都是求n次方根到整數位)

不過有鑑於b和n實在太小,直接枚舉答案就過了…

PKU3673-Cow Multiplication

實作下去發現是非常有意思的水題

因為這可是一個誤植版的大數乘法呢!

PKU1753-Flip Game

題目:http://poj.org/problem?id=1753

程式碼:http://codepad.org/ijwNkAEk

翻旗遊戲,枚舉2^16種翻法我想是最好寫的一種

由於是全部枚舉、暴力搜索,就放C1-搜索吧

(跟直解StraightForce還是有點不太一樣的)

PKU2255-Tree Recovery

題目:http://poj.org/problem?id=2255
樹節點以字母表示,給出中序和前序表示法、輸出後序表示法


程式碼(來自劉汝佳算法競賽入門經典):http://codepad.org/13A7plbs

經典問題(PKU訓練計畫居然說它是水題…這題對初學者太不水了吧)

整個作法其實很簡潔,看了程序就懂、就不PO解題報告了

PKU3006-Dirichlet's Theorem on Arithmetic Progressions

一道水題、範例測資給得夠多

說起來1 1 1這種特例也給了、真是夠仁慈

(題目的Title真是有夠長...)

PKU1083-Moving Tables

水題、直接照作就可以了

把簡單的題目敘述拖長真是太有ACM風格了

PKU2159-Ancient Cipher

水題,給兩字串A,B,加密可以任意排列、任意映射(不一定是凱薩)

問A是不是B加密來的

PKU3299-Humidex

給T,D,H三個值的其中兩個,依照公式求出第三個值並輸出

第一次用了cmath裡的exp和log...受教了

2012年1月4日 星期三

PKU2031-Building a Space Station

三維空間點的最小生成樹,事實上我不知道這算不算水題?

好歹基礎算法就標個無內容好了

PKU2187-Beauty Contest

題目:http://poj.org/problem?id=2187
給N個平面上的座標點(最多50000),找出各點對中距離最遠的一對並輸出距離
程式碼(非正解):http://codepad.org/Eu8JV5UB
事實上我覺得這題很怪就是…不少人直接枚舉凸包點就過了
另外這題的測資裡會出現重複的點、與題敘不符
(我是照我原本的作法再多判+1的點、就過了)

(解題報告待補)

PKU1113-Wall

題目:http://poj.org/problem?id=1113
順時鐘給出由n個點組成的城堡輪廓(是簡單多邊形)
現在要造一道城牆包住城堡、並且城牆上任一點和城堡任一點的距離不能小於L
問最短城牆的長度

(題目沒說要多筆輸入...)

【題單】ACM訓練計畫(poj,pku訓練計畫)

一份廣為流傳的題單,近期要開始刷了
利用手邊1-10000名解題資料,對各題號附上了連結和括弧內(AC人數)
各位可以自行複製HTML code後
搭配分析自己使用者的AC表去過濾、自由使用

2012年1月2日 星期一

PKU1196-Twofive

題目:http://poj.org/problem?id=1196
(IOI2001,USACO5.5也有收錄)
現在把A...Y總共25個字母、填到一個5*5方塊裡,好比說
ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
如上的方塊型式,轉成字串型式則有ABCDEFGHIJKLMNOPQRSTUVWXY
現在25-語言是一些單詞組成的,就像上面的字串形式
然而這些25-語言的方塊形式的字母序都具有「由左而右遞增」以及「由上而下遞增」這兩種特性
按照字典序排列,第二個單詞是ABCDEFGHIJKLMNOPQRSUTVWXY、由第一個單詞交換UT組成
要求輸入單詞能算出是字典序第幾個、輸入數字能輸出對應編號的單詞

(USACO第五章最後一道AC的題目…倒數三題了)