P3844【黄】
这道题做的极其折磨
因为最开始小看这道题了,没用稳扎稳打的码风来写代码,直接用的那种可读性极差但勉强能跑的代码写的,最后没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【黄】的更多相关文章
- Hilbert-Huang Transform(希尔伯特-黄变换)
在我们正式开始讲解Hilbert-Huang Transform之前,不妨先来了解一下这一伟大算法的两位发明人和这一算法的应用领域 Section I 人物简介 希尔伯特:公认的数学界“无冕之王”,1 ...
- 关于小黄车(ofo共享单车)使用的问题
小黄车即ofo共享单车,号称是全球创立最早.成长最快.规模最大的无桩共享单车创业公司,缔造了"共享单车"概念,致力于解决城市出行问题.它的出现给大家带来了方便,作为一个商业运行的公 ...
- WINDOWS下如何安装GCC(转载http://nirvana.cublog.cn;作者:北斗星君(黄庠魁))
第一章 在视窗操作系统下的GCC 第一节 GCC家族概览 GCC 是一个原本用于 Unix-like 系统下编程的编译器.不过,现在 GCC 也有了许多 Win32 下的移植版本.所以,也许对于许多 ...
- 黄聪:《跟黄聪学WordPress插件开发》
续<跟黄聪学WordPress主题开发>之后,又一个作品完成!<跟黄聪学Wordpress插件开发>,国内最好的Wordpress插件开发视频教程!! 目录预览: WordPr ...
- Hilbert-Huang Transform: matlab 希尔伯特-黄变换: matlab实现
关于Hilbert-Huang的matlab实现,材料汇总,比较杂...感谢所有网络上的贡献者们:) 核心:以下代码计算HHT边际谱及其对应频率 工具包要求:G-Rilling EMD Toolbox ...
- css3实现小黄人
效果就像这样: 不废话,直接上代码! hrml代码: <!DOCTYPE html> <html> <head lang="zh"> <m ...
- 黄永成-thinkphp讲解-个人博客讲解25集
整个网站的根目录用blog你要跟别人说起,自己好识别的文件夹名字. 下面的项目名称 就不再重复的写了, 直接用App就好了. 网站访问: ...../index.php(入口文件)/Admin(模块名 ...
- 黄学长模拟day1 某种密码
关于某种密码有如下描述:某种密码的原文A是由N个数字组成,而密文B是一个长度为N的01数串,原文和密文的关联在于一个钥匙码KEY.若KEY=∑▒[Ai*Bi],则密文就是原文的一组合法密码. 现在有原 ...
- RCA端子颜色(红、白、黄)
RCA端子(红白黄)的作用: 黄:视频 红:左声道 白:右声道 RCA为两口插头,红色代表左声道,白色为右声道,3.5(AUX口)同样为立体声接头,虽然它只有一个端口,同样也具有左右声道分开传输的功能 ...
- 纯CSS3画出小黄人并实现动画效果
前言 前两天我刚发布了一篇CSS3实现小黄人动画的博客,但是实现的CSS3动画是基于我在站酷网找到的一张小黄人的jpg格式图片,并自己用PS抠出需要实现动画的部分,最后才完成的动画效果.但是,其实我的 ...
随机推荐
- Kylin Linux Advanced Server V10 上安装 Nacos详细步骤
要在 Kylin Linux Advanced Server V10 上安装 Nacos,可以按照以下进行操作:1.安装 Java JDK:首先确保已在 Kylin Linux Advanced Se ...
- [算法考研笔记]mm算法随笔[成绩划分][回溯0-1][得分][字段和][聪明小偷][股票买卖]
mm算法随笔 学习笔记(回溯算法) 回溯 <---->递归1.递归的下面就是回溯的过程 回溯法是一个 纯暴力的 搜索.有的时候暴力求解都没有办法,用回溯可以解决. 回溯法解决的问题: 组合 ...
- 如何使用sharding-sphere完成读写分离和分库分表?
一.sharding-sphere配置读写分离 1.先搭建好一个MySQL的主从集群,可以参考[MySQL主从集群搭建] 2.在项目中导入相关依赖(记得刷新Maven) <!--读写分离--&g ...
- 如何基于 k8s做私有化部署
公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 随着国内数字化转型的加速和国产化进程推动,软件系统的私有化部署已经成为非常热门的话题,因为私有化部署赋予了企业更大的灵活和 ...
- C++中数字与字符串之间的转换(转载自http://www.cnblogs.com/luxiaoxun/)
C++中数字与字符串之间的转换 1.字符串数字之间的转换(1)string --> char * string str("OK"); char * p = str ...
- 神经网络优化篇:为什么正则化有利于预防过拟合呢?(Why regularization reduces overfitting?)
为什么正则化有利于预防过拟合呢? 通过两个例子来直观体会一下. 左图是高偏差,右图是高方差,中间是Just Right. 现在来看下这个庞大的深度拟合神经网络.知道这张图不够大,深度也不够,但可以想象 ...
- Selenium浏览器属性、提取数据
浏览器属性 在使用selenium过程中,实例化driver对象后,driver对象有一些常用的属性和方法 driver.page_source 当前标签页浏览器渲染之后的网页源代码. driver. ...
- AD域配置和域用户登录
DSC控制台连接域服务器的基准DN选中域服务器会显示 客户端电脑无法连接服务器时将DNS填写成域服务器IP,并将网络改成自动获取
- MySQL5.7允许远程root访问
MySQL5.7允许远程root访问 登录你的服务器MySQL mysql -u root -p MySQLroot密码 GRANT ALL PRIVILEGES ON *.* TO 'root'@' ...
- JDK1.8下载阿里云盘不限速
JDK1.8下载阿里云盘不限速 专门给你写篇jdk文章容纳方便下载 废话不多说直接上链接 「jdk-8u202-windows-x64.exe」https://www.aliyundrive.com/ ...