UVALive 7261 A - Xiongnu's Land(二分)
2016-08-07 16:17
295 查看
题意:有一块R*R(1 ≤ R ≤1, 000, 000)大小的正方形土地,其中分布着N (0 < N ≤ 10000)块矩形绿洲,要求求出一条平行于y轴的划分线,把土地划分为东西两部分。
有两条规则:
1.东边土地绿洲的总面积要大于西边的。
2.在不违反第一条规则的前提下使东边土地的面积尽量大。
思路:
二分求出划分线,满足第一条规则后,向右吞并土地,使得东边土地的面积尽量大。
细节参见代码:
有两条规则:
1.东边土地绿洲的总面积要大于西边的。
2.在不违反第一条规则的前提下使东边土地的面积尽量大。
思路:
二分求出划分线,满足第一条规则后,向右吞并土地,使得东边土地的面积尽量大。
细节参见代码:
// lsltbh #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<set> #include<map> #include<vector> #include<algorithm> #include<queue> #include<cmath> using namespace std; const int maxn=10000+10; typedef long long int LL; int t,n; int R; LL sum; struct oasis{ LL W,H,L,T; }; oasis rec[maxn]; LL judge(int t){ LL sum=0; for(int i=1;i<=n;i++){ if(rec[i].L<t&&rec[i].L+rec[i].W<=t) sum+=rec[i].H*rec[i].W; if(rec[i].L<t&&rec[i].L+rec[i].W>t) sum+=rec[i].H*(t-rec[i].L); } return sum; } int main() { scanf("%d",&t); while(t--){ scanf("%d",&R); scanf("%d",&n); sum=0; memset(rec,0,sizeof(rec)); for(int i=1;i<=n;i++){ scanf("%lld%lld%lld%lld",&rec[i].L,&rec[i].T,&rec[i].W,&rec[i].H); sum+=rec[i].W*rec[i].H; } sum++; int l=0,r=R; int ans; while(l<r){ ans=l+(r-l)/2; if(judge(ans)==sum/2) break; if(judge(ans)<sum/2) l=ans+1; if(judge(ans)>sum/2) r=ans; } while(judge(ans)<sum/2) ans++; LL mianji=judge(ans); while(judge(ans)==mianji&&ans<=R) ans++; printf("%d\n",ans-1); } return 0; }
相关文章推荐
- UVALive 7261 Xiongnu's Land(二分)
- UVALive 7261 Xiongnu's Land 扫描线
- 【扫描线】uvalive 7261 Xiongnu's Land
- [UVALive7261]A - Xiongnu's Land (二分)
- Xiongnu's Land (线性扫描,二分)
- 2015 Asia BeiJing Regional Contest A. Xiongnu's Land(二分)
- hihoCoder 1249 Xiongnu's Land(二分)
- 2015北京区域赛 A.Xiongnu's Land(二分或者标记法)
- UVALive 3635-Pie-二分
- 【二分匹配】 UVALive 6525 Attacking rooks
- UVA 12124 UVAlive 3971 Assemble(二分 + 贪心)
- 【dp/二分+暴力】MAGRID UVALive - 5983
- UVALive 7261 Xiongnu's Land (扫描线)
- UVALive 7500 Boxes and Balls 2015EC final 签到题 二分
- UVALive 7501 Business Cycle(二分,xjb乱判)
- UVaLive 6694 Toy Boxes (二分+想法)
- UVALive - 3635 - Pie(二分)
- UVALive_6279_Caravan Robbers(二分+卡精度)
- HDU 5124 hihocoder 1249 Xiongnu's Land (2015北京区域赛A)
- UVALive7261(2015ACM/ICPC北京赛区现场赛A)