题意:给你一个无向图,它的边要么是黑色要么是白色,且图上的每个点最多与两个黑边两个白边相连。现在,Demon将图分成两部分,一部分包含所有的黑边,另一部分包括所有的白边,给你白边图中度为0的点的数量w0,度为1的点数w1,度为2的点数w2,与黑边图中度为0的点数b1,度为1的点数b1,度为2的点数b2,要你输出任意一个符合条件的原图,如果不能,输出-1

无论是黑边图,还是白边图,给出的度为0、1、2三种点的数量均>=1 w0+w1+w2==b0+b1+b2,输出图的点数最多为w0+w1+w2个;图中无重边,无自环;

因为 只要白边或者 黑边 度数为1的点 为奇数个 就一定是无解的,因为每个点的白度数和黑度数至多为2,

那么最小是3个点  无解  4点的话  只剩  1 2 1 1 2 1 特判

接下来的 就构造

处理白色的时候 1 2 3 4 5..n  前w2 个分别连接,然后 接下来 从(w2,w2+1)(w2+2,w2+3)...(w2+w1-2,w2+w1-1) 然后再让最大的那个奇数和1相连,为何等等解释

处理黑色的时候1 3 5...2 4 6.... 依照上面的方法连接, 但是最后一条 就是选择 最后一个数和1相连,这样一定是一组解,因为我们排完相邻的不会有在之前相交(n>=5) 那么最大的偶数也不会和1相交,于是就得到解了

解释上面为何使用最大的奇数,就是为了让2和最大的奇数他们放在中间,尽量早的使用,在处理黑色的时候就不会产生无解了,因为最少有一个是没有黑色边度数的,最后一个和1连的 取最后一个便是,因为n>=5最后一个一定是大偶数也不会是2 那么就一定存在一组解

#include <iostream>
#include <algorithm> #include <cstdio>
using namespace std;
const int maxn=*;
int a[maxn];
int main()
{
int w0,w1,w2,b1,b0,b2;
int cas;
scanf("%d",&cas);
for(int cc=; cc<=cas; cc++)
{
scanf("%d%d%d%d%d%d",&w0,&w1,&w2,&b0,&b1,&b2);
if(w0==||w1==||w2==||b0==||b1==||b2==)while(true);
if(w1&||b1&){
puts("-1");continue;
}
int n=w0+w1+w2;
if(n==){
puts("");
puts("1 2 0");
puts("1 3 0");
puts("4 2 1");
puts("4 3 1");
continue;
}
printf("%d\n",(w1+w2*+b1+b2*)/ );
for(int i=;i<w2; i++)
printf("%d %d 0\n",i,i+);
for(int i=;i<w1-;i+=){
printf("%d %d 0\n",w2+i,w2+i+);
}
int id=(n-)/*+;
printf("%d %d 0\n",,id);
int cnt=;
for(int i=;i<=n; i+=){
a[cnt++]=i;
}
for(int i=;i<=n; i+=){
a[cnt++]=i;
}
for(int i=;i<b2-; i++)
printf("%d %d 1\n",a[i],a[i+]);
int d=;
for(int i=; i<b1-; i+=){
printf("%d %d 1\n",a[b2-+i],a[b2+i]);
d=max(d,b2+i);
}
for(int i=d+; ; i++)
if(a[i]!=id&&a[i]!=){
printf("%d %d 1\n",,a[i]);break;
}
}
return ;
}

hdu5302 构造的更多相关文章

  1. 2015 多校联赛 ——HDU5302(构造)

    Connect the Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  2. [2015hdu多校联赛补题]hdu5302 Connect the Graph

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5302 题意:给你一个无向图,它的边要么是黑色要么是白色,且图上的每个点最多与两个黑边两个白边相连.现在 ...

  3. 学习笔记:Maven构造版本号的方法解决浏览器缓存问题

    需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...

  4. 一步步构造自己的vue2.0+webpack环境

    前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...

  5. About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷

    构造函数用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种.特点:1:该函数的名称和所在类的名称相同.2:不需要定义返回值类型.3:该函数没有具体的返回值.记住:所有对象创 ...

  6. Eos开发——构造查询条件

    1.ajax 方式 var data = { orgid :orgid,year:year ,month: month,type:type,sortField:'sellEmpname' ,sortO ...

  7. 【C++】类和对象(构造与析构)

    类 类是一种抽象和封装机制,描述一组具有相同属性和行为的对象,是代码复用的基本单位. 类成员的访问权限 面向对象关键特性之一就是隐藏数据,采用机制就是设置类成员的访问控制权限.类成员有3种访问权限: ...

  8. Spring 设值注入 构造注入 p命名空间注入

    注入Bean属性---构造注入配置方案 在Spring配置文件中通过<constructor-arg>元素为构造方法传参 注意: 1.一个<constructor-arg>元素 ...

  9. 并发包的线程池第二篇--Executors的构造

    上一篇讲述了ThreadPoolExecutor的执行过程,我们也能看出来一个很明显的问题:这个线程池的构造函数比较复杂,对于不十分理解其运作原理的程序员,自己构造它可能体现和想象中不一样的行为.比如 ...

随机推荐

  1. crm项目整理

    crm项目整理   一.开发背景 由于公司人员的增多,原来通过excel表格存取方式过于繁琐,而且对于公司人员的调配和绩效考核等不能做到精确处理,所以开发crm系统,开始开发只是针对销售人员和客户,后 ...

  2. LeetCode 985 Sum of Even Numbers After Queries 解题报告

    题目要求 We have an array A of integers, and an array queries of queries. For the i-th query val = queri ...

  3. 通过pytty工具代理连接数据库mysql(绕开数据库白名单限制)

    1.下载putty在本机,不用安装. 2.数据库地址及端口,输入服务器账户.密码登录. 输入数据库地址.端口及本机映射端口 输入服务器账户.密码登录 然后本地新建数据库连接就可以了

  4. linux 拷贝软连接文件

    cp -s sourchfile targetfile 这样拷贝软连接文件时,会将其对应指定路径同步修改,即便原来的软连接是相对路径也不会有问题.

  5. rem设置

    html{ font-size:10vw; }

  6. P4491 [HAOI2018]染色

    题目链接:洛谷 题目大意:$n$个位置染$m$种颜色,如果出现次数恰为$S$次的颜色有$k$种,则对答案有$W_k$的贡献,求所有染色方案的答案之和$\bmod 1004535809$. 数据范围:$ ...

  7. java的错题整理

    为了阅读方便,我们写代码时要缩进,以便于更好的理解代码 对象是是具有相同属性和共同行为的一组类的实例,不是集合. B是标准格式,D没有对象接收它,所以这样子. boolean的默认值是false如果一 ...

  8. CAS 原理

    基础模式 1. 访问服务:  客户端发送请求访问应用系统提供的服务资源. 2. 定向认证:  客户端会重定向用户请求到 服务器. 3. 用户认证:用户身份认证. 4. 发放票据: 服务器会产生一个随机 ...

  9. Examples of GoF Design Patterns in Java's core libraries

    设计模式分类 stackOverflow Structural(结构模式) Adapter:把一个接口或是类变成另外一种. java.util.Arrays#asList() javax.swing. ...

  10. pip安装提示pkg_resources.DistributionNotFound: pip==18.1

    在用pip install安装依赖的时候提示pkg_resources.DistributionNotFound: pip==18.1,更新一下pip就可以了 easy_install pip==18 ...