2014-2015 ACM-ICPC, Central Europe Regional Contest (CERC 14) [Gym-100543G]
2017-07-18 21:19
686 查看
2014-2015 ACM-ICPC, Central Europe Regional Contest (CERC 14)
[Gym-100543G]最后一题,训练完看了别人的代码,发现是区间dp,dp的是时间区间,先要将时间离散化,然后是时间的区间的选择问题,当时就是不知道要怎么组合区间的选择,画图往贪心去想只能推出一个最少要攻击多少次的次数,没有想到可以用区间dp考虑这种麻烦选择。
[Gym-100543G]最后一题,训练完看了别人的代码,发现是区间dp,dp的是时间区间,先要将时间离散化,然后是时间的区间的选择问题,当时就是不知道要怎么组合区间的选择,画图往贪心去想只能推出一个最少要攻击多少次的次数,没有想到可以用区间dp考虑这种麻烦选择。
#include<bits/stdc++.h> #define time ttt using namespace std; const int MAXN = 310; const int INF = 1e9; struct SEG { int l,r,c; friend bool operator < (const SEG &a,const SEG &b) { if(a.r!=b.r) return a.r<b.r; else return a.l<b.l; } } seg[MAXN]; int dp[MAXN*2][MAXN*2]; int time[MAXN],tot; int main() { if (fopen("in.txt", "r") != NULL) { freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); } int t; cin>>t; seg[0]={0,0,0}; while(t--) { int n; scanf("%d",&n); tot=0; for(int i=1; i<=n; i++) { scanf("%d%d%d",&seg[i].l,&seg[i].r,&seg[i].c); time[tot++]=seg[i].l; time[tot++]=seg[i].r; } sort(time,time+tot); 4000 tot=unique(time,time+tot)-time; sort(seg+1,seg+n+1); for(int i=1; i<=n; i++) { seg[i].l=lower_bound(time,time+tot,seg[i].l)-time+1;//把时间离散成了从1开始到tot结束 seg[i].r=lower_bound(time,time+tot,seg[i].r)-time+1; } for(int len=2; len<=tot; len++)//枚举时间区间的长度 for(int i=1; i+len-1<=tot; i++)//起点 { int j=i+len-1;//终点 int id=0; for(int k=1;k<=n;k++) { if(seg[k].l>=i&&seg[k].r<=j&&seg[k].c>seg[id].c)//如果满足这个条件的,就意味着这个敌人只能在这个区间中解决掉,不能被dp[i][k-1]或dp[k+1][j]解决 id=k;//最强的敌人 } if(id==0) dp[i][j]=0;//如果没有人需要解决就不需要花费,说明已经被小区间给解决了。 else { dp[i][j]=INF;//初始化 for(int k=seg[id].l;k<=seg[id].r;++k) { dp[i][j]=min(dp[i][j],dp[i][k-1]+dp[k+1][j]+seg[id].c);//枚举分割点,通过区间dp之前的最优小区间推出大区间 } } } printf("%d\n",dp[1][tot]); } return 0; }
相关文章推荐
- 【codeforces】2014-2015 ACM-ICPC, Central Europe Regional Contest (CERC 14) F Vocabulary【dp】
- 2015-2016 ACM-ICPC, Central Europe Regional Contest (CERC 15) F.Frightful Formula(大数NTT)
- 2017-2018 ACM-ICPC, Central Europe Regional Contest (CERC 17)
- Problem C - Sums ACM/ICPC Central Europe Regional Contest 2014
- Problem I - Bricks ACM/ICPC Central Europe Regional Contest 2014
- [CF Gym 100827C] Containment [2014-2015 ACM-ICPC Pacific Northwest Regional Contest C]
- 2014-2015 ACM-ICPC Northeastern European Regional Contest (NEERC 14)
- 2013-2014 ACM ICPC Central European Regional Contest (CERC 13) I题Crane
- Problem D - Wheels ACM/ICPC Central Europe Regional Contest 2014
- 2014-2015 ACM-ICPC East Central North America Regional Contest (ECNA 2014)
- Codeforces GYM 100548 F - Color 2014-2015 ACM-ICPC, Asia Xian Regional Contest
- 2013-2014 ACM ICPC Central European Regional Contest (CERC 13) B题What does the fox say?
- Codeforces GYM 100548 K - Last Defence 2014-2015 ACM-ICPC, Asia Xian Regional Contest
- [CF Gym 100827E] Hill Number [2014-2015 ACM-ICPC Pacific Northwest Regional Contest E]
- [CF Gym 100827F] Knights [2014-2015 ACM-ICPC Pacific Northwest Regional Contest F]
- [CF Gym 100827K] Towers [2014-2015 ACM-ICPC Pacific Northwest Regional Contest K]
- 2014-2015 ACM-ICPC Northeastern European Regional Contest (NEERC 14) 解题报告
- 2013-2014 ACM ICPC Central European Regional Contest (CERC 13) K题(dp)
- LA6576 VivoParc (2013-2014 ACM-ICPC Southwestern Europe Regional Contest G题) 搜索
- 2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest E. Equal Digits