poj3616 基础的动态规划算法 《挑战程序设计竞赛》
生活随笔
收集整理的這篇文章主要介紹了
poj3616 基础的动态规划算法 《挑战程序设计竞赛》
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2018-2-5
一開始在考慮這個R要怎么處置,后來突然想到直接把他加到結束時間e后面即可,然后對endtime進行排序,然后找出狀態轉移方程即可,由于給的數字比較大,我們可以先寫成二維的,然后再對二維數組進行壓縮變成一維的。。。
#include<iostream> #include<cstring> #include<algorithm> using namespace std;const int N = 1000000, M = 1000; int dp[2*N+1]; int n,m,r;struct cl{int s,e,v; }x[M+1];bool cmp(struct cl a,struct cl b){if (a.e==b.e) return a.s<b.s;else return a.e<b.e; }int main(){while (cin>>n>>m>>r){memset(dp,0,sizeof(dp));for (int i=1;i<=m;i++){cin>>x[i].s>>x[i].e>>x[i].v;x[i].e=x[i].e+r;}sort(x+1,x+m+1,cmp); for (int i=1;i<=m;i++){for (int j=x[i].e;j<=n+r;j++){dp[j]=max(dp[j],dp[x[i].s]+x[i].v);}}cout<<dp[n+r]<<endl;}return 0; }總結
以上是生活随笔為你收集整理的poj3616 基础的动态规划算法 《挑战程序设计竞赛》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nodejs-url网址解析的好帮手
- 下一篇: 2017-2018-2 20179202