倒推消除后效性,dp有贪心的形


类似背包,正着推不知道选和不选谁更优
倒着递推消除前面的影响
以后当前状态对后面有影响时,可以倒着推,消除后效性

dp有贪心的形,如最大、最小等
#include<bits/stdc++.h>
using namespace std;
int const N=1e4+7;
int n,k;
vector<int>v[N];
int f[N];
int main(){
	cin >> n >> k;
	for(int i=1;i<=k;++i){
		int a,b;cin >> a >> b;
		v[a].push_back(b);
	}
	for(int i=n;i>=1;--i){
		if(v[i].size()){
			for(int j=0;j<v[i].size();++j){
				f[i]=max(f[i],f[i+v[i][j]]);
			}
		}
		else f[i]=f[i+1]+1;
	}
	cout << f[1];
	return 0;
} 


全部评论

相关推荐

11-19 18:44
已编辑
成都理工大学 Java
程序员花海:我面试过100+校招生,大厂后端面试不看ACM,竞赛经历含金量低于你有几份大厂实习 这个简历整体来看不错 可以海投
如何写一份好简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务