Codeforces 358D【DP】】的更多相关文章

思路:  dp[i][0] 代表取的时候左边没有 dp[i][1] 代表取的时候右边没有 dp[i][2] 代表取的时候左右都没有 dp[i][3] 代表取的时候左右都有 然后自己转移吧= =. 注意两个区间端点:  如果旁边有取a[i], 如果没有取b[i].  只有一个的时候取a[i].... 太狗了,这题意! #include<bits/stdc++.h> using namespace std; typedef __int64 LL; const int INF=0x3f3f3f3f;…
题意: n g dough  m种商品? 每种有ai stuffing, 拿bi stuffing + ci dough -> di tugriks rest c0 dough -> d0 tugriks 求最大的tugriks 思路: dough是爸爸, dp[i] 代表 在花费 i 情况下 前 j 个 商品的最大. 枚举在 k g dough 下的各种收入情况,取最大: 大致分成两个部分,用ai + bi 获得的钱,剩下的dough去干嘛得到. #include <bits/stdc…
总结:能这么DP就这么写! 多练位运算标记. #include<bits/stdc++.h> using namespace::std; const int N=55; const int INF=0x3f3f3f3f; int n, m, dp[N][2][2][2]; char s[N][N]; bool isdigit(char ch) { if(ch>='0' && ch<='9') return true; return false; } bool isl…
题意: 给你n个数,每次只能让一个数+1,或者-1,目标是最终使这个序列构成一个非递减的序列: n是5e3,复杂度n^2内.值是1e9: 思路: 可以发现子结构是保证一个区间的非递减, 如果只是dp[a][b]代表在[a,b]上需要的最小步数,这样很难处理a,b位置的值,且不构成递推性: 所以可以在递推中(前i个)去dp以 j 值为末端的区间需要的最小步数. dp[i][j]=min(dp[i][j],min(dp[i][k]+cost); //k∈[1-j]; 然而j值是1e9,且特么n是5e…
题意: 给你n个数,然后让这些数相加组合,然后在这些组合的数里可以再相加组合搞出给定 k,输出这些组合的数. 思路: DP. //在枚举到第i个coin的时,dp[i][j],i 肯定能被a[i]组合, //然后再枚举<=a[i]的部分,dp[i][j]的具体意义就是在coin值是i的时候,能用j去组合. //为了防止重复利用coin,从j枚举到a[i]; //最后dp[k][h]==1的把h塞到容器里去,最后输出. #include <bits/stdc++.h> using name…
题意: 在一个n*m的矩阵中有两只虫子,一只从左上角向右下角移动,另外一只从左下角向右上角移动. 要求: 1.第一只虫子每次只能向左或者向下移动一格,另外一只只能向上或者向右移动一格. 2.两只虫子的路径最多只能重合一点. 3.求解两只虫子路径中除去重合那点其余各点的权值之和最大. 思路: 1.显然这题需要枚举所有可能的相交的点. 2.将问题转化成从四个角向可能的交点的四条路的权值最大. 3.为了保证路径只能有一个交点,我们考虑从可能的交点的上面的点通往上侧的两个角,左面的点通往左侧的两个角以此…
[CodeForces - 1225E]Rock Is Push [dp][前缀和] 标签:题解 codeforces题解 dp 前缀和 题目描述 Time limit 2000 ms Memory limit 524288 kB Source Technocup 2020 - Elimination Round 2 Tags binary search dp *2200 Site https://codeforces.com/problemset/problem/1225/E 题面 Examp…
Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 所以 最多走7步 我们不妨设 (7, 7) 为原点,然后 dp[0][7][7] = 1 因为 N == 0 的时候 方案数只有一个 那就是 不动吧.. dp[i][j][k] i 代表第几步 j k 分别表示 目前的位置 一个点 在一张图里面本来有八个方向可以走 这里六边形 我们只取六个方向就可…
HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8768 Accepted Submission(s): 2831 Problem Description This is a problem from ZOJ 24…
HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10886 Accepted Submission(s): 3925 Problem Description Given three strings, you are to determine whether the third str…