poj2836
题意:给出n(2<=n<=15)个点的坐标,用定点为整点的长方形来覆盖,求长方形和的最小值
思路:枚举长方形的状态,以及它能覆盖点的集合为st,枚举点的集合状态state,时间:O(n^2*2^n)
dp[state|st]=min(dp[state|st],dp[state]+area(v[i],v[j]));
注意:由于要求长方形顶点是整点,对于在一条直线上的点,可以用宽为1的长方形来覆盖
Code:poj2836.cpp
uva12045
题意:一些只有{a,b}的字符串,第i个串为str,第i+1个串为第i个串中所有a换成b,所有b换成ab
已知第a个长度为n,第b个长度为m,求第c个的长度%(10^9+7)
思路:设初始串为x个a,y个b:
f(a)*x+f(a+1)*y=n
f(b)*x+f(a+1)*y=m
求出x,y值,然后ans=(f(c)*x+f(c+1)*y)%mod
Code:uva12045.cpp
uva12037
题意:n个椅子染色,有k种选择,保证环形的情况下,任意连续三个颜色不一样(1<=n,k<=10^9)
思路:n<=4的时候特判,大于4的时候画状态图分析:每次从左边插入,last表示最后两位,recent表示插入位置往右两位的状态。
state recent last feature be reached formula
N ab cd 四位均不同 N,C,D N=(k-4)*N+(k-3)*C+(k-3)*D;
A ab ac 11同 N,D A=N+D;
B ab bd 21同 N,C B=N+C;
C ab cb 22同 A,F C=(k-3)*A+(k-2)*F;
D ab da 12同 B,E D=(k-3)*B+(k-2)*E;
E ab ba 12、21同 A E=A;
F ab ab 11、22同 F F=B;
根据状态图得到的formula构造矩阵,初始矩阵为N=k*(k-1)*(k-2)*(k-3),B=k*(k-1)*(k-2),其余为0
最后答案为 N+C
Code:uva12037.cpp
hdu4846
题意:求最大子方块
思路:二分边长
Code:hdu4846.cpp
zoj3537
题意:判断凸包,求最小花费将凸包分割成若干个三角形,给出花费公式cost=abs(a.x+b.x)*abs(a.y+b.y)%p
思路:区间dp,dp[i][j]表示从i到j全部分成三角形的最小花费,dp[i][j]=min(dp[i][k]+dp[k][j]+cost[i][k]+cost[k][j]);
Code:zoj3537.cpp
loj1422
题意:参加n场舞会要穿不同的衣服,可以把一件衣服套在另一件上,不同的舞会可能穿同一件衣服
思路:区间dp,dp[i][j]表示从第i场舞会到第j场至少需要的衣服件数,dp[i][j]=min(dp[i+1][k]+dp[k+1][j]) (if(a[i]==a[k]))
Code:loj1422.cpp
poj2955
题意:求字符串中子序列中配对的括号的最大长度
思路:区间dp,do[i][j]表示从i到j建配对的最大长度,dp[i][j]=max(dp[i][k]+dp[k+1][j])
Code:poj2955.cpp
hdu2254
题意:求某一段时间内,从v1到达v2的方案数
思路:构造矩阵
Code:hdu2254.cpp
ccnu4406
http://ccnu.acmclub.com/index.php?app=problem_title&id=613&problem_id=4066
题意:跟08年哈尔滨那道一样,判断能不能通过(哈尔滨那道题找了两个oj暂时都在维护中,想起来可以改一下拿过来交)
思路:随着角度的变化,高度先增后减,三分判断最大值是否小于过道
Code:ccnu4066.cpp
poj3301
题意:求一个最小的正方形覆盖30个点
思路:旋转坐标系,三分旋转的角度
Code:poj3301.cpp
poj1141
题意:给定一个括号的字符串,求用最小的括号使它合法,输出路径
思路:区间dp+递归输出路径
dp[i][j]表示从i到j变成合法所需加的最小括号数,if(s[i]匹配s[k]) dp[i][j]=dp[i+1][k-1]+dp[k+1][j];[a[i][j]表示中间过渡用到k值,然后递归输出路径
Code:poj1141.cpp
poj1651
题意:n个数字中取出n-2个,首位不取,每次取的时候得分为以它为中心三个数字的乘积,求和的最小值
思路:区间dp,用dp[i][j]表示从第i位到第j位首位不取,取完所有数字的最小值
dp[i][j]=min(dp[i][k]+dp[k][j]+a[i]*a[k]*a[j]),i,j接近的时候特判
Code:poj1651.cpp