ACM实训第十七天

Is It A Tree?

问题

考试时应该做不出来,果断放弃

树是一种众所周知的数据结构,它要么是空的(null, void, nothing),要么是一个或的集合满足以下属性的节点之间有向边连接的节点较多。
•只有一个节点,称为根节点,它没有有向边指向。
•除了根节点外,每个节点都有一条边指向它。
•从根到每个节点有一个唯一的有向边序列。
例如,考虑下面的插图,其中节点由圆圈和边表示用带箭头的线表示。前两个是树,最后一个不是。

在这个问题中,你会得到一些有向连接的节点集合的描述边缘。对于其中的每一个,您都要确定集合是否满足树的定义。
输入
输入将由一系列描述(测试用例)和一对负整数组成。每个测试用例将由边缘描述序列组成,每个边缘后面跟着一对零描述将由一对整数组成;第一个整数标识该边从哪个节点出发开始,第二个整数标识该边所指向的节点。节点号将总是大于0。
输出
对于每个测试用例,显示“case k是一个树”这行。’或者‘Case k不是树’这条线。”,即K对应于测试用例编号(它们从1开始顺序编号)。 

思路

    ①先判断是不是空树,如果是空树(直接输入两个0),就直接判断是树;

    ②然后找这棵树的根节点,如果有一个节点它的入度为0而出度不为0,那它就是根节点,如果没有找到这样的结点就判断它不是树;

    ③在找到一个根节点之后,用广度优先遍历的方法,通过根节点遍历一遍这棵树,如果两次遍历到同一个结点,那就说明这个结点的入度不是1,这就不是树;

    ④广度优先遍历结束之后,如果所有的结点都被访问过了,那就说明这是树,否则就不是树(不是连通的)。

代码 

#include <cstdio>
#include <cstdlib>
#include <climits>
#include <memory>
#include <cstring>
#include <cmath>
#include <queue>
#include <map>
#include <iostream>
using namespace std;const int maxn = 10000;int first[maxn];
int second[maxn];
int counter;
bool visited[maxn];queue<int> q;bool isRoot(int index, int counter)
{bool retVal = false;for(int i = 0; i < counter; i++){if(second[i] == index) return false;if(first[i] == index) retVal = true;}return retVal;
}int main()
{int number = 0;int first_in, second_in;while(cin>>first_in>>second_in){if(first_in == -1 || second_in == -1) break;if(first_in == 0 && second_in == 0){printf("Case %d is a tree.\n", ++number);continue;}counter = 0;memset(visited, 0, sizeof(visited));do{if(first_in == 0 && second_in == 0) break;first[counter] = first_in;second[counter] = second_in;++counter;}while(cin>>first_in>>second_in);// find a root nodeint index;for(index = 0; index < maxn; index++){if(isRoot(index, counter)) break;}if(index == maxn){printf("Case %d is not a tree.\n", ++number);continue;}while(!q.empty()) q.pop();q.push(index);bool isTree = true;int treesize = counter;while(!q.empty()){int root = q.front();q.pop();if(visited[root]){isTree = false;break;}visited[root] = true;for(int i = 0; i < counter; i++){if(first[i] == root){q.push(second[i]);--treesize;}}}if(!isTree || treesize != 0)printf("Case %d is not a tree.\n", ++number);elseprintf("Case %d is a tree.\n", ++number);}
}

Global Raining at Bididibus

问题

好难呀

 

思路

(⊙o⊙)…这道题网络上居然没有找到解题方法

代码 

在CSDN上看到唯一提到这道题的点进去发现居然是我自己


【碎碎念】

我终于知道为什么往届同学做这套题的很少,原来是因为太难了QAQ

这套题第一道题和第三道题可以尝试去做,第二套争取会做


Tokitsukaze and All Zero Sequence

代码 

#include<stdio.h>
int main(){int t;scanf("%d",&t);for(int i=0;i<t;i++){int flag=0;//注意初始化 int ch;int n;int a[101]={0};scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&ch);a[ch]++;if(a[ch]>1)//注意是大于1 flag=1;}if(a[0]>0)	printf("%d\n",n-a[0]);else {if(flag==1)printf("%d\n",n);//输出0和1时不要弄混 if(flag==0)printf("%d\n",n+1);}}return 0;
}

Aggressive cows 

代码

#include<iostream> 
#include<cstdio>
#include<algorithm>
#include<cstdlib>
using namespace std;
int n,c;
int a[100005];bool fun(int m){int cnt=1,cur=0,next=1;while(next<n){next++;if(a[next]-a[cur]>=m){cnt++;cur=next;}}if(cnt>=c) return true;else return false;
}
int main(){scanf("%d %d",&n,&c);for(int i=0;i<n;i++){scanf("%d",&a[i]);}int l=a[0],r=a[n-1];int ans=0;sort(a,a+n);while(l<=r){int mid=(l+r)/2;if(fun(mid)){ans=mid;l+mid+1;}else{r=mid-1;}}printf("%d",ans);return 0;
}

Brainman

代码

#include<iostream> 
#include<stdio.h> 
using namespace std;const int n=200000;
int a[n];//一个N个数的序列int main(){int m;scanf("%d",&m);//场景的数量 for(int k=1;k<=m;k++) {int p;sccanf("%d",&p);//长度 for(int i=1;i<=p;i++)scanf("%d",&a[i]) ;//元素 int cnt=0;for(int i=1;i<=p;i++){for(int j=i+1;j<=p;j++){if(a[i]>a[j])//交换位置 cnt++;}}printf("Scenario #%d:\n%d\n\n",k,cnt);}return 0;
}

Tokitsukaze and Good 01-String (hard version)

 代码

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>using namespace std;
typedef long long ll;const int N = 2e5 + 10;
int n;
string s;int main()
{int T;cin >> T;while(T--){cin >> n >> s;int x = 0, y = 0;char last = ' ';for (int i = 0; i < s.size(); i += 2){if (s[i] != s[i+1])x++;else{if (last != s[i])y++;last = s[i];}}printf("%d %d\n", x, (y > 1) ? y : 1);}return 0;
}

学习规划

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Crypto】摩丝

文章目录 一、摩斯解题感悟 一、摩斯 很明显莫尔斯密码 iloveyou还挺浪漫 小小flag&#xff0c;拿下 解题感悟 莫尔斯密码这种题还是比较明显的

智能锁千千万,谁是你的NO.1,亲身实测凯迪仕传奇大师K70旗舰新品

智能锁千千万&#xff0c;谁是你的NO.1。欢迎来到智哪儿评测室&#xff0c;这次我们为大家带来了凯迪仕传奇大师K70系列的一款重磅新品。 在科技的浪潮中&#xff0c;家居安全领域正经历着前所未有的变革。智能锁越来越成为家的安全守护神&#xff0c;以及智能生活的得力助手。…

Android 11 Framework实时监听Activity堆栈变化

核心类 Framework中有一个类SystemActivityMonitoringService专门用于监控Activity堆栈变化&#xff0c;属于隐藏Api&#xff0c;应用侧无法调用。此类位于 packages/services/Car/service/src/com/android/car/SystemActivityMonitoringService.java 方法 void registerTa…

大数据Hive中的UDF:自定义数据处理的利器(下)

在上一篇文章中&#xff0c;我们对第一种用户定义函数&#xff08;UDF&#xff09;进行了基础介绍。接下来&#xff0c;本文将带您深入了解剩余的两种UDF函数类型。 文章目录 1. UDAF1.1 简单UDAF1.2 通用UDAF 2. UDTF3. 总结 1. UDAF 1.1 简单UDAF 第一种方式是 Simple(简单…

每日一题《leetcode--382.链表随机结点》

https://leetcode.cn/problems/linked-list-random-node/ 这道题我们首先看到题目中的要求&#xff1a;在单链表中随机选取一个链表中的结点&#xff0c;要使每个结点被选取的概率是一样的。 当我们看到随机这两个字时&#xff0c;应该就会想起rand()这个函数。接着我们把使用这…

自己搭建内网穿透

本文介绍使用最新版frp搭建内网穿透&#xff0c;最新版本的frp在配置上与之前有很大不同&#xff0c;需要使用.toml文件进行配置。其中主要问题出现在toml文件内部。 一、云服务器配置 下载frp sudo apt update sudo apt install wget wget https://github.com/fatedier/frp…

求出这行英文中最后一个单词的长度

【题目描述】蓝宝看到了一行奇怪的英文&#xff0c;这行英文由若干单词组成&#xff0c;每个单词前后用一些字符*隔开请帮助蓝宝求出这行英文中最后一个单词的长度。【输入格式】 输入一行&#xff0c;就就是蓝宝看到的奇怪的英文。 【输出格式】 输出一行&#xff0c;是个整数…

文旅3d仿真数字人形象为游客提供全方位的便捷服务

在AI人工智能与VR虚拟现实技术的双重驱动下&#xff0c;文旅3D数字代言人正以其独特的魅力&#xff0c;频频亮相于各类文旅场景&#xff0c;为游客带来前所未有的个性化服务体验。他们不仅有趣有品&#xff0c;更能言善道&#xff0c;成为文旅业数字化发展的新亮点。 这些文旅3…

我的文章分类合集目录

文章目录 Java相关基础常规问题类Docker类RabbitMQ类分库分表 网络工程相关路由交换、Cisco Packet TracerIP地址 前端相关数据库 Java相关 基础 Java开发规范、项目开发流程 SpringBoot整合MyBatis实现增删改查(简单,详细) SpringBoot整合MybatisPlus&#xff08;详细&#…

【搜索】BFS

#include <iostream> #include <cstring> #include <queue>using namespace std;const int N 110;typedef pair<int, int> PII;int n, m; int g[N][N], d[N][N];//存放地图//存每一个点到起点的距离int bfs() {queue< PII > q;q.push({0, 0});m…

16.js数学方法和进制转换

数学方法 &#xff08;1&#xff09;Math.random() 默认生成0-1的随机数 var resMath.random() console.log(res) &#xff08;2&#xff09;Math.round(数字) 取整&#xff1a;正数-四舍五入 负数-5舍6入 var resMath.round(11)console.log(res) //11var res1Math.round(1…

CentOS7安装内网穿透实现远程推送镜像到本地Docker Registry

文章目录 前言1. 部署Docker Registry2. 本地测试推送镜像3. Linux 安装cpolar4. 配置Docker Registry公网访问地址5. 公网远程推送Docker Registry6. 固定Docker Registry公网地址 前言 本文主要介绍如何部署Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现…

网络安全之重发布与路由策略详解

重发布&#xff1b;import &#xff08;路由导入&#xff09; 将不同方式&#xff08;直连、静态、缺省、其他协议&#xff09;的路由器重发布进入RIP&#xff0c;OSPF中。 注意&#xff1a;1、华为中不能将缺省路由重发布进入RUO协议&#xff08;思科也是一样&#xff09;。…

Mac下QT开发环境搭建详细教程

QT Qt是一个跨平台的C应用程序框架&#xff0c;用于开发具有图形用户界面&#xff08;GUI&#xff09;的应用程序&#xff0c;同时也可用于开发非GUI程序&#xff0c;比如控制台工具和服务器。Qt是设计成通用、可移植和高效的&#xff0c;它广泛应用于全球的企业和开发者社区中…

青少年 CTF 练习平台:Misc(一)

前言 当然&#xff0c;我可以更详细地介绍一下青少年CTF练习平台。 青少年CTF练习平台是一个专为青少年设计的网络安全竞赛和训练平台。该平台由思而听&#xff08;山东&#xff09;网络科技有限公司与克拉玛依市思而听网络科技有限公司共同建设&#xff0c;自2018年创建以来…

图论定理汇总(二)

第六章 平面图 (一)、平面图的概念 定义1 如果能把图 G G G画在平面上&#xff0c;使得除顶点外&#xff0c;边与边之间没有交叉&#xff0c;称 G G G可嵌入平面&#xff0c;或称 G G G是可平面图。可平面图 G G G的边不交叉的一种画法&#xff0c;称为 G G G的一种平面嵌入&…

入门四认识HTML

一、HTML介绍 1、Web前端三大核心技术 HTML&#xff1a;负责网页的架构 CSS&#xff1a;负责网页的样式、美化 JS&#xff1a;负责网页的行动 2、什么是HTML HTML是用来描述网页的一种语言。 3、Html标签 单标签<html> 双标签<h>内容</h> 4、标…

spring boot整合j2cache 关闭二级缓存

我们整合了 j2cache 的项目启动 日志会输出 一级缓存 二级缓存 一级是 EhCacheProvider 二级是 SpringRedisProvider 如果 我们不想用二级缓存 在 j2cache.properties 中 加上 j2cache.12-cache-open配置 值为 true/false true是启用二级缓存 false 是不起用 默认 true 所以 …

多输入多输出 | Matlab实现GA-CNN遗传算法优化卷积神经网络多输入多输出预测

多输入多输出 | Matlab实现GA-CNN遗传算法优化卷积神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现GA-CNN遗传算法优化卷积神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现GA-CNN遗传算法优化卷积神经网络多输入多输出预测&…

企业防泄密软件有哪些,哪个排名最好

机密数据的泄密对于企业而言&#xff0c;已成为最大的信息安全威胁之一。近年来企业面对的最大威胁来自于内部&#xff0c;以利益为出发点的互联网信息犯罪及案件&#xff0c;在世界各地不断传出&#xff0c;因此&#xff0c;信息保护与管控将逐渐成为企业信息安全重点部署项目…