原创 HDU5510(KMP)

2015ACM/ICPC瀋陽賽區B題,現場賽用strstr函數暴力水過的。。。 題目大意:給你n個字符串,找出最大的i,使得在i之前的字符串都不是第i個串的子串。 注意數據量,減少kmp的次數,出現子串即不再進行匹配。 #include<

原创 HDU3033(分組揹包)

題目大意:給你n個物品,每個物品有一種品牌(可以相同),也有一個價值,每個牌子至少買一個物品,同一個物品不能買多次,問怎樣使買到的物品的價值最大? #include<cstdio> #include<algorithm> #include

原创 HDU5569(動態規劃)

題目大意:給你一個n*m的矩陣,從左上角走到右下角,經過的數字爲a1,a2...ak,問怎樣能使a1*a2+a3*a4+a5*a6+...+ak-1*ak的值最小。 思路:很明顯是一道動態規劃問題。 轉移方程:當行列的和爲偶數時,dp[i

原创 POJ2031(最小生成樹)

題目大意:給你n個球的座標以及半徑大小,求MST。如果兩球相切或相交,那麼間距爲0;如果兩球相離,那麼間距爲球心距減去半徑。#include<cst

原创 HDU2544(最短路)

題目大意:如題。。。#include<cstdio> #include<algorithm> #include<cstring> #include<

原创 HDU5475(線段樹)

題目大意:一個數X,最開始的值爲1。有兩個操作,操作1:讓X乘y;操作2:讓X除以第n次操作乘的那個數字y。 思路:此題可以利用線段樹來搞,每次操作

原创 HDU5592(線段樹)

題目大意:給你一個序列,表示在這個位置以及之前,有p[i]個逆序對,求此序列。 #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include

原创 ZOJ1089(dfs)

#include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <string> #include <iostream> using

原创 HDU5479(簡單dp)

題目要求每一個子串都不是括號匹配串,實際上只要使得"()"不是該串的子串即可,所以最終串一定是連續個"("以及連續個")",統計出最小代價。 #include <cstdio> #include <algorithm> #include

原创 HDU5131(模擬)

題目大意:給出n個人的姓名,以及殺敵數量,按照殺敵數從高到低排序,數量相同的按照姓名字典序排列。再給出m個查詢,輸出對應人物的比他殺敵數多的人數+1,和他並列多的人數+1,如果無並列的,第二項不輸出。 思路:數據量很小,直接模擬。 #in

原创 HDU1284(完全揹包)

#include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <cmath> #include <iostream> using

原创 HDU5480(前綴和)

題目大意:給出大小爲n行m列的棋盤,k個車,q個詢問(左下角座標和右上角座標的矩形)。問:所給出的車能否攻擊到整個查詢的矩形。 思路:要麼每行都有車,要麼每列都有車,所以前綴和記錄一下行和列的車的個數即可。 #include <cstdi

原创 HDU4267(樹狀數組)

題目大意:給一數列,有兩種操作,一種是在[a, b]內,對(i - a) % k == 0 的所有值加上c,另一種是查詢某個位置的值。 思路:由於本題k<=10,所以一共有1+2+3+...+10 = 55種餘數,所以可以開55個樹狀數組

原创 HDU3584(樹狀數組)

題目大意:給一個N階立方體,初始值爲0,。有兩種操作:1、對所給長方體內所有的值取非;0、查詢該點的值。 思路:三維樹狀數組,更新長方體的8個頂點。 #include <cstdio> #include <algorithm> #incl

原创 HDU4786(生成樹)

題目大意:給你N個點,M條邊,權值爲1的是白邊,權值爲0的邊是黑邊。問能否找到一棵生成樹,使生成樹的白邊個數恰好爲斐波那契數。 思路:求一遍最大生成樹,在求一遍最小生成樹,如果在兩個值之間有斐波那契數的話,輸出Yes,否則輸出No。當然,