Codeforces #186(div 2)D. Ilya and Roads
来源:互联网 发布:mac版谷歌dhc插件下载 编辑:程序博客网 时间:2024/06/11 21:01
Everything is great about Ilya's city, except the roads. The thing is, the only ZooVille road is represented as n holes in a row. We will consider the holes numbered from 1 to n, from left to right.
Ilya is really keep on helping his city. So, he wants to fix at least k holes (perharps he can fix more) on a single ZooVille road.
The city has m building companies, the i-th company needs ci money units to fix a road segment containing holes with numbers of at least li and at most ri. The companies in ZooVille are very greedy, so, if they fix a segment containing some already fixed holes, they do not decrease the price for fixing the segment.
Determine the minimum money Ilya will need to fix at least k holes.
The first line contains three integers n, m, k (1 ≤ n ≤ 300, 1 ≤ m ≤ 105, 1 ≤ k ≤ n). The next m lines contain the companies' description. The i-th line contains three integers li, ri, ci (1 ≤ li ≤ ri ≤ n, 1 ≤ ci ≤ 109).
Print a single integer — the minimum money Ilya needs to fix at least k holes.
If it is impossible to fix at least k holes, print -1.
Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64dspecifier.
10 4 67 9 116 9 137 7 73 5 6
17
10 7 13 4 158 9 85 6 89 10 61 4 21 4 108 10 13
2
10 1 95 10 14
-1
#include<bits/stdc++.h>using namespace std;#define ll long longll dp[303][303];ll num[303][303];const ll inf=0x123456789ABCDE;int main(){ll m,n,i,j,k,a,b,c,ans=inf,s;for(i=0;i<=302;i++){fill(num[i],num[i]+302,inf);fill(dp[i],dp[i]+302,inf);}dp[0][0]=0ll;cin>>n>>m>>s;while(m--){cin>>a>>b>>c;num[a-1][b]=min(num[a-1][b],c);} for(i=1;i<=n;i++){ for(j=n;j>=i;j--){ num[i+1][j]=min(num[i+1][j], num[i][j]); num[i][j-1]=min(num[i][j-1], num[i][j]); } }/*for(i=0;i<=n;i++){for(j=0;j<=n;j++) cout<<num[i][j]<<' ';cout<<endl;}*/for(i=1;i<=n;i++){for(j=0;j<=i;j++){dp[i][j]=dp[i-1][j];for(k=0;k<i;k++){dp[i][j]=min(dp[i][j],dp[k][j-i+k]+num[k][i]);}}}/*for(i=1;i<=n;i++){for(j=1;j<=n;j++) cout<<dp[i][j]<<' ';cout<<endl;}*/for(i=n;i>=s;i--) ans=min(ans,dp[n][i]);cout<<(ans==inf?-1:ans)<<endl; }
- Codeforces Round #186 (Div. 2)---D. Ilya and Roads
- Codeforces #186(div 2)D. Ilya and Roads
- Codeforces Round #186 (Div. 2) D Ilya and Roads DP 单调优化
- Codeforces 313D Ilya and Roads 题解
- Codeforces 313D- Ilya and Roads
- Codeforces Round #293 (Div. 2)D. Ilya and Escalator
- Codeforces Round #293 (Div. 2) D. Ilya and Escalator
- Codeforces Round #293 (Div. 2) D. Ilya and Escalator
- 【DP】 Codeforces Round #293 (Div. 2) D. Ilya and Escalator
- Codeforces Round #293 (Div. 2)-D. Ilya and Escalator
- codeforces 303 D. Ilya and Roads(动态规划)
- codeforces 313D Ilya and Roads (区间dp)
- Codeforces 313D Ilya and Roads【Dp+思维】
- Codeforces Round #293 (Div. 2) -- D. Ilya and Escalator (DP)
- Codeforces Round #293 (Div. 2) D. Ilya and Escalator (概率DP)
- dp(Codeforces Round #293 (Div. 2)D. Ilya and Escalator)
- Codeforces Round #293 (Div. 2)D. Ilya and Escalator(概率DP)
- Codeforces Round #293 (Div. 2)D.Ilya and Escalator——概率dp
- LruDiskCache
- 反射
- FaceBooK/infer-Mac下安装Java分析环境
- 【数据结构】跳跃列表 SkipList
- 时间格式化函数strftime
- Codeforces #186(div 2)D. Ilya and Roads
- LCD12864液晶使用-ST7920
- NIO系列6:流行 NIO Framework netty 和 mina 性能测评与分析
- Invert Binary Tree
- 二分+贪心
- OpenVPN下载、安装、配置及使用详解
- C#类的理解
- 用presentingViewController实现左右切换视图
- 数据库基线