hdu4786:http://acm.hdu.edu.cn/showproblem.php?pid=4786

题意:给你一个无向图,然后其中有的边是白色的有的边是黑色的。然后问你是否存在一棵生成树,在这课生成树上白色边的数量是一个斐波那契数。

题解:完全没有那样的思想,一道现场水题,就是不会啊,实力太弱 啊。注定打铁啊。这一题是这样的,采用极端思维:就是分别用白色和黑色优先的边去求生成树,得到一个白色数量的区间。这里需要理解的是,白色边的数目,可以在这个区间内变化。也就是构成生成树的白色边的数量在这个区间内,如果这个区间内的数没有一个是斐波那契数,那么就不可能了。同时处理出1e5以内的斐波那契数。

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=2e5+;
int fa[N],f[],vis[N];
int n,m,u,v,w;
struct Node{
int u,v;
int w;
bool operator<(const Node a)const {
return w>a.w;
}
}edge1[N];
struct Node1{
int u,v;
int w;
bool operator<(const Node1 a)const {
return w<a.w;
}
}edge2[N];
void init(){
for(int i=;i<=n;i++)
fa[i]=i;
}
int Find(int x){
int s;
for(s=x;s!=fa[s];s=fa[s]);
while(x!=s){
int temp=fa[x];
fa[x]=s;
x=temp;
}
return s;
}
int solve1(){//黑色优先
int ct=,num=;
for(int i=;i<=m;i++){
int u=Find(edge1[i].u);
int v=Find(edge1[i].v);
if(u!=v){
fa[u]=v;
if(edge1[i].w==)
ct++;
num++;
}
if(num==n-)
return ct;
}
return ;
}
int solve2(){
init();
int ct=,num=;
for(int i=;i<=m;i++){
int u=Find(edge2[i].u);
int v=Find(edge2[i].v);
if(u!=v){
fa[u]=v;
if(edge2[i].w==)
ct++;
num++;
}
if(num==n-)
return ct;
}
return ;
}
int main(){
int T,tt=;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
init();
for(int i=;i<=m;i++){
scanf("%d %d %d",&u,&v,&w);
edge1[i].u=u;edge1[i].v=v;edge1[i].w=w;
edge2[i].u=u;edge2[i].v=v;edge2[i].w=w;
}
sort(edge1+,edge1+m+);
sort(edge2+,edge2+m+);
int ll=solve2();
int rr=solve1();
memset(f,,sizeof(f));
memset(vis,,sizeof(vis));
f[]=;f[]=;
for(int i=;i<=;i++){
f[i]=f[i-]+f[i-];
vis[f[i]]=;
}
bool flag=false;
for(int i=ll;i<=rr;i++)
if(vis[i]){
flag=true;
break;
}
if(flag)printf("Case #%d: Yes\n",tt++);
else
printf("Case #%d: No\n",tt++);
}
}

Fibonacci Tree的更多相关文章

  1. HDU 4786 Fibonacci Tree

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) P ...

  2. hdu 4786 Fibonacci Tree (2013ACMICPC 成都站 F)

    http://acm.hdu.edu.cn/showproblem.php?pid=4786 Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) ...

  3. hdoj 4786 Fibonacci Tree【并查集+最小生成树(kruskal算法)】

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  4. Fibonacci Tree(最小生成树,最大生成树)

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. HDU 4786 Fibonacci Tree 最小生成树

    Fibonacci Tree 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4786 Description Coach Pang is intere ...

  6. HDU 4786 Fibonacci Tree (2013成都1006题)

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  7. hdu 4786 Fibonacci Tree(最小生成树)

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  8. HDU 4786 Fibonacci Tree(生成树,YY乱搞)

    http://acm.hdu.edu.cn/showproblem.php? pid=4786 Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others ...

  9. POJ 4786 Fibonacci Tree

    Fibonacci Tree Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ...

  10. 【2013 ICPC亚洲区域赛成都站 F】Fibonacci Tree(最小生成树+思维)

    Problem Description Coach Pang is interested in Fibonacci numbers while Uncle Yang wants him to do s ...

随机推荐

  1. android 64 sd卡读写的操作

    package com.itheima.writesd; import java.io.File; import java.io.FileNotFoundException; import java. ...

  2. GDB-Dashboard-GDB可视化界面

    项目地址 https://github.com/cyrus-and/gdb-dashboard 项目介绍 gdb-dashboard是一个gdb的可视化界面,可以通过web或者终端来现实可视化信息,支 ...

  3. WebService学习笔记系列(三)

    网上有一些提供webservice服务的网站,我们要怎么调用呢? 今天来看个如何调用手机归属地查询服务.这个网站上提供了许多webservice服务,其中包括手机归属地查询服务,我们今天就用wsimp ...

  4. VS中新建网站和新建项目web应用程序的区别?(实际应用总结一点)

    1,在网站中是没有命名空间namespace这个概念的.例如公共类只有放在App_Code里(不但是公共类,所有的类都应放在这里),其他的类或者页面才可以引用.有using这个概念,但没有namesp ...

  5. app抓包

    http://www.360doc.com/content/14/1126/11/9200790_428168701.shtml 记得下载证书  不然有些网站是抓不到的

  6. 【锋利的jQuery】学习笔记04

    第四章 jQuery中的事件和动画 一.jQuery中的事件 加载DOM 在JS中等待页面加载完成通常使用window.onload方法,而在jQuery中则使用$(document).ready() ...

  7. ssh 无密码登录远程服务器

    在讲下文之前,我都默许大家都已经生成了自己的ssh公钥和密钥,在自己的~/.ssh 目录下面,如果没有,请使用 ssh-keygen -t rsa -C "你的邮箱" 命令生成 1 ...

  8. Windows服务安装方法

    操作系统:Win8.1 安装方法:在命令行窗口中输入:InstallUtil service.exe 出错原因:需要以管理员身份启动命令行.

  9. ios专题 - openSSL

    1  概述 1.1  产生背景 基 于万维网的电子商务和网上银行等新兴应用,极大地方便了人们的日常生活,受到人们的青睐.由于这些应用都需要在网络上进行在线交易,它们对网络通信的安全 性提出了更高的要求 ...

  10. Gulp(一)

    一.简介 gulp 是基于 Nodejs 的自动任务运行器,能自动化地完成javascript/coffee/sass/less/html/image/css等文件的的测试.检查.合并.压缩.格式化. ...