题目链接: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. mysql 查询缓存优化文章

    还不错 http://www.jzxue.com/shujuku/mysql/200910/20-2981.html

  2. Java并发编程之线程生命周期、守护线程、优先级、关闭和join、sleep、yield、interrupt

    Java并发编程中,其中一个难点是对线程生命周期的理解,和多种线程控制方法.线程沟通方法的灵活运用.这些方法和概念之间彼此联系紧密,共同构成了Java并发编程基石之一. Java线程的生命周期 Jav ...

  3. 时空KSOA之CS表单工具说明

    CS表单工具说明 1.调用: 1.1.单据事件调用 runbill_表单sn 调用无窗口表单 loadbill_表单sn 调用窗口表单 1.2.功能调用 功能号:LOADCSBILL 参数表单名称 1 ...

  4. ASP.NET MVC 模型绑定

    模型绑定指的是MVC从浏览器发送的HTTP请求中为我们创建.NET对象,在HTTP请求和C#间起着桥梁的作用.模型绑定的一个最简单的例子是带参数的控制器action方法,比如我们注册这样的路径映射: ...

  5. THUWC2017颓废记

    2.9翘掉Wc闭幕式,和石家庄大爷们坐一辆车去杭州…路上日常orz gzz.2.10早上来报到,拍照.宿舍里另外四个人都是GD大爷.开幕式是喜闻乐见的thu日常黑pku(“在中国,世界一流大学有两所, ...

  6. plsql 只有三个文本框,无法登陆

    plsql版本与oracle版本不一致,如  你装的是oracle 64位,但是plsql装的是32位,就会出问题了,解决方案就是下载个64位plsql

  7. Timing wheel心跳机制

    在web服务中,断开空闲连接是一种减少资源浪费的一种手段,由此就有了心跳机制来判断一个连接是否空闲. 一种简单粗暴的方式: 1. 服务端每个连接保存一个最后一次操作的时间戳,每次这个连接对应fd可读时 ...

  8. debian修改默认编辑器

    刚才在一台机器上打开 crontab -e,跳出来的编辑器是nano,太难使... 在debian下是使用 update-alternatives 命令修改默认编辑器. 先查看一下使用帮助 # upd ...

  9. python基础之collections模块

    Counter Counter是一个简单的计数器,可以统计一段字符串中各个元素出现的次数: import collections counter_1=collections.Counter('kjsd ...

  10. Java基础-DBCP连接池(BasicDataSource类)详解

    Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...