bzoj1074
题意:
给你n次折叠
m个询问
每次询问折叠后,xi,yi有几层
题解:
计算几何
模拟
#include<cstdio>
#include<cstdlib>
#include<cmath>
using namespace std;
int n,m;
double px[],py[],qx[],qy[];
int dcmp(double a,double b)
{
if (fabs(a-b)<=1e-) return ;
if (a<b)return -;
return ;
}
double Cross(double x1,double y1,double x2,double y2)
{
return x1*y2-x2*y1;
}
void calc(double x1,double y1,double x0,double y0,double &retx,double &rety)
{
retx=(x0*(x1*x0+y1*y0)+y0*(x0*y1-x1*y0))/(x0*x0+y0*y0);
rety=(y0*(x1*x0+y1*y0)-x0*(x0*y1-x1*y0))/(x0*x0+y0*y0);
}
int dp(double x,double y,int t)
{
if (!t)
{
if (dcmp(x,100.0)<&&dcmp(x,0.0)>&&dcmp(y,100.0)<&&dcmp(y,0.0)>)
return ;
return ;
}
if (dcmp(Cross(x-px[t],y-py[t],qx[t]-px[t],qy[t]-py[t]),0.0)>=)return ;
else
{
double retx,rety;
calc(x-px[t],y-py[t],qx[t]-px[t],qy[t]-py[t],retx,rety);
retx+=px[t];rety+=py[t];
return dp(x,y,t-)+dp(retx,rety,t-);
}
}
int main()
{
double _x,_y;
scanf("%d",&n);
for (int i=;i<=n;i++)scanf("%lf%lf%lf%lf",&px[i],&py[i],&qx[i],&qy[i]);
scanf("%d",&m);
while (m--)
{
scanf("%lf%lf",&_x,&_y);
printf("%d\n",dp(_x,_y,n));
}
return ;
}
bzoj1074的更多相关文章
- [BZOJ1074] [luogu 4036] [JSOI 2008] 火星人 (二分答案+哈希+fhq treap)
[BZOJ1074] [luogu 4036] [JSOI 2008] 火星人 (二分答案+哈希+fhq treap) 题面 给出一个长度为n的字符串,m个操作,字符串仅包含小写英文字母 操作1:在k ...
- 【题解】折纸 origami [SCOI2007] [P4468] [Bzoj1074]
[题解]折纸 origami [SCOI2007] [P4468] [Bzoj1074] 传送门:折纸 \(\text{origami [SCOI2007] [P4468]}\) \(\text{[B ...
- BZOJ1074 [SCOI2007]折纸origami
我们先看每个点可能从哪些点折过来的,2^10枚举对角线是否用到. 然后再模拟折法,查看每个点是否满足要求. 恩,计算几何比较恶心,还好前几天刚写过一道更恶心的计算几何,点类直接拷过来2333. /** ...
- BZOJ第1页养成计划
嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1000 BZOJ1001 BZOJ1002 BZOJ1003 BZOJ1004 BZOJ1005 ...
随机推荐
- Python开发【笔记】:进程
序言 进程与线程概述: 很多同学都听说过,现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统. 什么叫“多任务”呢?简单地说,就是操作系统可以同时运 ...
- 用MongoDB取代RabbitMQ(转)
原文:http://blog.nosqlfan.com/html/3223.html RabbitMQ是当成应用比较广泛的队列服务系统,其配套的客户端和监控运维方案也比较成熟.BoxedIce的队列服 ...
- Django查询orm的前一天,前一周,一个月的数据
利用datatime模块的datetime.timedelta()方法 计算时间差,以下是用法 唯一要注意的是数据库存储models.datefield字段是日期格式,所以比较的数据也是日期格式 #当 ...
- IOS使用Core-Plot画折线图
关于Core-Plot的配置.大家能够參考我的上一篇博客:http://1.wildcat.sinaapp.com/?p=99 版权全部.转载请注明原文转自:http://blog.csdn.net/ ...
- nodejs中Async详解之一:流程控制
为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程控制:简化十种 ...
- HTML5游戏开发系列教程9(译)
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-9/ 今天我们将继续使用canvas来进行HTML5游戏开发系列的 ...
- cocos代码研究(14)Widget子类Button学习笔记
理论基础 表示一个按钮组件. 按钮可以被按下,或者点击, 并且在按下或者点击之后,可以由用户指定一个动作来执行,继承自 Widget. 代码部分 static Button * create ()创建 ...
- windows live writer backup
windows live writer backup备份:http://wlwbackup.codeplex.com/
- 线程、进程、daemon、GIL锁、线程锁、递归锁、信号量、计时器、事件、队列、多进程
# 本文代码基于Python3 什么是进程? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行 ...
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...