题目链接:http://codeforces.com/contest/1087/problem/C

题目大意:给你三个点的坐标,让你用尽可能少的方块,让这三个点连起来。

具体思路: 我们先对这三个点进行排序,我们先选定第二个点,记录一下所有的点中,y的最小和最大,对于第二个点,我们竖着建立一个长度为(y的最大值-y的最小值+1)的长度,这一条的x坐标是第二个点的x坐标,然后剩下的第一个点和第三个点直接连向这个条就可以了。

AC代码:

 #include <iostream>
#include <string>
#include <deque>
#include <stack>
#include<cmath>
#include <algorithm>
#include<map>
using namespace std;
# define ll long long
# define inf 0x3f3f3f3f
vector<pair<int,int> >vis;
map<pair<int,int>,bool>ju;
struct node
{
int x;
int y;
} q[];
bool cmp(node t1,node t2)
{
if(t1.x==t2.x)
return t1.y<t2.y;
return t1.x<t2.x;
}
int main()
{
int x1,y1,x2,y2,x3,y3;
cin>>x1>>y1;
cin>>x2>>y2;
cin>>x3>>y3;
int miny=inf,maxy=;
miny=min(miny,y1);
miny=min(miny,y2);
miny=min(miny,y3);
maxy=max(maxy,y1);
maxy=max(maxy,y2);
maxy=max(maxy,y3);
int num=;
q[].x=x1;
q[].y=y1;
q[].x=x2;
q[].y=y2;
q[].x=x3;
q[].y=y3;
sort(q+,q+,cmp);
for(int i=miny; i<=maxy; i++)
{
if(ju[make_pair(q[].x,i)]==)
vis.push_back(make_pair(q[].x,i));
ju[make_pair(q[].x,i)]=;
// cout<<q[2].x<<" "<<i<<endl;
}
for(int i=q[].x; i<=q[].x; i++)
{
// cout<<i<<" "<<q[1].y<<endl;
if(ju[make_pair(i,q[].y)]==)
vis.push_back(make_pair(i,q[].y));
ju[make_pair(i,q[].y)]=;
}
for(int i=q[].x; i<=q[].x; i++)
{
if(ju[make_pair(i,q[].y)]==)
vis.push_back(make_pair(i,q[].y));
ju[make_pair(i,q[].y)]=;
// cout<<i<<" "<<q[3].y<<endl;
}
cout<<vis.size()<<endl;
for(auto i:vis)
{
cout<<i.first<<" "<<i.second<<endl;
}
// for(int i=0; i<=1000; i++)
// {
// for(int j=0; j<=1000; j++)
// {
// if(vis[make_pair(i,j)]==0)
// continue;
// cout<<i<<" "<<j<<endl;
// }
// }
return ;
}

C. Connect Three(构造)的更多相关文章

  1. 利用Connect By构造数列

    ,) yymm ;

  2. Java 线程并发策略

    1 什么是并发问题. 多个进程或线程同时(或着说在同一段时间内)访问同一资源会产生并发问题. 2 java中synchronized的用法 用法1 public class Test{ public ...

  3. java io读书笔记(8)FileInputStream/FileOutputStream的应用

    转自:http://www.cnblogs.com/jjtech/archive/2011/04/17/2019210.html 这是一对继承于InputStream和OutputStream的类,用 ...

  4. Android系统在超级终端下必会的命令大全(adb shell命令大全)

    . 显示系统中全部Android平台: android list targets . 显示系统中全部AVD(模拟器): android list avd . 创建AVD(模拟器): android c ...

  5. Mysql数据实时同步

    企业运维的数据库最常见的是 mysql;但是 mysql 有个缺陷:当数据量达到千万条的时候,mysql 的相关操作会变的非常迟缓; 如果这个时候有需求需要实时展示数据;对于 mysql 来说是一种灾 ...

  6. 【RPC】手撸一个简单的RPC框架实现

      涉及技术   序列化.Socket通信.Java动态代理技术,反射机制   角色   1.服务提供者:运行在服务端,是真实的服务实现类   2.服务发布监听者:运行在RPC服务端,1将服务端提供的 ...

  7. java并发的处理方式

    1 什么是并发问题. 多个进程或线程同时(或着说在同一段时间内)访问同一资源会产生并发问题. 银行两操作员同时操作同一账户就是典型的例子.比如A.B操作员同时读取一余额为1000元的账户,A操作员为该 ...

  8. FileInputStream/FileOutputStream的应用

    这是一对继承于InputStream和OutputStream的类,用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象): 本地文件读写编程的基本过程为: ①  生成文 ...

  9. 面试王牌 JAVA并发

    Java 并发 JavathreadSocketC#C++ 并发 Table of Contents 1 什么是并发问题. 2多线程死锁问题 2 java中synchronized的用法 3 Java ...

随机推荐

  1. list 交换位置扩展

    public static List<T> Swap<T>(this List<T> list, int index1,int index2) { if(index ...

  2. 浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase

    Cookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态, ...

  3. java 一般类属性设置常量 用以长久使用

    java  一般类属性设置常量 用以长久使用 一直引用 例如 文件名

  4. Long Long Message POJ - 2774(最长公共子串)

    题意: 给你两串字符,要你找出在这两串字符中都出现过的最长子串 解析: 先用个分隔符将两个字符串连接起来,再用后缀数组求出height数组的值,找出一个height值最大并且i与i-1的sa值分别在两 ...

  5. PHP-从零开始使用Solr搜索引擎服务(上)

    前言: 原文地址: http://www.cnblogs.com/JimmyBright/p/7156069.html 使用搜索引擎,我们常规的数据查询会快很多,还可以对关键词进行中文分词查询,返回一 ...

  6. 【codeforces 553E】 Kyoya and Train

    http://codeforces.com/problemset/problem/553/E (题目链接) 艹尼玛,CF还卡劳资常数w(゚Д゚)w!!系统complex被卡TLE了T_T,劳资写了一天 ...

  7. IDEA之插件篇

    强烈推荐小伙伴们,安装以下插件:

  8. 最新版的Android4.4.2 SDK无法下载解决

    http://hi.baidu.com/petercao2008/item/65362d2bdbddfacba5275a50 问题: Downloading ARM EABI v7a System I ...

  9. 菜鸟合作伙伴日志接入规范之C#实现

    由于行业的业务功能需要,需要与菜鸟对接登录日志,将我们系统的用户登录信息提交给菜鸟,菜鸟分析通过分析日志,检查存在的一些安全问题.根据菜鸟提供的标准,实现了C#的接入,下面分享给大家,让需要的朋友少走 ...

  10. 数据库之Oracle的介绍与使用20180620

    /*******************************************************************************************/ 一.orac ...