UVALive 7261 Xiongnu's Land(二分)
2016-08-10 21:04
260 查看
题目地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5273
思路:二分位置(无需考虑总坐标,仅考虑横坐标即可),使得2*area >= sum,在满足该条件的情况下,尽量右移使得左侧面积尽量大。
思路:二分位置(无需考虑总坐标,仅考虑横坐标即可),使得2*area >= sum,在满足该条件的情况下,尽量右移使得左侧面积尽量大。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define debu using namespace std; const int maxn=1e4+50; typedef long long LL; struct Node { int l,r,h; }; int t,R,n; Node a[maxn]; LL cal(int x) { LL sum=0; for(int i=0; i<n; i++) if(a[i].l<x) sum+=(LL)(min(a[i].r,x)-a[i].l)*a[i].h; return sum; } int main() { #ifdef debug freopen("in.in","r",stdin); #endif // debug scanf("%d",&t); while(t--) { LL sum=0; scanf("%d",&R); scanf("%d",&n); for(int i=0; i<n; i++) { int x,y,w,h; scanf("%d%d%d%d",&x,&y,&w,&h); a[i].l=x,a[i].r=x+w,a[i].h=h; sum+=(LL)w*h; } int l=0,r=R,mid; while(l<r) { mid=(l+r)/2; LL area=cal(mid); if(2*area<sum) l=mid+1; else r=mid; } LL tmp=cal(r); while(cal(r)==tmp&&r<=R) r++; printf("%d\n",r-1); } return 0; }
相关文章推荐
- UVALive 7261 A - Xiongnu's Land(二分)
- UVALive 7261 Xiongnu's Land 扫描线
- 【扫描线】uvalive 7261 Xiongnu's Land
- [UVALive7261]A - Xiongnu's Land (二分)
- 2015 Asia BeiJing Regional Contest A. Xiongnu's Land(二分)
- hihoCoder 1249 Xiongnu's Land(二分)
- 2015北京区域赛 A.Xiongnu's Land(二分或者标记法)
- Xiongnu's Land (线性扫描,二分)
- 【UVALive3635】Pie(浮点二分)
- UVALive 5000 Underwater Snipers --二分
- UVALive 6168 Fat Ninjas --二分小数+搜索
- UVALive 6849 Landmine Cleaner(贪心、扫雷经典游戏)
- UVALive 6442 Coins on a Ring(二分查找答案)
- UVALive 4035 Undetectable Tour (二分 + 并查集)
- UVa live3415Guardian of Decency(二分最大匹配之最大独立点集)
- UVALive 6656 Watching the Kangaroo(二分)
- UVALive 3675 Sorted bit sequence(数位dp+二分)
- UVALive-6694 Toy Boxes(二分)
- UVALive - 6135 Environment Protection 二分+simpson
- UVALive 4683 Find The Number(容斥+二分)