首页 > 其他分享 >第二周

第二周

时间:2023-06-30 10:23:39浏览次数:29  
标签:pre int cin dfs 第二周 edge AcWing

6.26日:

一、完成了pta分600分;

二、对上一周的Java进行了复习和练习,加深了对其的理解和写代码熟练度。

AcWing 665. 倍数

AcWing 660. 零食

AcWing 659. 区间

AcWing 667. 游戏时间

AcWing 670. 动物

AcWing 708. 偶数

AcWing 712. 正数

AcWing 721. 递增序列

AcWing 724. 约数

均用Java代码完成。

 

6.27日:

一、完成了pta分700分,写代码熟练度越来越高;

二、在算法网站进行算法练习,完成了一下题;

AcWing 4741. 魔法百合井
AcWing 4736. 步行者
AcWing 4738. 快乐子数组
AcWing 4737. 冰壶
AcWing 4672. 布料排序

这些题相对于pta的题,难度更大一点,适合学习算法的同学练习;

三、娱乐,看了熊出没的新电影,意外是熊大熊二的妈妈是机器人。

6.28日:

一、跟朋友去大超市看了电影:《消失的她》,看完吃了豆花鱼,还逛了街,他买了一件衣服,来回都是坐公交出行,虽然慢但是省钱还轻松。

二、晚上温习了树的dfs和bfs

6.29日:

一、复习了树的直径和树的重心,并完成了两道练习题;

 

 

#include<bits/stdc++.h>
using  namespace std;

int n,cnt,pre[1001],c[100001],l,q[100001],dist[100001],f[100001];
vector<int>edge[100001];

void dfs(int x)//计算到根的距离
{
    for(auto y:edge[x])
    {
        if(y!=pre[x])
        {
            pre[y]=x;
            dist[y]=dist[x]+1;
            dfs(y);
        }
    }
 } 

inline void solve(int x)//计算以x为根的子树的大小
{
    ++cnt;
    for(auto y:edge[x])
    {
        if(y!=pre[x])
        {
            pre[y]=x;
            solve(y);
        }
    }
}
int main()
{
    int n;cin>>n;
    for(int i=1;i<n;i++)
    {
        int x,y;cin>>x>>y;
        edge[x].push_back(y);
        edge[y].push_back(x);
    }
    for(int i=1;i<=n;i++)
    {
        f[i]=0;
        memset(pre,0,sizeof pre);
        for(auto y:edge[i])
        {
            cnt=0;
            pre[y]=i;
            solve(y);
            f[i]=max(f[i],cnt);//求以i为根的最大的分支 
        }
    }
    int idx=0,v=1<<30;
    for(int i=1;i<=n;i++)
    {
        if(f[i]<v)
        {
            v=f[i];idx=i;
        }
     }
    long long ans=0;
    memset(pre,0,sizeof pre);
    memset(dist,0,sizeof dist);
    dfs(idx);
    for(int i=1;i<=n;i++)ans+=dist[i];
    cout<<ans<<endl;
}

二、晚上,10:35开始打算法竞赛codeforces,做出了两题,c题不会了;

6.30日:

一、学习了树的lca;

 算法的核心代码:

#include<bits/stdc++.h>
using namespace std;

int n,m,fa[1001],d[1001];
vector<int>edge[1001];

inline void dfs(int x)
{
    for(auto y:edge[x])
    {
        d[y]=d[x]+1;
        dfs(y);
     } 
}
int main()
{
    cin>>n;
    for(int i=1;i<n;i++)
    {
        int x,y;cin>>x>>y;
        edge[x].push_back(y);
        fa[y]=x;
    }
    memset(d,0,sizeof d);
    dfs(1);//求一号点离任何一个点的距离
    cin>>m;
    for(int i=1;i<=m;i++)
    {
        int  x,y;cin>>x>>y;
        if(d[x]<d[y])swap(x,y);//使x的距离大于y的距离 
        int z=d[x]-d[y];//向上跳的距离
        for(int j=1;j<=z;j++)x=fa[x];//向上跳 
         while(x!=y)//两个一块跳 
         {
             x=fa[x];y=fa[y];
         }
         cout<<x<<endl;
     } 
 } 

二、对昨天晚上的c题进行整理,困难(思路很绕,不是很清晰,比较难想);

题目链接:https://mirror.codeforces.com/contest/1845/problem/C
思路:由于m最大为10,且密码数字最大为9,考虑枚举密码的每一位。在 [li, ri] 内枚举第 i 位密码时,如果没有在s内查找到对应字符,那么很显然,已经存在非s的子序列的密码了,如果查找到了,选取在s内相对靠后的数字作为密码,存下这个相对靠后的s下标,枚举下一位密码时,从这个下标继续搜索

代码:

void solve()
{
    string s; cin >> s;
    int m; cin >> m;
    string t1, t2; cin >> t1 >> t2;
    bool f = false;
    int idx = 0;
    for (int i = 0; i < m; i++)//枚举m位 
    {
        int mx = 0;//最大的下标 
        for (char j = t1[i]; j <= t2[i]; j++)
        {
            int tmp = s.find(j, idx);//返回从k开始的第一个字符j的下标
            if (tmp == -1)
            {
                f = true; break;
            }
            tmp++;
            if (tmp > mx)mx = tmp;
        }
        idx = mx;
        if (f)break;
    }
    if (f)puts("YES");
    else puts("NO");
}

7.1日:

一、计划学习Java的数组部分,并完成三道练习题来练练手;

AcWing 708. 偶数
AcWing 712. 正数
AcWing 721. 递增序列

二、完成小学期实验报告b的pta分800分;

三、查漏补缺,补基础算法,看看是否有遗漏的内容没有完全掌握,并进行cf算法训练,备战rom省赛。

 

标签:pre,int,cin,dfs,第二周,edge,AcWing
From: https://www.cnblogs.com/litianyu1969/p/17515886.html

相关文章

  • 暑期第二周总结
    1)本周做了什么,花在学习上多长时间,花在代码时间上多长时间,花在解决问题用了多长时间。本周我主要关注于几个方面的学习和实践:继续学习SpringBoot、了解和应用Filter和Interceptor、算法与数据结构的学习、Java文件操作、JWT令牌以及MyBatis中XML文件的映射。下面是我对本周学习内......
  • 神经网络第二周
    Classicnetworks:LeNet-5,针对灰度图像训练的AlexNetVGG(VGG-16,16表示的是包含16个卷积层和全连接层;卷积层后面跟着可以压缩图像大小的池化层,池化层缩小图像的高度和宽度)ResNet(残差网络)ResNetws是由残差块构建的 看过程在残差网络中,我们将a[l]直接向后,拷贝到神经网......
  • 深度学习用于疾病预后-第二课第二周第1-5节-基于树的模型用于医学预后
    本周,我们将使用决策树(DecisionTrees)构建我们的第一个机器学习模型。树(trees)在医学应用中非常有用的的原因是:1️⃣它们处理连续和分类数据的能力,2️⃣它们的可解释性以及训练速度。我们将使用树来模拟在医学数据中观察到的非线性(non-linear)关系。当然,我们将构建我们的第一个基于机......
  • 第二周总结
    本周进行课程介绍,完成代码--返回一个整数数组中最大子数组的和(一)packageyiweishuzu;importjava.util.Scanner;/***贪心算法*@authorLenovo**/publicclassshuzu_3{privatestaticScannerscan;publicstaticvoidmain(String[]args){//确定......
  • 第二周周测试题
    第二周周测试题1.尽可能多的列举python字符串类型操作⽅法(⽅法名称+功能介绍).len()计算字符串的字符长度.strip()去除字符串首尾的特殊字符,默认是空格\n.replace()替换内容可以将字符串内的特定内容或字符进行替换.split()以特定条件切割字符串切割字符串后的每......
  • 第二周总结
    fragment可以看做APP页面跳转,可以看做一个小型的activity,其流程是在main_activity的xml里面可以定一个Fragmentlayout的布局,这个布局用于存放fragment然后给这个页面设定一个id,在主活动里面通过单击监听事件将建好的fragment通过fragment事务管理的replace函数放到指定的fragmen......
  • 云原生第二周--使用kubeasz部署多master的k8s集群
    1k8s集群介绍1.1k8s单master架构单master节点的架构,通常只用于测试环境,生产环境绝对不允许;这是因为k8s集群master的节点是单点,一旦master节点宕机,将导致整个集群不可用;其次单master节点apiServer是性能瓶颈;从上图我们就可以看到,master节点所有组件和node节点中的kubel......
  • 每日打卡第二周 3
    1.10数值转换#include<bits/stdc++.h>usingnamespacestd;intsource,object,length;//储存原数,村拿出目标数值,存储字符串长度longdecimal_num;//存储十进制chartemp[1000];//存转换后的数值intflag=1;//是否退出的标志/*将字符转换为数字*/intchar_to_num(charch){if(ch......
  • 学习记录:第二周day05笔记
    一、什么是指针指针是一种特殊的数据类型,使用它可以定义指针变量,指针变量中存储的是整型数据,该数据代表了内存的编号(地址),可以通过这个编号访问到对应的内存 二、为什么要使用指针1、函数之间内存是相互独立的,但有时候需要函数之间共享变量普通传参是单向值传递全局变......
  • 学习记录:第二周day04笔记
    五子棋数据分析:1、定义棋盘二维数组2、定义角色变量(1?2?)'@'黑棋'$'白棋'*'空3、定义变量用于记录输入的落子位置逻辑分析:考虑是否需要初始化棋盘 for(;;) {   1、清屏、打印棋盘   2、落子     判断是否超范围如果是则提示非法并重新落......