CF97B:Superset——题解
http://codeforces.com/problemset/problem/97/B
题目大意:给n个点,添加一些点,使得任意两个点:
1.在同一条线上
2.以它们为顶点构成的矩形上有其他点。
输出一组可行解。
——————————————————
我发现我根本不会做英语题……看了半天题面后就去找题解了。
http://blog.csdn.net/wust_zjx/article/details/44900093
这是其他人的题解,但我总觉得这个人说的不明不白的(自行理解半个小时才明白的我深有感触)
首先题告诉我们随意一组解都可以,这给我们很大的自由空间,直接开始想暴力。
……但是我们不可以把点填满(题中有最大点数限制)
我们通过二分平面,对于mid点,每个在l-r中的其他的点与该点所在直线的投影就是我们需要添加的点(显然)。
同时为了防止我们添加重复的点我们需要用set维护一下。
Q1:为什么我们只需要在区间中的点的投影?
A1:我们知道在大区间内我们已经把所有的点投影到了mid,那么我们画图后发现我们对于右边的区间和左边的区间中的点一定满足上面的两种条件,故不需要加点。
Q2:为什么可行?
A2:(数都是约数)第一次我们添加了n个点,第二次我们添加了n/2*2个点,第三次我们添加了n/4*4个点……我们添加logn次,我们总共添加了nlogn个点大约1.2*10^5,总共也就大约1.3*10^5个点,一定超不了。
#include<cmath>
#include<cstdio>
#include<cctype>
#include<cstring>
#include<set>
#include<algorithm>
#define x first
#define y second
using namespace std;
typedef pair<int,int>ii;
inline int read(){
int X=,w=; char ch=;
while(!isdigit(ch)) {w|=ch=='-';ch=getchar();}
while(isdigit(ch)) X=(X<<)+(X<<)+(ch^),ch=getchar();
return w?-X:X;
}
ii p[];
set<ii>s;
void solve(int l,int r){
if(l>=r)return;
int mid=(l+r)>>;
for(int i=l;i<=r;i++){
s.insert(ii(p[mid].x,p[i].y));
}
solve(l,mid);
solve(mid+,r);
return;
}
int main(){
int n=read();
for(int i=;i<=n;i++){
p[i].x=read();
p[i].y=read();
s.insert(p[i]);
}
sort(p+,p+n+);
solve(,n);
printf("%d\n",(int)s.size());
for(set<ii>::iterator i=s.begin();i!=s.end();i++){
printf("%d %d\n",i->x,i->y);
}
return ;
}
CF97B:Superset——题解的更多相关文章
- CF97B Superset超级集合
CF97B Superset 这题主要是构造难想.看看数据范围发现连\(O(n^2)\)都被卡了,然后 考试的名称提醒我 想到了分治. 坐标按横坐标为关键字排序后找中间的点进行分治不是点分治qwq. ...
- CF97B Superset
嘟嘟嘟cf 嘟嘟嘟luogu 刚开始我看成了对于一个点\(i\),存在一个点\(j\)满足三个条件之一,而不是任意的\(j\).结果自然\(gg\)了,第二个点就\(WA\)了. 也不知怎么来的思路: ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
随机推荐
- SpringBoot入门(四)——自动配置
本文来自网易云社区 SpringBoot之所以能够快速构建项目,得益于它的2个新特性,一个是起步依赖前面已经介绍过,另外一个则是自动配置.起步依赖用于降低项目依赖的复杂度,自动配置负责减少人工配置的工 ...
- Python字符串格式化符号及转义字符含义(非常全!!!)
字符串格式化符号含义 符号 说明 %c 格式化字符及其 ASCII 码 %s 格式化字符串 %d 格式化整数 %o 格式化无符号八进制数 %x 格式化无符号十六进制数 %X 格式化无符号十六进制数(大 ...
- 只写Python一遍代码,就可以同时生成安卓及IOS的APP,真优秀
前言: 用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择 我们使用kivy开发安卓APP,Kivy是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cython编写 ...
- unable to access android sdk add-on list and SDK 更新镜像设置
前记 国内的网络呀,真是操蛋!!!!!! unable to access android sdk add-on list 在 Android Studio 安装目录 bin/idea.propert ...
- 春招实习汇总(7个offer)
转载出处 刚从北京到家,总算也可以歇歇了,最近一段时间真是忙于奔命的感觉,也确实体会到了找工作的艰辛,总而言之,求职之路,如人饮水,冷暖自知. 我想把这段时间找工作的体验和经历分享出来告诉大家,让大避 ...
- sqoop-1.4.6安装与使用
一.安装 1.下载sqoop-1.4.6-bin.tar.gz并解压 2.修改conf/sqoop-env.sh,设置如下变量: export HADOOP_COMMON_HOME=/usr/loca ...
- 【转】Expressions versus statements in JavaScript
原文地址:http://www.2ality.com/2012/09/expressions-vs-statements.html Update 2012-09-21: New in Sect. 4: ...
- maven把项目打包成jar包后找不到velocity模板的bug
使用springmvc 开发时候要实现发送velcotiy模板邮件,在配置正常后,在本地测试正常后,使用maven打包成jar包后,报以下错误, Caused by: org.apache.veloc ...
- 20172333 2017-2018-2 《Java程序设计》第10周学习总结
20172333 2017-2018-2 <Java程序设计>第10周学习总结 教材学习内容 第十三章 集合是一个对象,一个保存其他对象的数据库. 集合可以保存不同种类的对象也可以保存同种 ...
- object-oriented第二次作业(1)
1001.A+B F Format(20) 我的代码 题目看完,感觉挺简单的,就直接开始写代码了. 我把加起来后的数字的每位数用数组存起来,特判一下0和负数的情况,然后再一位位输出,遇到该输逗号的时候 ...