2022CCPC绵阳 ACGHM

Dashboard - 2022 China Collegiate Programming Contest (CCPC) Mianyang Onsite - Codeforces

C.Catch You Catch Me

题意

思路

首先注意到贡献可以按深度统计,对于每个深度dep,贡献是在dep深度中属于的子树种类数,如果在该深度中子树存在点,那么该子树的贡献就要 + 1

然后发现这样不好统计,那么考虑对于结点1的每一棵子树去统计贡献

对于每一棵子树,贡献就是该子树最深深度 + 1

#include <bits/stdc++.h>

#define int long long

constexpr int N = 2e5 + 10;
constexpr int mod = 1e9 + 7;

std::vector<int> adj[N];

int n;
int res = 0;

void dfs(int u, int dep, int fa) {
	res = std::max(res, dep);
	for (auto v : adj[u]) {
		if (v == fa) continue;
		dfs(v, dep + 1, u);
	}
}
void solve() {
	std::cin >> n;
	for (int i = 1; i <= n - 1; i ++) {
		int u, v;
		std::cin >> u >> v;
		adj[u].push_back(v);
		adj[v].push_back(u);
	}

	int ans = 0;
	for (auto v : adj[1]) {
		res = 0;
		dfs(v, 1, 1);
		ans += res;
	}
	std::cout << ans << "\n";
}
signed main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);

	int t = 1;
	while(t --) {
		solve();
	}
	return 0;
}

G. Let Them Eat Cake

思路

注意到每一轮都是较小的那个数被删除,因此每次会删至少一半的数,因此轮数一定很少,暴力模拟即可

#include <bits/stdc++.h>

void solve(){
    int n;
    std::cin >> n;
    std::vector<int> a(n);
    
    for(int i = 0; i < n; i ++) {
        std::cin >> a[i];
    }
    std::vector<int> cur;
    int num = 0;
    int L = n;
    while(L > 1){
        num ++;
        cur = std::vector<int>();
        for(int i = 0; i < a.size(); i ++) {
            if(i == 0 && a[i] > a[i + 1]) cur.push_back(a[i]); 
            else if(i == n - 1 && a[i] > a[i - 1]) cur.push_back(a[i]); 
            else if(a[i] > a[i + 1] && a[i] > a[i - 1]) {
                cur.push_back(a[i]);
            }
        }
        L = cur.size();
        a = cur;
    }
    std::cout << num << "\n";
}
signed main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
    while(t --) {
        solve();
    }
    return 0;
}

H.Life is Hard and Undecidable, but...

题意

思路

直接对角线构造即可

#include <bits/stdc++.h>

void solve(){
	int n;
	std::cin >> n;
	std::cout << 2 * n - 1 << "\n";
	for (int i = 1; i < 2 * n; i ++) {
		std::cout << i << " " << i << "\n";
	}
}
signed main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
    while(t --) {
        solve();
    }
    return 0;
}

A. Ban or Pick, What's the Trick

思路

注意到我们不论是选自己的还是禁用对方的,操作的数一定是最大值,因此一定要从大到小排序

注意到选的数>= k了之后不能再选数

注意到k <= 10,因此状态数不会很多

考虑DP,看看状态数会有多少

设dp(x, i, j)为,已经进行了x轮,A选了i个数,B选了j个数,的最大得分差(这里指A - B)

状态数为 1e5 * 10 * 10,很够,因此一定就是这个做法

记忆化所有比较好写,我们去考虑记忆化搜索

先看代码

#include <bits/stdc++.h>

#define int long long

constexpr int N = 2e5 + 10;
constexpr int mod = 998244353;
constexpr int Inf = 1e18;

int n, k;
int a[N], b[N];
int dp[N][12][12];

int dfs(int tot, int cnta, int cntb) {
    if (tot == 2 * n) return 0;
    if (dp[tot][cnta][cntb] != -Inf) return dp[tot][cnta][cntb];

    int ra = cnta + tot / 2 - cntb;
    int rb = cntb + (tot + 1) / 2 - cnta;

    if (tot % 2) {
        int res = Inf;
        if (cntb < k && ra + rb <= 2 * n) res = std::min(res, dfs(tot + 1, cnta, cntb + 1) - b[rb + 1]);
        res = std::min(res, dfs(tot + 1, cnta, cntb));
        return dp[tot][cnta][cntb] = res;
    }else {
        int res = -Inf;
        if (cnta < k && ra + rb <= 2 * n) res = std::max(res, dfs(tot + 1, cnta + 1, cntb) + a[ra + 1]);
        res = std::max(res, dfs(tot + 1, cnta, cntb));
        return dp[tot][cnta][cntb] = res;
    }
}
void solve(){
    std::cin >> n >> k;
    for (int i = 1; i <= n; i ++) {
        std::cin >> a[i];
    }
    for (int i = 1; i <= n; i ++) {
        std::cin >> b[i];
    }
    std::sort(a + 1, a + 1 + n, std::greater<int>());
    std::sort(b + 1, b + 1 + n, std::greater<int>());
    
    for (int i = 0; i <= 2 * n; i ++) {
        for (int j = 0; j <= k; j ++) {
            for (int l = 0; l <= k; l ++) {
                dp[i][j][l] = -Inf;
            }
        }
    }
    std::cout << dfs(0, 0, 0) << "\n";
}
signed main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
    while(t --) {
        solve();
    }
    return 0;
}

 记忆化搜索有几个要点:

1.出口:就是轮数到达最多轮数的时候是出口,即 tot == 2 * n

2.return dp

3.考虑决策,描述出目标状态

第3点最为重要,决策需要分类讨论当前是A操作还是B操作

如果是A操作,决策就是选一个a或者禁用一个b,如果是B操作,决策就是选一个b或者禁用一个a

M. Rock-Paper-Scissors Pyramid
 

题意

 

思路

 

#include <bits/stdc++.h>

bool check(char x, char y) {
	if (x == y) return true;
	if (x == 'R') return y == 'P';
	if (x == 'S') return y == 'R';
	if (x == 'P') return y == 'S';
	return false;
}
void solve(){
	std::string s;
	std::cin >> s;
	int n = s.size();

	std::stack<char> S;
	S.push(s[0]);
	for (int i = 1; i < s.size(); i ++) {
		while(!S.empty() && check(S.top(), s[i])) S.pop();
		S.push(s[i]);
	}
	while (S.size() > 1) S.pop();
	std::cout << S.top() << "\n";
}
signed main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
	std::cin >> t;
    while(t --) {
        solve();
    }
    return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/153025.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python文件读写练习题--随机出10套试卷

要求就是&#xff1a;10套试卷题目顺序不同&#xff0c;答案顺序不同 import random import os city {河北省:石家庄市,山西省:太原市,辽宁省:沈阳市,吉林省:长春市,黑龙江省:哈尔滨市,江苏省:南京市,浙江省:杭州市,安徽省:合肥市,福建省:福州市,江西省:南昌市}#在当前路径下…

如何深度了解汤泉场所?VR全景给你答案

天气逐步转凉&#xff0c;温泉、水会这些室内汤泉场所开始登上消费的主战场。伴随着人们物质生活水平的提高&#xff0c;人们对休闲养生会馆的要求也愈发旺盛&#xff0c;汤泉场所也逐渐从单一的洗浴开始向休闲、娱乐、保健、桑拿等多种业态形式发展&#xff0c;那么大家如何深…

如何利用SD-WAN优化云时代的网络连接

在多云时代下&#xff0c;企业的网络连接需求面临着诸多挑战和变化。随着企业应用的日益复杂和分散&#xff0c;网络连接也变得更加复杂。企业需要同时连接多个云服务商、数据中心、分支机构和移动用户等&#xff0c;并保证网络连接的稳定性和可靠性。同时&#xff0c;企业对于…

什么是自动化测试

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

大数据的技术运用:探索未来的无限可能性

随着科技的不断进步和社会信息的快速增长&#xff0c;大数据已成为一个热门话题。本文将探讨大数据技术在多个领域的应用&#xff0c;以及它对未来的影响和无限可能性。 导言 在过去的几十年里&#xff0c;大数据技术取得了惊人的发展&#xff0c;它不仅改变了企业的经营方式&a…

2024江苏专转本流程与时间节点

2024江苏专转本考生&#xff0c;提前看一下转本的流程与时间节点&#xff01;适用于江苏三年制、五年一贯制专转本考试&#xff1a; 1. 专转本工作通知&#xff08;2023年12月上旬&#xff09; 若无特殊情况&#xff0c;到12月中旬&#xff0c;江苏省教育厅会发布关于做好2024…

spark性能调优 | 内存优化

目录 我们先了解一下有哪些内存温馨提示RDD示范(spark版本2.1.1)RDD进行优化Df和Ds进行示范 我们先了解一下有哪些内存 1.storage内存 存储数据&#xff0c;缓存 可预估2.shuffle内存 计算join groupby 不可预估spark1.6之前 静态管理的&#xff0c;spark1.6之…

2023测试工程师做哪些准备,才能从众人中脱颖而出,不看后悔10年

最近&#xff0c;裁员的声音此起披伏。貌似我们只有努力奔跑&#xff0c;这一块带有命运诅咒的“石头”才不会轻易的落到我们的头上。 在不是金三银四、金九银十的求职旺季外&#xff0c;还会有机会吗&#xff1f;我想&#xff0c;对于有能力的人来说&#xff0c;任何时候都可…

数据库测试的认知和分类详解

现在的软件系统&#xff0c;尤其是业务应用系统&#xff0c;后台都连接着一个数据库。数据库中存储了大量的数据&#xff0c;数据库的设计是否合理和完善&#xff0c;SQL语句编写是否正确、高效&#xff0c;都直接影响了一个软件系统的功能正确性和性能表现。今天跟大家分享一些…

【python】均值、中值和高斯滤波详解和示例

本文对均值、中值和高斯滤波进行详解&#xff0c;以帮助大家理解和使用。 这里写目录标题 均值滤波中值滤波高斯滤波核大小为&#xff08;9,9&#xff09;核大小为&#xff08;51,51&#xff09; 小结 下面是示例中使用的原图。 均值滤波 均值滤波是一种简单的平滑滤波器&…

猫罐头怎么选择?市面上最受欢迎的5款猫罐头推荐!

很多人在买猫罐头的时候&#xff0c;可是费了老鼻子劲儿了。他们浏览了各大平台&#xff0c;读了大量的评测文章&#xff0c;就想着找到最好的那一个。但最后他们发现&#xff0c;很多所谓的「实测」都是虚的&#xff0c;假的。花了几天时间&#xff0c;结果选了个质量不好的猫…

骨传导式蓝牙耳机值得入手吗?盘点最值得入手的5款骨传导耳机

在骨传导耳机还没有火之前&#xff0c;相信很多朋友都是使用入耳式和头戴式耳机比较多一点&#xff0c;但是慢慢的会发现&#xff0c;这两种耳机都存在很大的问题&#xff0c;比如说入耳式耳机&#xff0c;长时间佩戴会造成耳朵痛等问题&#xff0c;而头戴式耳机因为隔音效果好…

vue2项目从0搭建(二):配置代理,登录功能和菜单权限

前言: 发送ajax,fetch,websocket请求获取服务端的数据,配置代理是必须的环节 登录功能和菜单权限是后台管理系统中非常经典且十分重要的业务,这里涉及的知识点也是比较多的,坑也多,面试也是很重要的一环。 这里必须得会,没错是必须。 配置服务代理 创建两个node服务 在和…

【SOLO】实例分割论文SOLO: Segmenting Objects by Locations详解

&#x1f6a9;&#x1f6a9;实例分割论文专栏快速跳转&#x1f6a9;&#x1f6a9;【实例分割】 目录 &#x1f31e;&#x1f31e;1.摘要 &#x1f333;&#x1f333;2.创新点 &#x1f33c;&#x1f33c;3.网络结构 &#x1f383;&#x1f383;3.1背景 &#x1f383;&…

4-flask-cbv源码、Jinja2模板、请求响应、flask中的session、flask项目参考

1 flask中cbv源码 2 Jinja2模板 3 请求响应 4 flask中的session 5 flask项目参考 1 flask中cbv源码 ***flask的官网文档&#xff1a;***https://flask.palletsprojects.com/en/3.0.x/views/1 cbv源码执行流程1 请求来了&#xff0c;路由匹配成功---》执行ItemAPI.as_view(item…

【java学习—十五】线程的生命周期(4)

文章目录 线程的生命周期1. 相关概念 线程的生命周期 1. 相关概念 线程的生命周期&#xff1a;线程从生到死的整个经历。 JDK 中用 Thread.State 枚举表示了线程的几种状态 要想实现多线程&#xff0c;必须在主线程中创建新的线程对象。 Java 语言使用 Thread 类及其子类的…

UnitTest + Selenium 完成在线加法器自动化测试

1. 任务概述 利用 UnitTest 与 Selenium 编写自动化用例&#xff0c;测试在线加法器中的整数单次加法功能【如123 】 人工操作流程&#xff08;测试 12 是否等于 3&#xff09;&#xff1a; 打开在线加法器点击按钮1&#xff0c;再点击按钮&#xff0c;再点击按钮2&#xff0c…

adb手机调试常用命令

查看手机型号 adb shell getprop ro.product.model 查看电池状况 adb shell dumpsys battery 查看分辨率 adb shell wm size 查看屏幕密度 adb shell wm density 查看显示屏参数 adb shell dumpsys window displays 查看android_id adb shell settings get secure android…

安科瑞为数据中心绿色高质量发展贡献力量

安科瑞 崔丽洁  0前言 目前&#xff0c;数字经济的迅猛发展激发了数据中心的算力需求&#xff0c;数据中心规模与功耗密度不断提高&#xff0c;能耗问题日益突出。短期内&#xff0c;数据中心的能耗、碳排放量仍会呈现上升趋势。面对国家“双碳”压力&#xff0c;我国数据中心…