原创 UVA 1169 Robotruck
dp[i] 表示從原點出發,將前i個垃圾處理的最小距離 dis[i] 表示從原點一直到第i個的總距離 所以 dis[i]-dis[j+1] 表示從第就j+1 到 i 的距離 odis[i] 表示第i個到原點的距離,w[i] 表
原创 hdu 4649 Professor Tian 多校第五場
狀態壓縮——把數據轉換成20位的01來進行運算 因爲只有20位,而且&,|,^都不會進位,那麼一位一位地看,每一位不是0就是1,這樣求出每一位是1的概率,再乘以該位的十進制數,累加,就得到了總體的期望。 對於每一位,狀態轉移方程如
原创 UVA 1424 Salesmen dp入門題
題目大意:給你一個無向聯通圖,在給你一個序列,要求你把它轉換成另一個序列,該序列相鄰兩點的值要麼圖上是聯通的,要麼是相同的,要求修改的點數最小。 設dp[ i ][ j ] 表示從1到第i個位置,以數字 j 爲結尾的最小修改點數,那麼狀
原创 hdu 4647 Another Graph Game 多校第五場
若沒有邊權,則對點權從大到小排序即可。。 考慮邊,將邊權拆成兩半加到它所關聯的兩個點的點權中即可。 因爲當兩個人分別選擇不同的點時,這一權值將互相抵消。 #include <cstdio> #include <cstring> #incl
原创 UVALive 4731 Cellular Network
把n個數分成w組,每個組的值爲這個組加上前面所有組的數字個數之和*這個組的概率之和,要使所有的這些組的和最小。 因爲每個組的概率之和前面要乘係數,而且是越早選越小,那麼我們把所有數字按照從大到小排序,但由於一個組加進去數字如果過多,它
原创 uva 11584 Partitioning by Palindromes dp入門題
dp[i]表示前i個最少構成幾個迴文 所以轉移方程爲 如果(j-i)是一個迴文 則 dp[i]=min(dp[i],dp[j-1]+1) (j<i) #include <cstdio> #include <cstri
原创 UVA 10817 Headmaster's Headache
狀態壓縮dp,用兩位二進制來表示一門課的信息。 code: #include <iostream> #include <string> #include <cstdio> #include <cstring> #include <al
原创 poj 3809 UVaLive 4643 Twenty Questions
#include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <iostream> #include <map> #include <v
原创 hdu 4662 MU Puzzle 多校第六場
所有合法串 以M開始 I+3U 模6 == 4 或 2 MI 例外 #include <stdio.h> #include <string.h> #include <algorithm> using namespace
原创 UVALive 3530 Martian Mining
一個n*m的矩形,每個點有兩種礦,A礦往W方向,B礦往N方向,每個格子上建兩種運送帶,一種方向是w的,一種是n的,要求一個格子最多只能有一種帶,而且傳送帶不能斷,之後能運到邊界纔算有效,而且不能曲折,求收集到的A,B總量最大 設dp[
原创 uva 11552 Fewest Flops
題目大意:給你一個字符串,要你按每組k個按照順序進行分組,每組裏的字母順序任意,然後再按照組的順序拼起來,如果相鄰的幾個相同的字母算一個塊,拼起來後,最少的塊是多少? 所以要最小每組相同字母肯定在一起,所以每組枚舉結尾字母即可,dp[i]
原创 UVALive 3882 And Then There Was One
經典約瑟夫環問題,n個數排成一圈,第一次刪m,以後每k個數刪一次,求最後留下的數。 爲了處理方便,我們約定n個人的編號爲0~n-1,最後答案+1就好,先不考慮m,設f[ n ]爲這n個人最後留下的編號,那麼f[ n ] =( f[ n
原创 UVA 11404 Palindromic Subsequence
逆序後求LCS,然後找出i+j == len情況的最長最小的LCS(子序列在1~i中出現,且其逆序列在i+1到len中出現,對應於迴文串偶數情況), (i+j == len-1情況的最長最小的LCS+str[i+1])(子序列在1~i 中
原创 UVA 11795 Mega Man's Mission
洛克人最初有一把武器,可以殺死某些機器人,每殺死一個機器人,就可以獲得他的武器,每個武器可以殺死某些特定的機器人,計算出殺死這些所有的機器人順序總數? 簡單狀態壓縮DP。dp[ S ] 表示殺死機器人狀態爲S(1表示死,0活着)的總方案
原创 UVA 10564 Paths through the Hourglass
一個由格子組成的沙漏,輸出從上往下的路徑中 和爲s 的方案數,如果路徑數大於0,輸出起點編號最小對路徑中字典序最小對方案。 從底下直接一遍DP上來,中間分成兩段,狀態轉移方程稍微有點不一樣,設d[ i ][ j ][ k ] 表示從