bzoj4814: [Cqoi2017]小Q的草稿
Description
Input
Output
对每个点以它为中心进行扫描线,处理在右方的点和三角形。
#include<bits/stdc++.h>
typedef long long i64;
typedef double ld;
int n,m;
int sgn(i64 x){return x<?-:x>;}
struct pos{
int x,y;
void R(){scanf("%d%d",&x,&y);}
i64 pw2(){return i64(x)*x+i64(y)*y;}
}ps[],ws[],trs[][],O=(pos){,},now;
pos operator-(const pos&a,const pos&b){return (pos){a.x-b.x,a.y-b.y};}
int operator*(const pos&a,const pos&b){return sgn(i64(a.x)*b.y-i64(a.y)*b.x);}
ld mul(const pos&a,const pos&b){return ld(a.x)*b.y-ld(a.y)*b.x;}
bool cmp(const pos&a,const pos&b){return a.x!=b.x?a.x<b.x:a.y<b.y;}
bool operator<(const pos&a,const pos&b){return a*b<;}
struct seg{
pos a[];
ld val()const{return mul(a[],a[])/mul(now,a[]-a[]);}
bool operator<(const seg&w)const{return val()<w.val();}
};
std::set<seg>st;
std::set<seg>::iterator its[];
struct Q{
pos a[];
int t,id;
bool operator<(const Q&w)const{
int x=a[t]*w.a[w.t];
return x?x<:t<w.t;
}
bool operator<(const pos&w){
int x=a[t]*w;
return x?x<:!t;
}
void cal(){
now=a[t];
if(cmp(now,O))now=(pos){,};
if(t)st.erase(its[id]);
else{
seg s=(seg){a[],a[]};
its[id]=st.insert(s).first;
}
}
}qs[];
bool cross(pos a,pos b1,pos b2){
pos ba=b2-a;
if((a*(b1-a))*(a*ba)>)return ;
pos b3=b1-b2;
return (b3*b2)*(b3*ba)<=;
}
int ans=,wp,qp,ip;
void scl(){
for(int i=,j=;i<wp;++i){
for(;j<qp&&qs[j]<ws[i];qs[j++].cal());
if(st.empty()||!cross(ws[i],st.begin()->a[],st.begin()->a[]))++ans;
}
}
void aq(pos a,pos b){
bool da=cmp(O,a),db=cmp(O,b);
++ip;
if(da)qs[qp++]=(Q){a,b,,ip};
else if(db)((Q){a,b,,ip}).cal();
if(db)qs[qp++]=(Q){a,b,,ip};
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)ps[i].R();
std::sort(ps+,ps+n+,cmp);
for(int i=;i<=m;++i)for(int j=;j<;++j)trs[i][j].R();
for(int i=;i<=n;++i){
st.clear();
wp=,qp=,ip=;
for(int j=i+;j<=n;++j)ws[wp++]=ps[j]-ps[i];
std::sort(ws,ws+wp);
for(int j=;j<=m;++j){
pos tr[];
for(int t=;t<;++t)tr[t]=trs[j][t]-ps[i];
std::sort(tr,tr+);
aq(tr[],tr[]);
}
std::sort(qs,qs+qp);
scl();
}
printf("%d\n",ans);
return ;
}
bzoj4814: [Cqoi2017]小Q的草稿的更多相关文章
- BZOJ 4814 Luogu P3699 [CQOI2017]小Q的草稿 (计算几何、扫描线、set)
题目链接 (BZOJ) http://lydsy.com/JudgeOnline/problem.php?id=4814 (Luogu) https://www.luogu.org/problem/P ...
- bzoj 4814: [Cqoi2017]小Q的草稿【计算几何】
//先打个50暴力,10min50分简直美滋滋~ #include<iostream> #include<cstdio> #include<algorithm> u ...
- bzoj 4813: [Cqoi2017]小Q的棋盘 [树形背包dp]
4813: [Cqoi2017]小Q的棋盘 题意: 某poj弱化版?树形背包 据说还可以贪心... #include <iostream> #include <cstdio> ...
- bzoj 4815: [Cqoi2017]小Q的表格 [数论]
4815: [Cqoi2017]小Q的表格 题意: 单点修改,查询前缀正方形和.修改后要求满足条件f(a,b)=f(b,a), b×f(a,a+b)=(a+b)*f(a,b) 一开始sb了认为一次只会 ...
- BZOJ_4813_[Cqoi2017]小Q的棋盘_dfs
BZOJ_4813_[Cqoi2017]小Q的棋盘_dfs Description 小Q正在设计一种棋类游戏.在小Q设计的游戏中,棋子可以放在棋盘上的格点中.某些格点之间有连线,棋子只能 在有连线的格 ...
- 【BZOJ4815】[CQOI2017]小Q的表格(莫比乌斯反演,分块)
[BZOJ4815][CQOI2017]小Q的表格(莫比乌斯反演,分块) 题面 BZOJ 洛谷 题解 神仙题啊. 首先\(f(a,b)=f(b,a)\)告诉我们矩阵只要算一半就好了. 接下来是\(b* ...
- 洛咕 P3700 [CQOI2017]小Q的表格
洛咕 P3700 [CQOI2017]小Q的表格 神仙题orz 首先推一下给的两个式子中的第二个 \(b\cdot F(a,a+b)=(a+b)\cdot F(a,b)\) 先简单的想,\(F(a,a ...
- 洛谷 P3698 [CQOI2017]小Q的棋盘 解题报告
P3698 [CQOI2017]小Q的棋盘 题目描述 小 Q 正在设计一种棋类游戏. 在小 Q 设计的游戏中,棋子可以放在棋盘上的格点中.某些格点之间有连线,棋子只能在有连线的格点之间移动.整个棋盘上 ...
- [BZOJ4813][CQOI2017]小Q的棋盘(DP,贪心)
4813: [Cqoi2017]小Q的棋盘 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 804 Solved: 441[Submit][Statu ...
随机推荐
- Gym101986: Asia Tsukuba Regional Contest(寒假自训第12场)
A .Secret of Chocolate Poles 题意:有黑白两种木块,黑色有1,K两种长度: 白色只有1一种长度,问满足黑白黑...白黑形式,长度为L的组合种类. 思路:直接DP即可. #i ...
- 配置Glassfish服务器、部署Java web项目、Maven安装配置及JDK版本匹配性问题
错误一:在win7上通过命令asadmin start-domain启动Glassfish服务器时报错(如下): Exception in thread "main" java.l ...
- 人工智能之KNN算法
转载自:https://www.cnblogs.com/magic-girl/p/python-kNN.html 基于python实现的KNN算法 邻近算法(k-NearestNeighbor) 是机 ...
- day 020 常用模块02
主要内容: 什么是序列化 pickle shelve json configparser(模块) 一 序列化 我们在存储数据或者网络传输数据的时候,需要对我们的对象进行处理,把对象处理成方便存储和 传 ...
- 在windows 上的RedisClient 上连接远程linux redis ("jave.net.ConnectException: Connection refused:connect")
1.把防火墙禁用掉 2.redis.conf配置文件,注释掉bind 127.0.0.1 3.重启redis服务
- {"errcode":48001,"errmsg":"api unauthorized}
微信公众号基础知识说明 网页授权获取微信用户信息:两种 scope 域 https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&am ...
- java-方法重写的注意事项
1.父类中私有方法不能被重写.因为父类的私有方法子类根本就无法继承. 2.子类重写父类方法时,访问权限不能更低.最好就一致. 3.父类静态方法,子类也必须通过静态方法进行重写.其实这个算不上方法重写, ...
- centos6.8 搭建zabbix被监控端
System:Centos 6.8 Zabbix-agent:3.2.1 1 安装对应版本的zabbix的yum源,官方网站中没有找到zabbix3.0支持的centos6的源,所以用的3.2 #rp ...
- python------面向对象介绍之多态实例
一. 多态 一种接口,多种实现. 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作. ...
- Go Example--锁
package main import ( "fmt" "math/rand" "runtime" "sync" &qu ...