poj 2398 Toy Storage
2015-09-24 17:52
323 查看
题意:和POJ 2318一样,只是中间的n个隔板未排序,输出的是装有i个玩具区域的个数。
POJ 2318:/article/9560899.html
POJ 2318:/article/9560899.html
#include"iostream" #include"cmath" #include"cstring" #include"cstdlib" using namespace std; #define M 1111 struct node { double a,b; }p[M]; int cmp(const void *a,const void *b) { return (*(struct node *)a).a-(*(struct node *)b).a; } int main() { int n,m; double x1,x2,y1,y2; while(scanf("%d",&n),n!=0) { scanf("%d",&m); scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2); int i,j; double k[M],bb[M]; int c[M],f; int ans[M],cnt[M]; memset(ans,0,sizeof(ans)); memset(c,0,sizeof(c)); memset(k,0,sizeof(k)); memset(bb,0,sizeof(bb)); memset(cnt,0,sizeof(cnt)); for(i=0;i<n;i++) scanf("%lf %lf",&p[i].a,&p[i].b); qsort(p,n,sizeof(p[0]),cmp); for(i=0;i<n;i++) { if(fabs(p[i].a-p[i].b)>1e-8) { k[i]=(y1-y2)/(p[i].a-p[i].b); bb[i]=y2-k[i]*p[i].b; } else { c[i]=-1; bb[i]=p[i].a; } } for(i=0;i<m;i++) { double xx,yy; scanf("%lf%lf",&xx,&yy); f=0; for(j=0;j<n;j++) { if((c[j]==-1&&xx<bb[j])||(k[j]>0&&xx*k[j]+bb[j]<yy)||(k[j]<0&&xx*k[j]+bb[j]>yy)) { ans[j]++; f=1; break; } } if(f==0) ans[(int)n]++; } for(i=0;i<=n;i++) cnt[ans[i]]++; printf("Box\n"); for(i=1;i<=n;i++) if(cnt[i]) printf("%d: %d\n",i,cnt[i]); } return 0; }
相关文章推荐
- ZOJ.2405 Specialized Four-Digit Numbers【水,暴力】 2015/09/24
- 使用数组实现的简单队列结构
- 关于Hashcode的作用
- UML视频第一部分总结
- android selector 控件
- 面试---i++在两个线程分别执行100次,最大值和最小值分别多少
- sql server使用组合索引需要注意的地方
- HDU 3037(Lucas定理)
- JAVA中常用的正则的一些案例分析
- avaScript 中 typeof 和 instanceof
- 敏捷开发之XP
- 顺时针打印数组
- Java的四种引用,强弱软虚,用到的场景
- 读书笔记:MySQL数据库 数据类型优化二 用整形Int 存储 IP地址
- linux 查看网卡流量六种方法
- 提交表单之前,加入确认提示
- centos7为yum添加源
- nodejs如何请求路由,http和url模块
- UI - Delegate模式
- easyui表单验证easyui-validatebox