第三届“传智杯”全国大学生IT技能大赛(初赛A组)题解

留念

第三届“传智杯”全国大学生IT技能大赛(初赛A组)题解

C – 志愿者

排序。。按照题目规则说的排就可以。wa了两发我太菜了qwq

#include
using namespace std;
const int MAXN = 1e6 + 10;
inline int read() {
    char c = getchar(); int x = 0, f = 1;
    while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
    while(c >= '0' && c  b.t * b.k) return 1;
        else if(t * k < b.t * b.k) return 0;

        if(t > b.t) return 1;
        else if(t < b.t) return 0;

        return id < b.id;
    }
}a[MAXN];
int main() {
    int N = read();
    for(int i = 1; i

D – 终端

模拟一下就行了吧。。

#include
using namespace std;
const int MAXN = 1e6 + 10;
inline int read() {
    char c = getchar(); int x = 0, f = 1;
    while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
    while(c >= '0' && c  mp;
string opt;
int main() {
#ifndef ONLINE_JUDGE
    freopen("a.in", "r", stdin);
#endif
    int N = read();
    for(int i = 1; i > opt;
        if(opt == "touch") {
            string fn;
            cin >> fn;
            if(mp.find(fn) != mp.end()) continue;
            mp[fn] = i;
        } else if(opt == "rm") {
            string fn;
            cin >> fn;
            if(mp.find(fn) == mp.end()) continue;
            mp.erase(fn);
        } else if(opt == "ls") {
            vector> tmp;
            for(auto &x: mp) {
                tmp.push_back(make_pair(x.second, x.first));
            }
            sort(tmp.begin(), tmp.end());
            for(auto x: tmp)
                cout << x.second << '\n';
        } else if(opt == "rename") {
            string s1, s2;
            cin >> s1 >> s2;
            if(mp.find(s1) == mp.end()) continue;
            int tmp = mp[s1];
            mp.erase(s1);
            mp[s2] = tmp;
        }
    }
    return 0;
}

E – 运气

显然每个位置只能是1-6,因此所有状态数是(6^{10})不会很大,dfs一下

#include
using namespace std;
const int MAXN = 1e6 + 10;
const int mod = 1e9 + 7;
#define LL long long
inline int read() {
    char c = getchar(); int x = 0, f = 1;
    while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
    while(c >= '0' && c

F – 游戏

首先题目有个bug,没有描述序列中有相同数的情况

那就假设所有数都不相同

可以分两种情况考虑,(c1 < c2)和(c1 > c2),相等的话直接输出((N – 1) * c1)就行。

这两种是类似的,这里只说第一种。

显然,数组中的每一对数都有两种情况:1.异或之后二进制位仅有1位为1,2.有多位唯一。

接下来我是转化成了图论问题去考虑,不然感觉有点复杂。

我们把所有异或之后二进制位仅有1个1的点之间连边。

考虑得到的这张图的性质:

对于任意一个联通块,我们一定能通过使用c1代价来每次消掉一个元素,并能保证最后只剩下一个元素。

emmm,,至于为什么,,可以从联通块中抽出一个树来,显然每次从叶子节点删,一定满足条件。

这样的话,只需要dfs出所有联通块,并求出其大小就好。

然后加加减减把答案算出来,具体看代码

复杂度(O(n^2))(实际上还可以优化为(O(nlogn)),这里不再赘述)

#include
using namespace std;
const int MAXN = 1e6 + 10;
const int mod = 1e9 + 7;
#define LL long long
inline int read() {
    char c = getchar(); int x = 0, f = 1;
    while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
    while(c >= '0' && c  v[MAXN];
void dfs(int x) {
    cnt++;
    vis[x] = 1;
    for(auto &to: v[x]) {
        if(!vis[to])
            dfs(to);
    }
}
void dfs2(int i) {
    cnt++;
    vis[i] = 1;
    for(int j = 1; j

G – 森林

(好久没打比赛,开场还以为是个LCT,后来又想操作子树的好像是ETT,不过还好及时终止了自己的危险想法)

感觉这题思维上比上一题简单不少,

对于第一个删边比较难操作

可以倒序考虑转化成加边。

然后并查集维护连通性就ok了

具体看代码

#include
using namespace std;
const int MAXN = 1e6 + 10;
const int mod = 1e9 + 7;
#define LL long long
inline int read() {
    char c = getchar(); int x = 0, f = 1;
    while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
    while(c >= '0' && c  ans;
int main() {
#ifndef ONLINE_JUDGE
    freopen("a.in", "r", stdin);
#endif
    N = read(); M = read();
    for(int i = 1; i = 1; i--) {
        if(op[i].opt == 1) {
            int id = op[i].a;
            unionn(E[id].u, E[id].v);
        } else if(op[i].opt == 2) {
            int id = op[i].a, pre = val[id];
            int fx = find(id);
            sum[fx] -= pre;
            sum[fx] += op[i].b;
            val[id] = op[i].b;
        } else {
            ans.push_back(query(op[i].a));
        }
    }

    reverse(ans.begin(), ans.end());
    for(auto &x: ans) cout << x << '\n';
    return 0;
}
/*

*/

Original: https://www.cnblogs.com/zwfymqz/p/14165004.html
Author: 自为风月马前卒
Title: 第三届“传智杯”全国大学生IT技能大赛(初赛A组)题解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/541746/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 大规模数据分析统一引擎Spark最新版本3.3.0入门实战

    @ 概述 定义 Hadoop与Spark的关系与区别 特点与关键特性 组件 集群概述 集群术语 部署 概述 环境准备 Local模式 Standalone部署 Standalone…

    Java 2023年6月5日
    0110
  • SpringBoot 如何防御 CSRF 攻击

    CSRF 就是跨域请求伪造,英文全称是 Cross Site Request Forgery。 这是一种非常常见的 Web 攻击方式,其实是很好防御的,但是由于经常被很多开发者忽略…

    Java 2023年5月30日
    071
  • win10搜索功能用不了

    这玩意搞了我今天,直接裂开!系统更新根本解决不了 好在查了相关资料才知道,原来微软在 Win10 的更新中,将搜索功能和语音助手 Cortana 进行了拆分,搜索成了一个独立的功能…

    Java 2023年6月16日
    081
  • Javaweb09-请求跳转项目 分页条件查询 + 增删改 + 邮件登录

    1、Jar 包 UTF-8 1.7 1.7 1.18.12 4.11 5.1.47 1.2.62 javax.servlet javax.servlet-api 3.1.0 pro…

    Java 2023年6月15日
    051
  • 设计模式之行为型模式–责任链模式、解释器模式

    一、责任链模式(职责链模式) 模式的定义与特点 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处…

    Java 2023年6月7日
    069
  • windows下载安装JDK8

    一 、下载链接 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm…

    Java 2023年6月5日
    095
  • Servlet4.0 Response

    Servlet4.0 Response对象 Response对象封装Server返回Client的所有信息。在HTTP协议中,Server传达给Client信息转换到HTTP He…

    Java 2023年6月15日
    069
  • 4、多态

    多态概念(一共三点满足就行) 1、 继承 2、程序运行时将子类对象赋值给父类 3、通过父类去调用子类的方法 一、父类类型做方法的参数 <span class=”kwd”&gt…

    Java 2023年6月6日
    083
  • idea控制台

    快捷键:alt + 4 本文来自博客园,作者:紫英626,转载请注明原文链接:https://www.cnblogs.com/recorderM/p/15991828.html O…

    Java 2023年6月5日
    096
  • Java高并发教程:详解NIO Buffer类及其属性

    Java高并发教程:详解NIO Buffer类及其属性 NIO Buffer NIO的Buffer(缓存区) 本质上是一个内存块,既可以写入数据,也可以从中读取数据。NIO的Buf…

    Java 2023年5月29日
    088
  • C# 线程手册 第五章 扩展多线程应用程序 系列

    到目前为止我们使用多线程应用程序的目的是尽可能多地使用计算机处理器资源。所以,看起来我们仅需要为每个独立的任务分配一个不同的线程,并让处理器确定在任何时间它总会处理其中的某一个任务…

    Java 2023年5月29日
    068
  • 一些简单的sql练习

    准备数据 CREATE TABLE students (sno VARCHAR(3) not null, sname VARCHAR(3) not null, ssex VARCH…

    Java 2023年6月9日
    085
  • Golang多线程垂直输出字符串

    [本文出自天外归云的博客园] 三个字符串,abc,def,ghi,请用多线程顺序输出:adg,beh,cfi 抛砖引玉,我的代码如下: go;gutter:true; packag…

    Java 2023年5月29日
    065
  • KVM 虚拟机和网卡绑定问题

    有一台物理机,需要做kvm虚拟机。 首先做了物理机的双网卡绑定,目前在 centos7 上做双网卡绑定有两种方式: bond team 本次采用了 team 的方式,并使用了 ro…

    Java 2023年5月30日
    084
  • 记批量生成二维码并返回压缩包

    记批量生成二维码并返回压缩包 添加依赖包—如果3.5.0用不了可以切换为3.4.1 com.google.zxing core 3.5.0 com.google.zxi…

    Java 2023年6月14日
    0127
  • NoteOfMySQL-09-存储过程与函数

    常用的SQL语句在执行时需要先编译,然后执行;而存储过程(Store Procedure)是经编译后存储在数据库中的SQL语句集,在数据库中创建和保存。 一、存储过程与函数的区别 …

    Java 2023年6月5日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球