CodeForces - 97B Superset (思维/分治/构造)
题目大意:
给定n个点的点集,要求向点集里添加一些点,使点集中的任意两个点满足下列三个条件中的一个:
①在同一行 ②在同一列
③以这两个点为对角构成的矩形的内部或者边缘包含其余的点
题解:先把点按x轴排序,然后找到中间的点,做一条直线 x = a[mid].x;
然后把所有点都投影到这条直线上,这就保证了,任两个点之间至少能满足条件3(投影到轴上的点至少包含在矩形内),包含一种构造的思想。
本题必须重载运算符,光在sort中写个cmp函树是不够的,因为set是自动排序的,而你给set一个结构体他不知道该怎样排序,所以需要在结构体内重载比较运算符。
同时本题也是平面分治的一经典题
#include <bits/stdc++.h>
#include <cstring>
using namespace std;
struct node
{int x,y;bool operator <(const node &t)const{if(x==t.x)return y<t.y;else return x<t.x;}
}a[10010];
int n;
set<node>_set;
void dfs(int l,int r)
{if(l==r)return;int mid=(l+r)>>1;node tmp;for(int i=l;i<=r;++i){tmp.x=a[mid].x;tmp.y=a[i].y;_set.insert(tmp);}dfs(l,mid);dfs(mid+1,r);
}
int main()
{//freopen("input.txt","r",stdin);scanf("%d",&n);for(int i=1;i<=n;++i){scanf("%d%d",&a[i].x,&a[i].y);_set.insert(a[i]);}sort(a+1,a+1+n);dfs(1,n);printf("%d\n",_set.size());for(auto it:_set)printf("%d %d\n",it.x,it.y);return 0;
}
CodeForces - 97B Superset (思维/分治/构造)相关推荐
- K-Dominant Character CodeForces - 888C 思维 构造
题意 让我们在这个字符串中找一定k长度的字串中都至少含有一个相同的字符 让求这个字串的最小长度 分析 也就是说当我们最终确定了 字串的最小长度后 每个以此长度的字串都至少含有一个相同字符 那么当我们找 ...
- codeforces 148 C. Terse princess(思维,构造)
C. Terse princess(思维,构造) 题目链接:codeforces 148C 题意: 有个公主找王子,如果这个人比之前所有王子的财富都高,公主就会Oh, ...
- Codeforces Round #644 1360H. Binary Median(思维、构造)
题目描述: time limit per test 2 seconds memory limit per test 256 megabytes Consider all binary strings ...
- CodeForces - 1265D Beautiful Sequence(贪心+构造+思维)
题目链接:点击查看 题目大意:给出a个0,b个1,c个2,d个3,要求构造一种序列,使得数列两两之间绝对值之差等于1,若不能构造输出NO 题目分析:首先我们需要稍微讨论一下特殊情况,那就是对于两端的数 ...
- A/B Matrix CodeForces - 1360G(思维构造)
You are given four positive integers n, m, a, b (1≤b≤n≤50; 1≤a≤m≤50). Find any such rectangular matr ...
- Binary String Reconstruction CodeForces - 1352F(思维+构造)
For some binary string s (i.e. each character si is either '0' or '1'), all pairs of consecutive (ad ...
- CodeForces - 798D Mike and distribution(构造+思维/玄学随机数)
题目链接:点击查看 题目大意:给出两个长度为n的数列,现在要求选出n/2+1个位置,使得两个序列中这些位置的和分别大于各自序列之和的一半 题目分析:题意换句话说,是需要让我们从数组中选出一半,要大于另 ...
- Crazy Diamond CodeForces - 1148C(思维构造)
You are given a permutation pp of integers from 11 to nn, where nn is an even number. Your goal is t ...
- 【 CodeForces - 1060B 】Maximum Sum of Digits(思维,构造)
题干: You are given a positive integer nn. Let S(x)S(x) be sum of digits in base 10 representation of ...
最新文章
- Python中正则表达式用法 重点格式以这个为准_首看_各种问题
- Fiddler抓包使用教程-QuickExec
- python怎么在官网下载pygame_Python中pip以及Pygame的下载与安装
- Swift3中数组创建方法
- python中的引用,Python里的引用和拷贝
- 遥感导论网课_甘肃农业大学2019年地理信息科学专业专升本招生 专业课考试大纲...
- 自定义数组名做参数(传指针教学)
- php ctype xdigit,PHP中的ctype_xdigit()函数
- python调用jar包
- Java TreeMap排序
- ubuntu10.10下smbd服务配置——实现主机WinXP与虚拟机Ubuntu10.10共享
- 吐血推荐 ▏看完这个我才知道原来PHP应该这样学!大牛的成功是可以复制的(福利派送)
- 数据库分区、分表、分库,读写分离
- 数据库系统概论第六章(关系数据理论)知识点总结(2)—— 码的概念总结
- python读取word文件并替换部分文字_python批量替换
- 高级语言编译/解释流程
- android平板怎么双清,华为M2平板10.0怎么双清?华为M2进入recovery格机恢复出厂设置...
- sanic教程-快速开始安装
- 土壤水分传感器与介电常数的区别
- linux清垃圾软件,似Win清理工具!Ubuntu下4个应用替代品