Hacker, pack your bags! CodeForces - 822C
2017-10-11 10:36
288 查看
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <string> #include <vector> #include <stack> #include <bitset> #include <cstdlib> #include <cmath> #include <set> #include <list> #include <deque> #include <map> #include <queue> using namespace std; typedef long long ll; #define maxn 200010 struct node{ int l; int r; int cost; }voc[maxn]; bool cmp (node a,node b){ if (a.l==b.l) return a.r < b.r; return a.l < b.l; } map <int,int > mp; vector <node> g[maxn]; vector <int> gs[maxn]; int midquery (int x,int ll){ int t = mp[x]; //printf("%d %d\n",x,t); if (!t) return -1; int r = g[t].size()-1; int l = 0; int ans=0; while (r>=l){ int mid = (r+l)/2; int L = g[t][mid].l; if (L > ll) {r= mid-1;ans =mid;} else l =mid+1; } if (ans)return r; else return -1; } int main (){ int n,x; scanf ("%d%d",&n,&x); int i; for (i=1;i<=n;i++){ scanf ("%d%d%d",&voc[i].l,&voc[i].r,&voc[i].cost); } sort (voc+1,voc+1+n,cmp); int t = 0; for (i=1;i<=n;i++){ int d= voc[i].r-voc[i].l+1; if (!mp[d]) mp[d] = ++t; int p = mp[d]; g[p].push_back (voc[i]); gs[p].push_back (1); } int j; for (i=1;i<=t;i++){ int l = gs[i].size()-1; gs[i][l] = g[i][l].cost ; for (j=l-1 ;j>=0;j--){ gs[i][j]= min (gs[i][j+1],g[i][j].cost); } } ll ans = 2e9+7; for (i=1;i<n;i++){ int d = x - (voc[i].r-voc[i].l+1); int t = midquery (d,voc[i].r); // printf("%d\n",t); if (t==-1) continue; ll res =0; res = gs[mp[d]][t] + voc[i].cost; if (ans > res) ans = res; } if (ans==2e9+7) printf("-1\n"); else cout <<ans<<endl; return 0; }
相关文章推荐
- Codeforces 822C Hacker, pack your bags!(思维+技巧)
- Codeforces 822C Hacker, pack your bags!【排序+二分】
- Codeforces 822C - Hacker, pack your bags!(二分)
- Codeforces 822C Hacker, pack your bags! - 贪心
- CodeForces - 822C Hacker, pack your bags!(区间端点处理技巧+思维)
- A - Hacker, pack your bags! CodeForces - 822C(思路,排序)
- 【线段问题创新思路】Hacker, pack your bags! CodeForces - 822C
- CodeForces 822C Hacker, pack your bags!
- Codeforces 822C: Hacker, pack your bags!【二分查找】【后缀最小值】
- Codeforces 822 C. Hacker, pack your bags! 思维
- codeforces 822 C. Hacker, pack your bags!(思维+dp)
- C - Hacker, pack your bags! Codeforces(贪心)
- codeforces 822 C Hacker, pack your bags!
- Codefroces 822C Hacker, pack your bags!
- 【L,R的特点】codeforce 822C Hacker, pack your bags!
- 822C Hacker, pack your bags!
- 【Codeforces 822 C. Hacker, pack your bags!】+ pair
- codeforces #422 C. Hacker, pack your bags!(贪心dp)
- Codeforces Round #422 (Div. 2) C Hacker, pack your bags! (二分orDP)
- Codeforces Round #422 (Div. 2) C. Hacker, pack your bags!