原创 POJ - 2836 Rectangular Covering(狀壓DP+幾何)

題意:平面上有n個點,要求用矩形去覆蓋所有的點,每一個矩形至少覆蓋兩個點,每一個點可以被重複覆蓋,求最小的能覆蓋所有點的矩形的面積。 思路:枚舉兩個點,一個矩形覆蓋這兩個點的最小面積是以這兩個點爲對角線,所以我們可以得到個矩形,求出這些矩

原创 POJ - 2886 Who Gets the Most Candies? (線段樹+反素數)

題意:有個小盆友圍成一圈,從第個小朋友開始,選中誰誰退圈,每個小朋友都有一個數,這個數爲正數表明下一個選中的小朋友即爲這個小朋友左邊第個小朋友,爲負數表明下一個選中的小朋友爲這個小朋友右邊第個小朋友。每個小朋友退圈即可獲得的因子數的糖果數

原创 POJ - 1061 青蛙的約會 (擴展歐幾里得找最小正整數解)

題意:兩隻青蛙在圓圈上追趕,圓圈我們可以看作是一條首尾相接的數軸。設青蛙A的出發點座標是x,青蛙B的出發點座標是y。青蛙A一次能跳m米,青蛙B一次能跳n米,兩隻青蛙跳一次所花費的時間相同。總長L米。現在要你求出它們跳了幾次以後纔會碰面。

原创 判斷合法出棧序列

PIPI現有a-z 26個小球模擬出入棧操作,小球按照a~z的順序壓入棧,在棧頂的元素可以隨時被取出,在遊戲開始前給出任意26個字母的一些排列,問是否能夠由出棧順序得到這個排列。 輸入 輸入包含多組測試用例。  每組測試用例包含26個字

原创 POJ - 3320 Jessica's Reading Problem(尺取法)

題意:求最少的連續讀的頁數能讀到所有的知識點 思路:尺取法,把所有的知識點的編號放到set裏求出知識點的個數,在尺取過程中用map記錄當前以學知識點的個數。 #include <map> #include <set> #include

原创 POJ - 3279 Fliptile(反轉)

題意:一個01矩陣,每翻轉一個格子,這個格子的上下左右的格子都會被翻轉,要把整個矩陣的格子都翻轉爲0,求需要翻轉的最小次數,最小次數的解爲多個時,輸出字典序最小的一組。解不存在輸出IMPOSSIBLE。 思路:如果暴力搜索的話有種翻轉的方

原创 POJ - 1795 DNA Laboratory(狀壓DP)

題意:個只包含字母的字符串,求出包含這n個字符串的最短字符串 思路: 1.首先除去相同的和被包含在其它字符串裏的字符串 2.求出,把第i個字符串放到第j個字符串前花費 3.狀壓,,第個字符串在最前面,狀態爲情況下的最小花費 邊界: 遞推方

原创 FZU - 2203 單縱大法好(貪心+二分)

兩年前的坑現在補上,經典的貪心+二分 #include <stdio.h> #include <string.h> const int maxn = 200005; int N,K,A,M; int pos[maxn]; bool vi

原创 POJ - 3411 Paid Roads(Dijkstra+狀壓)

題意:個城市,條單向路,每一條路從到,如果之前已經經過了城市,花費可以爲也可以爲,沒有經過城市,花費爲,求從城市到的最小花費 思路:求最短路,多加一維表示已經走過的點的集合。 #include <stdio.h> #include <s

原创 POJ-2991 Crane(線段樹)

題意:給出n條線段,開始時n條線段一詞首尾相連,與地面垂直,c次操作,每次操作給出,,讓線段和之間德角度變爲度,並輸出第n條線段的前端座標。 思路:線段樹,區間存儲的線段的向量座標,父親節點的向量座標就等於兒子節點的向量座標相加,在存儲一

原创 POJ - 1330 Nearest Common Ancestors(倍增LCA)

裸的求LCA,用的倍增,就是爲了記個模板,似懂非懂,以後有時間就弄懂這些算法(大概率不會了。。。。。。) #include <queue> #include <stdio.h> #include <string.h> using na

原创 HDU - 3345 War Chess(優先隊列+BFS)

兩年前的坑現在補上,廣搜,把點加入優先隊列裏 #include <stdio.h> #include <string.h> #include <queue> using namespace std; int n,m,total; cha

原创 POJ - 2441 Arrange the Bulls (狀壓DP)

題意:頭牛,個牛棚,每個牛棚只能有一頭牛,每頭牛都只能在自己喜歡的牛棚裏,給每頭牛安排位置,總共有多少種安排方案? 思路:每個牛棚可以放牛也可以不放牛,個牛棚,故可以用狀壓,表示狀態下,給前i頭牛分配牛棚的方案數     ( & ,)

原创 POJ - 3734 Blocks(矩陣快速冪)

題意:個球,有紅黃藍綠4種顏色,要求紅球和綠球有偶數個,有多少種排列方式? 思路: :紅球與綠球都爲偶數的個數 :紅球與綠球恰有一個爲偶數的個數 :紅球與綠球都爲奇數的個數 #include <stdio.h> #include

原创 POJ - 3254 Corn Fields (狀壓DP)

題意:個格子,有些可以放牛,有些不可以放牛,放的牛不能相鄰,問共有多少种放牛的方案? 思路:狀壓,表示第行狀態爲前行的方案數目,外層循環一行一行的枚舉,內層嵌套枚舉第行的狀態和第行的狀態,最後答案爲 #include <stdio.h>