dp
搓衣板的正义
越努力,约幸运!
展开
-
状压dp----旅行商问题
首先我们对于较小的节点数目可以根据二进制去压缩,比如说这里的5个点,我们可以用(1<<5)-1 即(1 1 1 1 1)去表示每个点的状态,如果访问过用1 表示,没有访问则用0 表示,这道题是一个状压dp的入门题,但是也是较为经典的一个问题旅行商问题,我们通过判断dp[s][v]的值的情况判断v点是否访问过,这里就是用到了记忆化搜索的思想,当dp[s][v]>0的时候,我们直...原创 2019-03-08 15:37:36 · 282 阅读 · 0 评论 -
Apple Catching
#include<iostream>#include<cstring>#include<algorithm>using namespace std;int dp[1005][35]; //第i分钟时移动j次获得的苹果树量int main(){ int t,w,s[1001]; cin>>t>>w; ...原创 2019-07-23 20:20:19 · 107 阅读 · 0 评论 -
Coins---背包多重部分和问题
背包问题,这是一个多重部分和问题定义:dp[i][j] 指前i种金币凑j时第 i 种硬币的最多剩余个数动态转移方程:dp[i][j]= if(dp[j]>=0) dp[j]=c[i]; else if(j<a[i]||dp[j-a[i]]&l...原创 2019-07-29 18:22:49 · 166 阅读 · 0 评论 -
Dollar Dayz---多重背包+拼接
#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>typedef long long int ll;using namespace std;ll a[1005],b[1005];int main()...原创 2019-07-29 21:37:49 · 138 阅读 · 0 评论 -
Milking Time ---简单DP
贝茜是一个勤劳的牛。事实上,她如此专注于最大化她的生产力,于是她决定安排下一个N(1≤N≤1,000,000)小时(方便地标记为0..N-1),以便她生产尽可能多的牛奶。农民约翰有一个M(1≤M≤1,000)可能重叠的间隔列表,他可以在那里进行挤奶。每个区间我有一个起始小时(0≤starting_houri≤N),一个结束小时(starting_houri <ending_houri...原创 2019-07-27 18:18:39 · 98 阅读 · 0 评论 -
最长上升子序列 O(nlogn)
#include<iostream>#include<cstring>#include<algorithm>using namespace std;int main(){ int T; cin>>T; while(T--){ int dp[10001]; int a[100001];...原创 2019-08-20 16:45:39 · 156 阅读 · 0 评论