编程之美 2013 全国挑战赛 资格赛 题目三 树上的三角形

编程之美 2013 全国挑战赛 资格赛 题目三 树上的三角形有一个 trick 的地方 当路劲数大于等于 50 左右 在题目要求的区间内 1 len 一定有满足三角形的情况 具体的可以参考斐波那契数列 最坏的情况就是斐波那契的序列 所以大数据要这样过 在 cn 50 左右直接返回 Yes include include include include include includeusing

有一个trick的地方:

当路劲数大于等于50左右,在题目要求的区间内:1 ≤ len ≤ ,一定有满足三角形的情况。具体的可以参考斐波那契数列,最坏的情况就是斐波那契的序列。所以大数据要这样过,在cn>=50左右直接返回Yes.

#include 
  
    #include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         using namespace std; int f[][2],deep[]; vector 
        
          e[]; int c[60], cn; void dfs(int fa,int x,int d) { deep[x]=d; for(int i=0;i<(int)e[x].size();i+=2) { int y=e[x][i]; if(y==fa)continue; f[y][0]=x; f[y][1]=e[x][i+1]; dfs(x,y,d+1); } } int main() { int T,ca=1; // ifstream fin; // fin.open("aaa.txt"); // cout< 
         
           >T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); // fin>>n; for(int i=1;i<=n;i++)e[i].clear(); for(int i=1;i 
          
            >a>>b>>len; e[a].push_back(b); e[a].push_back(len); e[b].push_back(a); e[b].push_back(len); } dfs(0,1,0); f[1][0]=0; printf("Case #%d:\n", ca++); int m; scanf("%d",&m); // fin>>m; while(m--) { int s,t; cn=0; scanf("%d%d",&s,&t); if(s==1 || t==1) { int tmp=(s==1)?t:s; s=1; t=tmp; while(f[t][0]!=0) { c[cn++]=f[t][1]; t=f[t][0]; if(cn>=50)break; } } else { while(deep[t]>deep[s]) { c[cn++]=f[t][1]; t=f[t][0]; if(cn>=50)break; } while(deep[s]>deep[t]) { c[cn++]=f[s][1]; s=f[s][0]; if(cn>=50)break; } while(s!=t) { c[cn++]=f[s][1]; s=f[s][0]; c[cn++]=f[t][1]; t=f[t][0]; if(cn>=50)break; } } if(cn>=50){printf("Yes\n");continue;} sort(c,c+cn); int flag=0; for(int i=0;i+2 
           
             c[i+2]){ flag=1; break; } } if(flag)printf("Yes\n"); else printf("No\n"); } } return 0; } 
            
           
          
         
        
       
      
     
    
  




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224770.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午11:10
下一篇 2026年3月17日 上午11:11


相关推荐

  • IDEA快捷键设置复制上一行

    IDEA快捷键设置复制上一行Idea真是的一个神奇的ide,用着爱不择手。之前用习惯了eclipse的“ctrl+向下箭头”,复制一行,如何设置idea里这个快捷键呢File-&gt;settings-&gt;keymap-&gt;搜索duplicate-&gt;双击DuplicateEntireLines设置一下,搞定,又可以很爽的用ctrl+向下箭头复制一行了虽说以上的一种解决方法,但是经…

    2022年5月14日
    435
  • Pycharm安装matplotlib

    Pycharm安装matplotlib在终端中通过pip3安装matplotlib后,发现pycharm中引入会报错,查了一下发现可以在Pycharm中安装matplotlib来解决:1.打开Preferences,找到ProjectInterpreter,点“+”添加2.在输入框中输入matplotlib进行搜索,然后选中要安装的包并点击下方的installpackage3.此时如果发现安装特别慢,可以…

    2022年6月16日
    30
  • 华三H3C交换机配置端口镜像之如何配置本地端口镜像和远程端口镜像(可适用一个源端口镜像给多目的端口时)

    华三H3C交换机配置端口镜像之如何配置本地端口镜像和远程端口镜像(可适用一个源端口镜像给多目的端口时)如何在华三交换机配置本地端口镜像和远程端口镜像在平时的工作中 经常需要通过日志审计设备 行为管理设备 流量分析系统设备 对网络设备上的报文流量进行分析 以了解整个网络的运行情况 这时就需要通过端口镜像的技术通过把源端口的流量复制一份到目的观察端口 管理员就可以对这些镜像报文进行监控和分析 一般一个镜像组内可以配置多个源端口 但一个端口通常只能被一个镜像组使用 可分为本地端口镜像和远程端口镜像一 本地端口镜像 源端口方式如图所示 交换机 GE1 0 2 和 GE1 0 3 口为被镜像的源端口 流量被镜像到

    2026年3月18日
    2
  • 科大讯飞语音识别语音合成webAPI调用示例(基于Python)

    科大讯飞语音识别语音合成webAPI调用示例(基于Python)

    2026年3月14日
    2
  • 并归排序(mergeSort)

    并归排序(mergeSort)一 什么是并归排序归并排序 mergesort 是一类与插入排序 交换排序 选择排序不同的另一种排序方法 归并的含义是将两个或两个以上的有序表合并成一个新的有序表 归并排序有多路归并排序 两路归并排序 可用于内排序 也可以用于外排序 这里仅对内排序的两路归并方法进行讨论 通过一张图 我们能看的更为清楚 比如我们要对 int arr 11 44 23 67 8

    2026年3月16日
    2
  • WIFEXITED WIFSTOPPED WIFSIGNALED用法

    WIFEXITED WIFSTOPPED WIFSIGNALED用法waitpid 介绍 waitpid 主要用于根据进程 ID 号等待指定的子进程 函数形式如下 pid twaitpid pid tpid int status intoptions

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号