首页 > 其他分享 >8.5

8.5

时间:2023-08-05 21:55:23浏览次数:37  
标签:8.5 int sum fcode ++ num printf

#include<stdio.h>

int main()
{
    int N;
    scanf("%d",&N);
    int queue[N];    //记录每个轨道的最小序号
    int queueNum=0;    //轨道数量
    int num;
    
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &num);
        if (i == 0 || num > queue[queueNum]) {
            //新数大于所有轨道中的最小序号时,添加新轨道。
        //在维护过程中,最后加入的轨道永远存在着当前最大的序号,所以将新数与最后加入的轨道比较就行
            queue[++queueNum] = num; 
        }
        else
        {    //新数小于最后加入的轨道中的序号时,将其插入与其差值最小的子串中去
            //使用顺序查找时有测试点超时,所以这里用二分来找
            int l=0;int r=queueNum;int mid;
            while(l<=r)
            {
                mid=(l+r)/2;
                if(queue[mid]>num)r=mid-1;
                else l=mid+1;
            }
            queue[l]=num;
           
        }
    }
    printf("%d",queueNum);
}
#include <iostream>
using namespace std;
int fcode[501];//父节点集
int road[5001][2];
int flag[501];
void resum(int n) {
    //初始化
    for (int i = 0; i < n; i++) {
        fcode[i] = i;
    };
}
int findf(int a) {
    int f = a;
    while (f != fcode[f]) {
        f = fcode[f];
    };
    //压缩路径
    while (fcode[a] != f) {
        int x = fcode[a];//记录a的直属下一节点
        fcode[a] = f;//将a的下一节点改为根节点
        a = x;//准备下一轮压缩
    };
    return f;
}
int bcj(int n, int m) {
    for (int i = 0; i < m; i++) {
        if (!flag[road[i][0]] || !flag[road[i][1]]) {
            continue;
        };
        int fa = findf(road[i][0]);
        int fb = findf(road[i][1]);
        fcode[fb] = fa;
    };
    int sum = 0;
    //压缩一遍
    for (int i = 0; i < n; i++) {
        findf(i);
    };
    for (int i = 0; i < n; i++) {
        if (!flag[i]) {
            continue;
        };
        if (fcode[i] == i) {
            sum++;
        };
    };
    return sum;
}
int main() {
    int n, m;
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; i++) {
        flag[i] = 1;
    };
    for (int i = 0; i < m; i++) {
        int a, b;
        scanf("%d%d", &a, &b);
        road[i][0] = a;
        road[i][1] = b;
    };
    resum(n);
    int rsum = bcj(n, m);
    int num, sum;
    scanf("%d", &num);
    for (int i = 0; i < num; i++) {
        if (i != 0) {
            printf("\n");
        };
        int code;
        scanf("%d", &code);
        resum(n);
        flag[code] = 0;
        sum = bcj(n, m);
        if (sum > rsum) {
            printf("Red Alert: City ");
            printf("%d", code);
            printf(" is lost!");
        }
        else {
            printf("City ");
            printf("%d", code);
            printf(" is lost.");
        };
        rsum = sum;
    };
    if (rsum == 0) {
        printf("\n");
        printf("Game Over.");
    };
}

 

标签:8.5,int,sum,fcode,++,num,printf
From: https://www.cnblogs.com/xuxingkai/p/17608713.html

相关文章

  • 闲话8.5
    今天上午上课,发现多了两道黑题......
  • SpringMVC的搭建idea2021、tomcat8.5
    准备环境idea2021tomcat8.0资料来源,尚硅谷的视频1、新建项目      生成pom.xml文件 3、pom.xml文件添加依赖<dependencies><!--SpringMVC--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</arti......
  • 暑假周记(8.5)
    果不其然,昨天那么闷,今天果然下雨了,三个小时的雨,说实话,我还以为他得憋个大的,下久点。Character方法isLetter()isDigit()isWhiterspace()isUpperCase()isLowerCase()toUPperCase()toLowerCase()toString():返回字符的字符串形式,长度仅为1......
  • 2023.8.5 周六:DDL--操作表
    1#查询当前数据库的所有表2showtables;34#查询表的结构5descfunc(表的名称);67#创建表注:最后一行不加逗号8creattable表名9(10字段名1,数据类型1,11字段名2,数据类型2,12...13...14字段名n,数据类型n15);1617例,要创......
  • 8.5日第五周总结
    编写一个静态表单页面和一个PHP动态网页,静态网页如下图1所示,在静态网页中通过get方法提交数据,在动态网页中检索这些数据并显示出来,结果如下图2所示,如果该同学的性别为男,则显示“您是一位男生!”,性别为女,则显示“您是一位女生!”。编写一个静态表单和一个PHP动态网页,表单如......
  • 8.5上下午-斜顶滑环20eg-铲机(当滑块座高度小于15的时候需要用到铲机)
       ......
  • 8.5做题记录
    上午1#include<bits/stdc++.h>2#defineintlonglong3usingnamespacestd;4intans[20],s;5signedmain()6{7freopen("x3.in","r",stdin);8freopen("x3.out","w",stdout);9intn,l,......
  • 7.31-8.5 每周总结
    这周大数据技术完成了zookeeper的学习,因为之前看的hbase看了一点之后,要安装hbase,就要先安装zookeeper,所以又去学习了zookeeper,算法与数据结构方面学习了链表,单链表,双链表,环形链表,学的不是很多,主要还是因为学习大数据遇到的问题很多,还有好多因为听不懂,又得返回去听,有些安装过程得一......
  • 8.5
    JavaArrayListArrayList类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList继承了AbstractList,并实现了List接口。ArrayList类位于java.util包中,使用前需要引入它,语法格式如下:importjava.util.ArrayList;//......
  • 2023.8.5
    学习java中的类面向对象与面向过程面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象:强调具备了功能的对象,以类/对象为最小单位类与对象的关系类:对一类事物的描述,是抽象的、概念上的定义对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)面向对象......