这道题做的极其折磨

因为最开始小看这道题了,没用稳扎稳打的码风来写代码,直接用的那种可读性极差但勉强能跑的代码写的,最后没AC只有73分调了好久也没调对,甚至逐渐调成了64、55越来越低的分。这有多方面原因,一方面是读题不仔细,错会题意了;二是没用标准解法,用的是自己的图快点写完的那种简单dfs瞎**搜;三是没用OOP思想,这类题应该用OOP思想的。

后来调了好久,偶然发现了一个获取不让下载的洛谷的小数据的办法,只是不能多用,否则可能会被封号,虽然没有明令禁止,但解释权在人家手里还是别惹人家为好。原理很简单,直接输出输入数据,第一次的代码输出的是输入的第一个数据,第二个则输出输入的第二个数据,以此类推。在WA界面就能看到“某行某列输出了**,期望是**”或者AC,就知道那个输入数据是多少了。换句话说一次评测能达到一个字符,效率极低,仅适用于实在做不出来急缺hack数据的时候使用,还得要求输入数据别太大,最好事先检查一下到底打不打再决定用不用这个方法

Code

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <map>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
int b[105],p[1000],l[1000],r[1000],np[1000],nl[1000],nr[1000],A[100000],Tflag=0,tans,w,u,n,x,y,ans=1e8,nomax=-1e8;
void redfs(int i,int j)
{
b[i]=1;b[j]=1;
np[j]=i;
if(nl[i]==0)nl[i]=j; else nr[i]=j;
if(l[j]<=n&&l[j]>=1&&b[l[j]]==0&&l[j]!=0)redfs(j,l[j]);
if(r[j]<=n&&r[j]>=1&&b[r[j]]==0&&r[j]!=0)redfs(j,r[j]);
if(p[j]<=n&&p[j]>=1&&b[p[j]]==0&&p[j]!=0)redfs(j,p[j]);
}
int dfs1(int i,int to,int step)
{
if(i==to)
{
return step;
}
b[i]=1;
int ans;
if(p[i]!=0&&b[p[i]]==0)if((ans=dfs1(p[i],to,step+2))!=-1) return ans;
if(l[i]!=0&&b[l[i]]==0)if((ans=dfs1(l[i],to,step+1))!=-1) return ans;
if(r[i]!=0&&b[r[i]]==0)if((ans=dfs1(r[i],to,step+1))!=-1) return ans;
return -1;
}
void dfs2(int i,int step)
{
ans=max(step,ans);
b[i]=step;
if(p[i]!=0&&b[p[i]]==0)dfs2(p[i],step+1);
if(l[i]!=0&&b[l[i]]==0)dfs2(l[i],step+1);
if(r[i]!=0&&b[r[i]]==0)dfs2(r[i],step+1);
} int main()
{
cin>>n;
for(int i=1;i<=n-1;i++)
{
cin>>w>>u;
if(p[w]==0)p[w]=u;else if(l[w]==0)l[w]=u;else r[w]=u;
if(p[u]==0)p[u]=w;else if(l[u]==0)l[u]=w;else r[u]=w;
}
cin>>x>>y;
//for(int i=1;i<=n;i++)cout<<p[i]<<' '<<l[i]<<' '<<r[i]<<endl;
redfs(0,1);
for(int i=1;i<=n;i++)p[i]=np[i],r[i]=nr[i],l[i]=nl[i];
//for(int i=1;i<=n;i++)cout<<p[i]<<' '<<l[i]<<' '<<r[i]<<endl;
ans=-1e8;for(int i=1;i<=n;i++)b[i]=0;
dfs2(1,1);
cout<<ans<<endl;
for(int i=1;i<=n;i++)A[b[i]]++;
ans=-1e8;
for(int i=1;i<100000;i++)
ans=max(ans,A[i]);
cout<<ans<<endl; for(int i=1;i<=n;i++)b[i]=0;
cout<<dfs1(x,y,0)<<endl;
return 0;
}
/* 6
4 5
2 6
4 2
1 3
4 1
2 5 6
4 5
2 6
4 2
1 3
1 4
2 5 6
4 5
2 6
4 2
1 3
4 1
5 2 6
4 5
2 6
4 2
1 3
1 4
5 2
*/

P3844【黄】的更多相关文章

  1. Hilbert-Huang Transform(希尔伯特-黄变换)

    在我们正式开始讲解Hilbert-Huang Transform之前,不妨先来了解一下这一伟大算法的两位发明人和这一算法的应用领域 Section I 人物简介 希尔伯特:公认的数学界“无冕之王”,1 ...

  2. 关于小黄车(ofo共享单车)使用的问题

    小黄车即ofo共享单车,号称是全球创立最早.成长最快.规模最大的无桩共享单车创业公司,缔造了"共享单车"概念,致力于解决城市出行问题.它的出现给大家带来了方便,作为一个商业运行的公 ...

  3. WINDOWS下如何安装GCC(转载http://nirvana.cublog.cn;作者:北斗星君(黄庠魁))

    第一章 在视窗操作系统下的GCC 第一节 GCC家族概览 GCC 是一个原本用于 Unix-like 系统下编程的编译器.不过,现在 GCC 也有了许多 Win32 下的移植版本.所以,也许对于许多 ...

  4. 黄聪:《跟黄聪学WordPress插件开发》

    续<跟黄聪学WordPress主题开发>之后,又一个作品完成!<跟黄聪学Wordpress插件开发>,国内最好的Wordpress插件开发视频教程!! 目录预览: WordPr ...

  5. Hilbert-Huang Transform: matlab 希尔伯特-黄变换: matlab实现

    关于Hilbert-Huang的matlab实现,材料汇总,比较杂...感谢所有网络上的贡献者们:) 核心:以下代码计算HHT边际谱及其对应频率 工具包要求:G-Rilling EMD Toolbox ...

  6. css3实现小黄人

    效果就像这样: 不废话,直接上代码! hrml代码: <!DOCTYPE html> <html> <head lang="zh"> <m ...

  7. 黄永成-thinkphp讲解-个人博客讲解25集

    整个网站的根目录用blog你要跟别人说起,自己好识别的文件夹名字. 下面的项目名称 就不再重复的写了, 直接用App就好了. 网站访问: ...../index.php(入口文件)/Admin(模块名 ...

  8. 黄学长模拟day1 某种密码

    关于某种密码有如下描述:某种密码的原文A是由N个数字组成,而密文B是一个长度为N的01数串,原文和密文的关联在于一个钥匙码KEY.若KEY=∑▒[Ai*Bi],则密文就是原文的一组合法密码. 现在有原 ...

  9. RCA端子颜色(红、白、黄)

    RCA端子(红白黄)的作用: 黄:视频 红:左声道 白:右声道 RCA为两口插头,红色代表左声道,白色为右声道,3.5(AUX口)同样为立体声接头,虽然它只有一个端口,同样也具有左右声道分开传输的功能 ...

  10. 纯CSS3画出小黄人并实现动画效果

    前言 前两天我刚发布了一篇CSS3实现小黄人动画的博客,但是实现的CSS3动画是基于我在站酷网找到的一张小黄人的jpg格式图片,并自己用PS抠出需要实现动画的部分,最后才完成的动画效果.但是,其实我的 ...

随机推荐

  1. 后端程序员必会的前端知识-03:Vue2

    三. Vue 2 1. Vue 基础 1) 环境准备 安装脚手架 npm install -g @vue/cli -g 参数表示全局安装,这样在任意目录都可以使用 vue 脚本创建项目 创建项目 vu ...

  2. Educational Codeforces Round 160 (Rated for Div. 2) 题解A~D

    Educational Codeforces Round 160 (Rated for Div. 2) A. Rating Increase 纯暴力,分割字符串,如果n1<n2就输出,如果遍历完 ...

  3. TensorFlow C++ 初始化 Tensor 内存 到GPU 内存

    最近使用TensorFlow C++版本实现神经网络的部署,我通过GPU 处理得到网络的输入值,因此输入值在GPU内存上保存, TF 输入tensor 的调用语句为 Tensor inputTenso ...

  4. 如何有效应对员工违规使用U盘的情况?

    在面对员工违规使用U盘的挑战时,华企盾DSC数据防泄密系统提供了一套综合而高效的解决方案. 通过系统的U盘加密功能,我们能够防止未经授权的U盘访问,确保敏感数据不会被非法传输.这一层保护不仅是基础性的 ...

  5. 数字孪生和GIS融合后能够为城市交通带来哪些便利?

    数字孪生和GIS的融合对于城市交通领域带来了诸多便利,从智能交通管理到出行体验的提升,为城市交通带来了全新的发展机遇. 首先,数字孪生技术与GIS的结合可以实现智能交通管理.通过GIS建立城市交通网络 ...

  6. 一键式调试工具—Reqable 使用指南

    简介 Reqable是一款跨平台的专业HTTP开发和调试工具,在全平台支持HTTP1.HTTP2和HTTP3(QUIC)协议,简单易用.功能强大.性能高效,助力程序开发和测试人员提高生产力!本产品需要 ...

  7. 0X01 位运算笔记

    位运算,经常可以用来处理一些数学或动归方面的问题,通常会在数据范围较小的情况下使用. 为方便起见,一个 \(\mathrm{n}\) 位二进制数从右到左分别为第 \(\mathrm{0 \sim n ...

  8. 车机必备软件-小白点EasyTouch(类似苹果的悬浮球,返回,清理垃圾,杀进程)

    简介 有些小伙伴升级车机后,由于部分软件打开后处于全屏状态无法返回,这里我教大家如何解决.解决办法就是:在车机上安装这款小白点软件,这款软件体积小巧,不占内存,操作也十分方便,它能帮助你快速回到主屏幕 ...

  9. Sermant重磅更新,1.3.0 release版本发布

    本文分享自华为云社区<新特性速览!Sermant重磅更新,1.3.0 release版本发布>,作者:华为云开源. Sermant社区在12月份正式发布了1.3.0 release版本,这 ...

  10. 聊聊GaussDB AP是如何执行SQL的

    本文分享自华为云社区<GaussDB AP是如何执行SQL的>,作者:yd_270088468. 前言 介绍GaussDB AP各组件是如何协调工作的,会着重介绍SQL引擎. 1.SQL引 ...