1.23总结

1.早上两个半小时

完成了二叉树、并查集、快排题组的修复公路题。

P1111修复公路

P1111 修复公路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路

先将时间进行升序排列,然后从头开始遍历,如果到某一组数据的时候,树的结点个数与村子树相同时,这组数据的时间就是最短时间,如果到最后树的结点个数仍不等于村子数,就输出-1。

代码实现

#include<stdio.h>
typedef struct node//因为要总体进行交换,所以最好用结构体数组存数据
{
    int x,y,t;
} Node;
Node a[100001];
int n,m,parent[1001],sum;
int find(int u)//找根结点
{
    if(u!=parent[u])
        parent[u]=find(parent[u]);
    return parent[u];
}
void quicksort(int left,int right)//快排,对时间进行升序排列
{
    if(left>right)
        return;
    int i=left;
    int j=right;
    Node x=a[left];
    while(i<j)
    {
        while(a[j].t>=x.t&&i<j)
            j--;
        a[i]=a[j];
        while(a[i].t<=x.t&&i<j)
            i++;
        a[j]=a[i];
    }
    int y=j;
    a[y]=x;
    quicksort(left,y-1);
    quicksort(y+1,right);
}
int main()
{
    scanf("%d %d",&n,&m);
    for(int i=1; i<=n; i++)
        parent[i]=i;
    for(int i=0; i<m; i++)
        scanf("%d %d %d",&a[i].x,&a[i].y,&a[i].t);
    quicksort(0,m-1);
    for(int i=0; i<m; i++)
    {
        int p1=find(a[i].x);
        int p2=find(a[i].y);
        if(p1!=p2)
        {
            parent[p1]=p2;
            sum++;
        }
        if(sum==n-1)//遍历到某组元素时,如果树的元素与村子数相等,直接输出这个时间
        {
            printf("%d\n",a[i].t);
            return 0;
        }
    }
    printf("-1");//否则就输出-1
    return 0;
}

2.下午三个半小时

完成了第二周测试的两个题目。

CF922A Cloning Toys

CF922A Cloning Toys - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路

就是根据两个的关系式x=i*2+j与y=j+1,x是克隆体的数量,y是本体的数量,i是克隆体的克隆的次数,j是本体克隆的次数。

代码实现

#include<stdio.h>
int main()
{
    long long x,y;
    scanf("%lld %lld",&x,&y);
    if((x-y+1)%2==0&&x>=1&&y>=2&&(x-y)>=-1)//根据本体的数量的关系式和克隆体的数量的关系式可以得到
        printf("Yes");
    else if(x==0&&y==1)
        printf("Yes");
    else if(y==0)
        printf("No");
    else
        printf("No");
    return 0;
}

P7939 [B1]Alice Wins!(easy version)

P7939 [B1] Alice Wins! (easy version) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 

思路

因为题目规定可以改a[],b[]数组里面个n个,所以就前n个先改a[]数组里的,后n个改b[]数组里的。

代码实现

#include<stdio.h>
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,a[200001],b[200001],sum=0,ans=0;
        scanf("%d",&n);
        for(int i=0;i<2*n;i++)
            scanf("%d",&a[i]);
        for(int i=0;i<2*n;i++)
            scanf("%d",&b[i]);
        for(int i=0;i<n;i++)//前n个改a[]数组里的
        {
            if(b[i]==1&&a[i]!=3)
                a[i]=3;
            if(b[i]==2&&a[i]!=1)
                a[i]=1;
            if(b[i]==3&&a[i]!=2)
                a[i]=2;
        }
        for(int i=n;i<2*n;i++)//后n个改b[]数组里的
        {
            if(a[i]==1&&b[i]!=2)
                b[i]=2;
            if(a[i]==2&&b[i]!=3)
                b[i]=3;
            if(a[i]==3&&b[i]!=1)
                b[i]=1;
        }
        printf("%d\n",2*n);
        for(int i=0;i<2*n;i++)
            printf("%d ",a[i]);
        printf("\n");
        for(int i=0;i<2*n;i++)
            printf("%d ",b[i]);
        printf("\n");
    }
    return 0;
}

3.晚上两个小时。

就答辩,看了自己一周以来刷的题目,以及记的笔记,写的每日总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值