这道题做的极其折磨

因为最开始小看这道题了,没用稳扎稳打的码风来写代码,直接用的那种可读性极差但勉强能跑的代码写的,最后没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. TIOBE 12月榜单: C# 即将成为2023 年度编程语言

    TIOBE 公布了 2023 年 12 月的编程语言排行榜. 2022年C# 在挑战成为年度编程语言,但在最后一刻,C++出人意料地夺得了冠军.今年,我们确信 C# 将获胜成为2023年度编程语言.它 ...

  2. 基于.NetCore开发博客项目 StarBlog - (30) 实现评论系统

    前言 时隔五个月,终于又来更新 StarBlog 系列了~ 这次是呼声很大的评论系统. 由于涉及的代码量比较大,所以本文不会贴出所有代码,只介绍关键逻辑,具体代码请同学们自行查看 GitHub 仓库. ...

  3. MySQL运维8-Mycat范围分表

    一.范围分片 根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片. 说明1:范围分片会提前提供一个分片的范围默认是0-500万是一个分片,500万-1000万是一个分片,10 ...

  4. 三维GIS引擎用什么好?结合目前市面上的主流引擎进行分析

    相信大多数人在谈到三维GIS引擎时,第一个想到的首先是CesiumJS,CesiumJS以其免费开源的特点,快速占领了三维GIS这个领域,同时也催生了许多以CesiumJS为基础的衍生产品.Cesiu ...

  5. cgroup的入门资料

    近期在准备特性的设计文档,按照评审专家的建议,需要排查现有产品中算力资源比如CPU.内存的分配方案,确认现有的硬件款型是否具备充足的资源来启用本特性. 依据前辈提供的建议,检查了产品的部署脚本,发现当 ...

  6. java框架Mybatis的第一个程序

    1:什么是MyBatis MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配 ...

  7. MySQL 基础(三)事务与 MVCC

    事务 事务是一组原子性的 SQL 操作,或者被称为一个独立的工作单元,如果数据库引擎能够成功地对数据库应用该组的全部 SQL 语句,那么就会全部执行,否则全部不执行. 事务的特性 在关系数据库管理系统 ...

  8. HTTP安全头部对jsp页面不生效

    本文于2016年4月底完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 诡异的问题 AppScan扫描报告中提示,Web服务器返回js.cs ...

  9. 【pandas小技巧】--目录(完结)

    pandas小技巧系列是介绍的是使用pandas分析数据时,最常用的一些操作技巧. 具体包括: 创建测试数据 学习pandas的过程中,为了尝试pandas提供的各类功能强大的函数,常常需要花费很多时 ...

  10. spring-cloud-alibaba项目打包

    在父依赖中加入 <build> <plugins> <plugin> <groupId>org.springframework.boot</gro ...