• 2021-ACM-ICPC-济南站 K Search For Mafuyu 【树的遍历与回溯,dfs, 邻接表】


    PAT 题目详情 (pintia.cn)

    题目

     

     题意描述

    n个房间, 有n-1个通道, kanade初始在1,Mafuyu 位置未知,求K到M的最小期望,也就是到每个地方的平均值,注意的是这里的求法,队里苦苦想了近一个小时,还是太弱了

    比如第二个样例

    5

    1 2

    2 3

    3 4

    1 5

     显然,每种方式最后的期望都是一样的,所以最先走哪里无关紧要。

    附代码

    // #include<bits/stdc++.h>
    #include <iostream>
    #include <algorithm>
    #include <cmath>
    #include <string>
    #include <cstring>
    using namespace std;
    
    typedef long long LL;
    const int N = 1e5+10;
    
    int e[2*N], h[N], ne[2*N], st[N], idx, d, ans;//记得开2N
    int n;
    
    void init()//初始化!!!
    {
        idx = 0;
        ans = 0;
        d = 0;
        for(int i = 0; i <= n; i ++)    h[i] = -1, st[i] = 0;//头初始为-1
        
    }
    
    void add(int a, int b)//板子
    {
        e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
    }
    
    void dfs(int x, int step)
    {
        if(step == n)    return;
        
        for(int i = h[x]; i!=-1 ; i = ne[i])
        {
            if(!st[e[i]])//注意是目的地,e[i] 不是i
            {
                st[e[i]] = 1;
                d ++;
                ans = ans + d;
                dfs(e[i], step+1);
                d ++;//回溯
            }
        }
        
    }
    int main()
    {
        int t;
        cin >> t;
        while(t --)
        {
            cin >> n;
            init();
            for(int i = 1; i <n; i ++)
            {
                int a, b;
                cin >> a >> b;
                add(a, b);
                add(b ,a);//双向
            }
            st[1] = 1;
            dfs(1, 1);
            
            printf("%.10lf
    ", (double)ans/(double)(n-1));
        }
        return 0;
    }

     

    最后的最后, 成功打铁,凉了,但是也知道了不足,基本功不扎实,思维题还出不来,可谓是基础课忘干净,cf没做到位,感觉还不如大一下。

    对于cf  首先强化读题(PS:学长看五分钟就知道题意与样例,而我们琢磨了近一小时)

    对于基础课,每周复盘一次,拿出一晚上,暂定周五晚,基础课敲板子

    复杂的算法有时也是由简单算法的堆积!

    暂时这样,后期再制定

  • 相关阅读:
    Linux makefile教程之概述一[转]
    Valid Parentheses
    Letter Combinations of a Phone Number
    机器学习经典分类算法 —— C4.5算法(附python实现代码)
    3Sum Closest
    3Sum
    Integer to Roman
    寒假文献阅读(四)
    Longest Common Prefix
    Roman to Integer
  • 原文地址:https://www.cnblogs.com/la-la-wanf/p/15553504.html
Copyright © 2020-2023  润新知