7-9.小字辈

思路:建立一个类,并且类中存有其父节点,其地位,其儿子节点(因为儿子节点有很多,所以要用vector进行存储),通过-1这个祖先节点进行查找。首先找到-1这个祖先节点,并且读入其他位置的父节点,与此同时其父节点中儿子节点也有此节点————>然后进行递归查找,以类为类型建立队列,祖先节点进队列,然后for循环给其儿子节点的地位+1,并且让其儿子节点进行入队列,自己出队列,直到队列空————>找到地位的最大值,输出结果

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cmath>
4 #include<cstdio>
5 #include<cstring>
6 #include<set>
7 #include<queue>
8 #include<vector>
9 using namespace std;
10 const int maxx=1e5+10;
11 struct num{
12 int father;
13 int rankk;
14 vector<int> son;
15 }a[maxx];
16 int dfs(int x){
17 queue<num> s;
18 s.push(a[x]);
19 num Q;
20 while(!s.empty()){
21 Q=s.front();
22 for(int i=0;i<Q.son.size();i++){
23 a[Q.son[i]].rankk=Q.rankk+1;
24 s.push(a[Q.son[i]]);
25 }
26 s.pop();
27 }
28 return Q.rankk;
29 }
30 int main(){
31 int t;
32 scanf("%d",&t);
33 int temp;
34 int nus;
35 for(int i=1;i<=t;i++){
36 scanf("%d",&a[i].father);
37 if(a[i].father==-1){
38 temp=i;
39 a[i].rankk=1;
40 }else{
41 a[a[i].father].son.push_back(i);
42 }
43 }
44 int mm=dfs(temp);
45 printf("%d\n",dfs(temp));
46 int flag=0;
47
48 for(int i=1;i<=t;i++){
49 if(a[i].rankk==mm&&flag==0){
50 printf("%d",i);
51 flag=1;
52 }else if(a[i].rankk==mm){
53 printf(" %d",i);
54 }
55 }
56 }

7-12 深入虎穴

思路:首先题目说不存在两条路通向同一扇门,说明本题的图是一棵树。入口唯一,所以入度为 0 的那个点既是树的根节点。然后求一下树中每一个节点的深度,深度最大的那个点即为距离入口最远的那扇门。

 1 #include <iostream>
2 #include <algorithm>
3 #include <cstring>
4 using namespace std;
5 const int maxn = 100010;
6 int head[maxn], Next[maxn], ver[maxn];
7 int vis[maxn], d[maxn], degree[maxn];
8 int n, k, tot;
9 int ans, maxx;
10 void add(int x, int y){//数组模拟邻接表
11 ver[++tot] = y, Next[tot] = head[x];
12 head[x] = tot;
13 }
14 void dfs(int x){
15 vis[x] = 1;
16 for(int i = head[x]; i; i = Next[i]){
17 int y = ver[i];
18 if(!vis[y]){
19 d[y] = d[x] + 1;
20 dfs(y);
21 }
22 }
23 }
24 int main(){
25 cin >> n;
26 for(int i = 1; i <= n; i++){
27 cin >> k;
28 int x;
29 for(int j = 0; j < k; j++){
30 cin >> x;
31 degree[x]++;
32 add(i, x);// i -> x 的有向边
33 }
34 }
35 int rt = 1;
36 for(int i = 1; i <= n; i++){
37 if(!degree[i]){//入度为0的那个点为入口,即根节点
38 rt = i;
39 break;
40 }
41 }
42 d[rt] = 1;//初始化根节点的深度为1
43 dfs(rt);
44 for(int i = 1; i <= n; i++){//寻找深度最大的那个点
45 if(d[i] > maxx) {
46 maxx = d[i];
47 ans = i;
48 }
49 }
50 cout << ans << endl;
51 return 0;
52 }

B - Power Sequence

思路:就是从1-1.0/n遍历一遍找到最小的就可以

代码:

 1 #include<cstdio>
2 #include<algorithm>
3 #include<iostream>
4 #include<queue>
5 #include<map>
6 #include<cmath>
7 #include<cstring>
8
9 using namespace std;
10 const int N = 500007, M = 5000007;
11 const ll INF = 1e14;
12
13 int n, m;
14 ll a[N];
15
16 int main(){
17 scanf("%d", &n);
18 for(int i = 1; i <= n; ++ i){
19 scanf("%lld", &a[i]);
20 }
21 ll ans = INF ;
22 int t = pow(INF, 1.0 / n);
23 sort(a + 1, a + 1 + n);
24 for(int c = 1; c <= t; ++ c){
25 ll sum = 0, tmp = 1;//c^0
26 for(int i = 1; i <= n; ++ i){
27 sum += abs(a[i] - tmp);
28 tmp *= c;
29 }
30 ans = min(ans, sum);
31 }
32 printf("%lld\n", ans);
33 return 0;
34 }

QFNU 10-16 training的更多相关文章

  1. 背水一战 Windows 10 (16) - 动画: ThemeAnimation(主题动画)

    [源码下载] 背水一战 Windows 10 (16) - 动画: ThemeAnimation(主题动画) 作者:webabcd 介绍背水一战 Windows 10 之 动画 PopInThemeA ...

  2. ERROR 2003 (HY000): Can&#39;t connect to MySQL server on &#39;10.16.115.101&#39; (111)

    ubuntu安装之后mysql,使用apt-get安装命令,默认为同意只本地访问 root@idata1:~/software# mysql -uroot -p123456 -h10.16.115.1 ...

  3. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

  4. ERROR: openstack Error finding address for http://10.16.37.215:9292/v1/images: [Errno 32] Broken pipe

    Try to set: no_proxy=10.16.37.215 this should help 转自: http://askubuntu.com/questions/575938/error-i ...

  5. 2019.10.16&17小结

    话说也蛮久没写小结了,主要这两次考试失分严重,还是总结下吧. 10.16 T1 小奇挖矿2 100/0 [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市 ...

  6. [NOIP2018模拟赛10.16]手残报告

    [NOIP2018模拟赛10.16]手残报告 闲扯 炉石乱斗模式美滋滋啊,又颓到好晚... 上来T2先敲了树剖,看T1发现是个思博DP,然后没过大样例,写个暴力发现还是没过大样例!?才发现理解错题意了 ...

  7. windows10 下访问 virtualbox 虚拟机的linux15.10/16.04 系统 及 用 putty 访问虚拟机的配置

    参考: http://www.doc88.com/p-915707596190.html --- 安装samba http://my.oschina.net/u/2260265/blog/405598 ...

  8. java 2 8 10 16

    An integer literal may be expressed in decimal (base 10), hexadecimal (base 16), octal (base 8), or ...

  9. JS实现2,8,10,16进制的相互转换

    // 10进制转为16进制 var a=1234567890; console.log(a.toString(16)) //499602d2 // 16进制转为10进制 var num=parseIn ...

  10. A 题解————2019.10.16

    [题目描述] 对于给定的一个正整数n, 判断n是否能分成若干个正整数之和 (可以重复) ,其中每个正整数都能表示成两个质数乘积. [输入描述]第一行一个正整数 q,表示询问组数.接下来 q 行,每行一 ...

随机推荐

  1. Linux sed 使用笔记

    sed 工具使用笔记 Linux中经常需要对一些超大的文本文件进行操作,例如 GB 级别的 CSV.TXT.LOG 文件,如果使用 vi 或者 vim 编辑器操作会非常慢且卡,此时 sed 工具或许可 ...

  2. JVM之基础概念(运行时数据区域、TLAB、逃逸分析、分层编译)

    运行时数据区域 JDK8 之前的内存布局 JDK8 之后的 JVM 内存布局 JDK8 之前,Hotspot 中方法区的实现是永久代(Perm),JDK8 开始使用元空间(Metaspace),以前永 ...

  3. PTA 找出不是两个数组共有的元素

    7-2 找出不是两个数组共有的元素 (20 分)   给定两个整型数组,本题要求找出不是两者共有的元素. 输入格式: 输入分别在两行中给出两个整型数组,每行先给出正整数N(≤),随后是N个整数,其间以 ...

  4. 【原创】Linux虚拟化KVM-Qemu分析(十一)之virtqueue

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...

  5. C# 8.0 宝藏好物 Async streams

    之前写<.NET gRPC 核心功能初体验>,利用gRPC双向流做了一个打乒乓的Demo,存储消息的对象是IAsyncEnumerable<T>,这个异步可枚举泛型接口支撑了g ...

  6. Redis主从&哨兵集群搭建

    主从集群 在搭建主从集群前,我们先把Redis安装起来: #解压Redis压缩包 [root@master lf]# tar -zxvf redis-6.2.1.tar.gz -- #安装gcc [r ...

  7. 【pytest系列】- assert断言的使用

    unittest断言方式是用过框架自己实现的,即self.assertEqual()等,当我们使用pytest框架后,这种断言方式是不可用的,因为测试类不会再继承unittest.TestCase类, ...

  8. Kafka核心技术与实战,分布式的高性能消息引擎服务

    Kafka是LinkedIn开发并开源的一套分布式的高性能消息引擎服务,是大数据时代数据管道技术的首选. 如今的Kafka集消息系统.存储系统和流式处理平台于一身,并作为连接着各种业务前台和数据后台的 ...

  9. 2. Mybatis Select

    mybatis select是mybatis 中最常用的元素之一. 对简单的查询,select 元素的配置是相当简单的: <?xml version="1.0" encodi ...

  10. Day13_67_interrupt() 方法

    interrupt() 方法 中断线程 * interrupt()方法的简单理解 - interrupt() 方法只是改变线程的阻塞状态而已,让一个正在阻塞状态的线程,恢复执行.但是它不会中断一个正在 ...