2016-广场舞
来源:互联网 发布:wps表格查找重复数据 编辑:程序博客网 时间:2024/06/10 03:54
LQ市的市民广场是一个多边形,广场上铺满了大理石的地板砖。
地板砖铺得方方正正,就像坐标轴纸一样。
以某四块砖相接的点为原点,地板砖的两条边为两个正方向,一块砖的边长为横纵坐标的单位长度,
则所有横纵坐标都为整数的点都是四块砖的交点(如果在广场内)。
广场的砖单调无趣,却给跳广场舞的市民们提供了绝佳的参照物。每天傍晚,都会有大批市民前来跳舞。
舞者每次都会选一块完整的砖来跳舞,两个人不会选择同一块砖,如果一块砖在广场边上导致缺角或者边不完整,则没人会选这块砖。
(广场形状的例子参考【图1.png】)
现在,告诉你广场的形状,请帮LQ市的市长计算一下,同一时刻最多有多少市民可以在广场跳舞。
【输入格式】
输入的第一行包含一个整数n,表示广场是n边形的(因此有n个顶点)。
接下来n行,每行两个整数,依次表示n边形每个顶点的坐标(也就是说广场边缘拐弯的地方都在砖的顶角上。数据保证广场是一个简单多边形。
【输出格式】
输出一个整数,表示最多有多少市民可以在广场跳舞。
【样例输入】
5
3 3
6 4
4 1
1 -1
0 4
【样例输出】
7
【样例说明】
广场如图1.png所示,一共有7块完整的地板砖,因此最多能有7位市民一起跳舞。
【数据规模与约定】
对于30%的数据,n不超过100,横纵坐标的绝对值均不超过100。
对于50%的数据,n不超过1000,横纵坐标的绝对值均不超过1000。
对于100%的数据,n不超过1000,横纵坐标的绝对值均不超过100000000(一亿)。
第七届蓝桥杯决赛B组第5题
#include<iostream>#include<algorithm>#include<cstdio>#include<math.h>#include<string>#include<vector>#define MAX_N 1010using namespace std;struct point { int x,y; };struct line { point a,b; };struct ls_node { int index; double y; };int N;point P[MAX_N];line L[MAX_N];ls_node BUF[MAX_N];bool cmp(ls_node a,ls_node b){ return a.y<b.y; }int updb(double a){ int s=(int)a; if(a-s>0.00001) s++; return s;}int lowdb(double a){ return (int)a; }double fline(line l,double x){ double len=fabs(l.a.x-l.b.x); double xlen=fabs(x-l.a.x); double y=(l.b.y-l.a.y)*xlen/len+l.a.y; return y;}void solve(){ int minx=P[0].x,maxx=P[0].x; for(int i=1;i<N;i++){ if(P[i].x>maxx) maxx=P[i].x; if(P[i].x<minx) minx=P[i].x; } int ans=0; for(int i=minx+1;i<=maxx;i++){ int count=0; for(int j=0;j<N;j++){ int ax=L[j].a.x,bx=L[j].b.x; if(ax<=i-1&&bx>=i||bx<=i-1&&ax>=i){ BUF[count].index=j; BUF[count].y=fline(L[j],(i+i-1)/2.0); count++; } } sort(BUF,BUF+count,cmp); for(int c=0;c<count/2;c++){ line upline=L[BUF[c*2].index],lowline=L[BUF[c*2+1].index]; int up=max(updb(fline(upline,i-1)),updb(fline(upline,i))); int low=min(lowdb(fline(lowline,i-1)),lowdb(fline(lowline,i))); if(low-up>0) ans+=low-up; } } cout<<ans<<endl;}int main(){ cin>>N; for(int i=0;i<N;i++) cin>>P[i].x>>P[i].y; L[0].a=P[0]; L[0].b=P[N-1]; for(int i=1;i<N;i++){ L[i].a=P[i]; L[i].b=P[i-1]; } solve();}/*101 62 54 55 34 01 10 22 30 40 5*****11*/ /*5 3 3 6 4 4 1 1 -1 0 4*****7*/
阅读全文
0 0
- 2016-广场舞
- 广场舞
- 居民还击广场舞
- 广场舞简史
- 广场舞--2016蓝桥杯 国赛 JAVA A组 第5题
- 5857部广场舞视频打包下载
- 跳广场舞老人防老年痴呆神器
- [C++]第七届蓝桥杯决赛之广场舞
- Robin广场舞案例实践分析之深入思考
- 大妈纽约跳广场舞 青春的活力(图)
- 广场舞喇叭与电影机喇叭斗音
- 中国大妈在莫斯科跳广场舞引来警察
- 股市不是广场 中国大妈“舞”不起来
- 第七届蓝桥杯决赛JavaA组第五题_广场舞
- 大妈钱太难赚,60余广场舞APP全军覆没
- 激情广场
- 秋水广场
- 【盘点】大妈邀跳广场舞,亲民总理咋与普通人攀谈?
- android Hierarchy Viewer
- springMVC-笔记007-几种return
- 集合操作:usion+interesect+minus
- 建造者模式
- cron计划任务以及Quartz的使用
- 2016-广场舞
- 分表与分库使用场景以及设计方式
- 『ORACLE』 清理监听日志(11g)
- highcharts报表 三:plotOptions 针对所有图表有效的通用配置
- 第十四周:( LeetCode593) Valid Square(c++)
- 服务器端 I/O 性能:Node vs. PHP vs. Java vs. Go
- 转-【CTF环境搭建之】如何使用Android反编译软件
- java单例模式学习
- leetcode(1)