![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
————DP————
Accepted丶
A C M 之 路 丶
展开
-
UVA 1025 A Spy in the Metro (简单DP)
#include <bits/stdc++.h>#define INF 0x3f3f3f3f #define eps 1e-6 typedef long long LL; const double pi = acos(-1.0); const long long mod = 1e9 + 7; using namespace std;const int MAXN = 55; const int MAX原创 2016-07-16 10:39:41 · 464 阅读 · 0 评论 -
UVA 437 - The Tower of Babylon(DAG最长路)
题目大意 有n种长宽高为x,y,z的砖头,每种都有无数个。 砖头可以用不同姿势的方向来盖。 砖头a以某种姿势可以盖在砖头b上,当且仅当a的底部的长宽都要比b的底部长宽要小。 问最高可以建多高?思路 对于一个x,y,z砖头,它可以有3种姿势放置。 (前两个为地面,后一个为高) x, y, z x, z, y y, z, x 把每种姿势都记录下来,变成了有3*n种固定姿势的砖头。原创 2016-07-17 11:46:24 · 310 阅读 · 0 评论 -
UVA1347 Tour (DP)
题目大意:有n个点,给出x、y坐标。找出一条路,从最左边的点出发,严格向右走到达最右点再严格向左回到最左点。问最短路径是多少?分析: 1.首先需要将原问题转化为,两个人A、B同时从最左边的点出发,一起严格向最右点走,且经过所有点一次(除了最左点和最右点)。这与原题的要求具有等价性。 2.先自然想到用dp(i,j)表示A走到i,B走到j时的状态还需要走多远到终点(注意表示的是还有多少到终点原创 2016-07-17 12:46:44 · 2143 阅读 · 3 评论 -
Millionaire(2008 APAC local onsite C)
int M,X; double P;double dp[2][(1 << MAX_N) + 1];int main() { //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); ios_base::sync_with_stdio(0);cin.tie(0); int n = 1 <<原创 2017-03-28 21:03:57 · 875 阅读 · 0 评论 -
LCS(Longst Common Subsequence)
//LCSint n,m; char s[MAX_N],t[MAX_M];int dp[MAX_N + 1][MAX_M + 1];void solve() { for(int i = 0;i < n;i++) for(int j = 0;j < m;j++) { if(s[i] == t[j]) dp[原创 2017-03-28 22:20:52 · 373 阅读 · 0 评论