The 3rd Universal CupStage 15: Chengdu, November 2-3, 2024(2024ICPC 成都)

Problem L. Recover Statistics

题目意思:

给定a, b, c三个值,确保构造的数列中包含满足题目的数量

解题思路:

100 中 选择a 50个, b45个, c4个。

#include <iostream>using namespace std;using ll = long long;int main(){ios::sync_with_stdio(0);cin.tie(0);int a, b, c;cin >> a >> b >> c;cout << 100 << endl;for(int i = 0; i < 50; i ++)cout << a << " ";for(int i = 0; i < 45; i ++)cout << b << " ";for(int i = 0; i < 4; i ++)cout << c << " "; cout << c + 1;return 0;
}

Problem A. Arrow a Row

题目意思:

n次操作,构造出给定字符串,每次操作可以覆盖之前的操作。

解题思路:

每次把一个字符变为满足题意的字符,n次之内操作就可以完成构造

#include <iostream>
#include <string>
#include <vector>using namespace std;void solve(){string s;cin >> s;int len = s.size();if(len < 5 || s[0] == '-'){cout << "No\n";return ;}for(int i = len - 1; i >= len - 3; i --){if(s[i] == '-'){cout << "No\n";return ;}}int f = 0;for(int i = 0; i < len; i ++){if(s[i] == '-')f = 1;}if(f == 0){cout << "No\n";return ;}vector<pair<int, int>> res;int end = len - 1;for(int i = len - 3; i >= 0; i --){if(s[i] == '>'){res.push_back({1, end + 1});end --;}elsebreak;}end ++;for(int i = 1; i < end - 3; i ++){if(s[i] == '>')res.push_back({i + 1, end - i + 1});}if(res.size() <= len){cout << "Yes ";cout << res.size() << endl;for(auto [x, y] : res)cout << x << " " << y << endl;}elsecout << "No\n"; 
}int main(){ios::sync_with_stdio(0);cin.tie(0);int n;cin >> n;while(n --){solve();}return 0;
}

Problem G. Expanding Array

题目意思:

每次在相邻的两个数之间做运算,再将新构成的数插入到两数之间,再次做一样的运算,可做无限次运算,问最多能构成多少个不同的数。

解题思路:

利用等式 a ^ b = c => b = a ^ c, 通过这条性质可以无线构造出相邻的. 

a & ( a ^ b ) ^ a = a & a ^ (a & b ) ^ a  = a & b

0 ^ x = x

#include<iostream>
#include<vector>
#include<set>using namespace std;using ll = long long;int main(){ios::sync_with_stdio(0);cin.tie(0);int n;cin >> n;vector<int> a(n);set<int> cnt;for(auto &x : a)    cin >> x;for(int i = 0; i < n - 1; i ++){cnt.insert(a[i]);int t1 = a[i] | a[i + 1];int t2 = a[i] & a[i + 1];int t3 = a[i] ^ a[i + 1];int t4 = t1 ^ a[i];int t5 = t1 ^ a[i + 1];cnt.insert(t1); cnt.insert(t2);cnt.insert(t3);cnt.insert(t4);cnt.insert(t5);}cnt.insert(0);cnt.insert(a[n - 1]);cout << cnt.size() << endl;return 0;
}

Problem B. Athlete Welcome Ceremony

题目意思:

        给定一个字符串和a, b, c的数量,问能构成多少种不同的长度为x的序列。

解题思路:

        计数dp.

        由于题目范围很小,我们很显然可以枚举所有满足cnt个问号,abc的数量,根据题目限制,相邻的两个字符不能相同。状态定义为dp[x][y][z][p],1 - i 中以p结尾的字符,并且保证当前的和上一层的不重复。我们可以用滚动数组来实现。

        对于每次询问,我们直接找出f[x][y][z]即可。

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
#define pb push_back
#define  vi vector<int>
#define  vii vector<pair<int, int>>
#define ff first 
#define ss second 
// ++   ~!    */+-    <<>>    <>  ==   &^|   &&|| =int dp[310][310][310][3]; // ijkz  对前i个字符,使用了j个a字符,k个b字符,第i个字符是 z + 'a'的方案数
int f[310][310][310]; // 有i个a,j个b,k个c的方案数void solve()
{int n, m;cin >> n >> m;string s;cin >> s;s = ' ' + s;vector<int> cnt(n + 1);for (int i = 1; i <= n; i++)cnt[i] = cnt[i - 1] + (s[i] == '?');// 先初始化一下方案数if (s[1] == '?')dp[1][1][0][0] = dp[1][0][1][1] = dp[1][0][0][2] = 1;elsedp[1][0][0][s[1] - 'a'] = 1;for (int i = 2; i <= n; i++){for (int ca = 0; ca <= cnt[i]; ca++){for (int cb = 0; cb + ca <= cnt[i]; cb++){if (s[i] != '?'){int num = dp[i - 1][ca][cb][0] + dp[i - 1][ca][cb][1] + dp[i - 1][ca][cb][2]; //上一层总方案数dp[i][ca][cb][s[i] - 'a'] = (num - dp[i - 1][ca][cb][s[i] - 'a']) % mod; // 去掉上一层一样的,其他结尾字母为0continue;}if (ca){int num = dp[i - 1][ca - 1][cb][1] + dp[i - 1][ca - 1][cb][2]; dp[i][ca][cb][0] = num % mod;}if (cb){int num = dp[i - 1][ca][cb - 1][0] + dp[i - 1][ca][cb - 1][2];dp[i][ca][cb][1] = num % mod;}if (cnt[i] - ca - cb){int num = dp[i - 1][ca][cb][0] + dp[i - 1][ca][cb][1];dp[i][ca][cb][2] = num % mod;}}}}// 先获得特定i j k对应的方案数for(int i = 0; i <= cnt[n]; i ++) for (int j = 0; i + j <= cnt[n]; j++){int num = dp[n][i][j][0] + dp[n][i][j][1] + dp[n][i][j][2];f[i][j][cnt[n] - i - j] = num % mod; }// 获得i j k有富余的情况对应的方案数 三维前缀和for (int i = 0; i <= 300; i++) {for (int j = 0; j <= 300; j++) {for (int k = 0; k <= 300; k++) {if (i > 0) f[i][j][k] += f[i - 1][j][k];if (j > 0) f[i][j][k] += f[i][j - 1][k]; if (k > 0) f[i][j][k] += f[i][j][k - 1]; if (i && j)f[i][j][k] += mod - f[i - 1][j - 1][k];if (k && j)f[i][j][k] += mod - f[i][j - 1][k - 1];if (i && k)f[i][j][k] += mod - f[i - 1][j][k - 1];if (i && j && k)f[i][j][k] += f[i - 1][j - 1][k - 1];f[i][j][k] %= mod;}}}while (m --) {int x, y, z; cin >> x >> y >> z;cout << f[x][y][z] << '\n';}
}signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t = 1;//cin >> t;while (t--) solve();return 0;
}
/*   /\_/\
*   (= ._.)
*   / >  \>
*/

Problem I. Good Partitions

题目意思:

        给定一个数组,平均分割k段,每一段保证相邻的两个元素不是递增的,求满足条件的k。

同时可以单点修改,再p位置修改为v。

解题思路:

        1.满足条件的分割点就是if(a[i] > a[i + 1])那么i就是分割点。

        2.求出分割点的gcd,找出他因子的个数,就是分割方法的总数。

        3.为了支持单点修改,每次修改完会有4种结果,并且只会对位置p之后的结果会有影响,我们用线段树来维护即可。

#include<bits/stdc++.h>using namespace std;using ll = long long;
using ld = long double;
using pii = pair<int, int>;
using ull = unsigned long long;struct node{int l, r;ll val;
};
const int N = 2e5 + 10;
int cnt[N];
int gcd(ll a, ll b)
{return b ? gcd(b, a % b) : a;
}class SegmentTree {public:int n;vector<node> c;vector<int> a;
public:SegmentTree (int x){n = x << 2;c.resize(n);a.resize(x + 1);}void build(int k, int l, int r){c[k] = {l, r, 0};if(l != r){int mid = (l + r) / 2;build(k << 1, l, mid);build(k << 1 | 1, mid + 1, r);}}void pushup(int k){c[k].val = gcd(c[k << 1].val, c[k << 1 | 1].val);}void modify(int k, int x, int v){if(c[k].l == c[k].r) c[k].val = v;else{int mid = c[k].l + c[k].r >> 1;if(x <= mid ) modify(k << 1, x, v);else modify(k << 1 | 1, x, v);pushup(k);}}
};void solve(){int n, m;cin >> n >> m;SegmentTree s(n);s.build(1, 1, n);for(int i = 1; i <= n; i ++){cin >> s.a[i];}for (int i = 1; i < n; i++){if (s.a[i] > s.a[i + 1]) s.modify(1, i, i);else s.modify(1, i, 0);}int ans = s.c[1].val;if(ans == 0) cout << n << endl;else cout << cnt[ans] << endl;int p, v;while(m --){cin >> p >> v;s.a[p] = v;if(s.a[p - 1] > s.a[p]) s.modify(1, p - 1, p - 1);else s.modify(1, p - 1, 0);if(p < n){if(s.a[p] > s.a[p + 1]) s.modify(1, p, p);else s.modify(1, p, 0);}int ans = s.c[1].val;if(ans == 0) cout << n << endl;else cout << cnt[ans] << endl;}
}int main(){ios::sync_with_stdio(0);cin.tie(0);for (int i = 1; i <= 200001; i++)for (int j = 1; j * i <= 200001; j++)cnt[i * j] ++;int t = 1;cin >> t;while(t --)solve();return 0;
}

Problem J. Grand Prix of Ballance

签到模拟

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZooKeeper单机、集群模式搭建教程

单点配置 ZooKeeper在启动的时候&#xff0c;默认会读取/conf/zoo.cfg配置文件&#xff0c;该文件缺失会报错。因此&#xff0c;我们需要在将容器/conf/挂载出来&#xff0c;在制定的目录下&#xff0c;添加zoo.cfg文件。 zoo.cfg logback.xml 配置文件的信息可以从二进制包…

AlphaFold3中文使用说明

目录 1. 在线网站用例1. 使用json输入预测蛋白结构 2. 本地命令行2.1 运行示例2.2 AF3输入A&#xff09;指定输入B&#xff09;输入格式b&#xff09;JSON最外层结构b.1 序列多序列比对&#xff08;MSA&#xff09;结构模板&#xff08;templates&#xff09; b.2 共价键b.3 用…

vue2/vue3中使用的富文本编辑器vue-quill

前言&#xff1a; 整理下常用的富文本编辑器工具。 vue3: 实现效果&#xff1a; 实现步骤&#xff1a; 1、安装插件&#xff0c; 编辑器核心插件 vueup/vue-quill yarn add pnpm i npm i cnpm i vueup/vue-quill vueup/vue-quill 2、安装选择性插件 &a…

【星海随笔】ZooKeeper-Mesos

开源的由 Twitter 与 伯克利分校的 Mesos 项目组共同研发设计。 两极调度架构 支持高可用集群&#xff0c;通过ZooKeeper进行选举。 Mesos master 管理着所有的 Mesos slave 守护进程 每个slave运行具体的任务或者服务。 Franework 包括的调度器和执行机两部分 执行器运行在Me…

Spring Cloud Eureka 服务注册与发现

Spring Cloud Eureka 服务注册与发现 一、Eureka基础知识概述1.Eureka两个核心组件2.Eureka 服务注册与发现 二、Eureka单机搭建三、Eureka集群搭建四、心跳续约五、Eureka自我保护机制 一、Eureka基础知识概述 1.Eureka两个核心组件 Eureka Server &#xff1a;服务注册中心…

前后端分离练习(云客项目)

这几天学习了一点前端的开发&#xff0c;后面通过这个小项目来整理开发的过程&#xff0c;参考的是动力节点的动力云客这个项目&#xff0c;大家有兴趣可以去看一下视频&#xff0c;我更多的是学习了它的前端开发&#xff0c;后端我是用自己的方式来的&#xff0c;那么开始今天…

Spring boot + Vue2小项目基本模板

Spring boot Vue2小项目基本模板 基本介绍基本环境安装项目搭建最终效果展示 基本介绍 项目来源哔哩哔哩的青戈&#xff0c;跟着学习搭建自己的简单vue小项目&#xff1b;看别人的项目总觉得看不懂&#xff0c;需要慢慢打磨 这里目前只简单的搭建了菜单导航和表格页面&#x…

金融领域先锋!海云安成功入选2024年人工智能先锋案例集

近日&#xff0c;中国人工智能产业发展联盟《2024年人工智能先锋案例集》&#xff08;以下简称“AIIA先锋案例集”&#xff09;在中国人工智能产业发展联盟第十三次全体会议上正式发布。该案例集由人工智能产业发展联盟&#xff08;AIIA&#xff09;、工业和信息化部新闻宣传中…

基于OpenCV的图片人脸检测研究

目录 摘要 第一章 引言 第二章 基于 OpenCV 的图片人脸检测 2.1 实现原理 2.2 代码实现与分析 2.3 代码详细分析 第三章 实验结果与分析 第四章 OpenCV 人脸检测的优势与局限性 4.1 优势 4.2 局限性 第五章 结论 第六章 未来展望 参考文献 摘要 人脸检测是计算机视…

【计算机毕设】无查重 基于python豆瓣电影评论舆情数据可视化系统(完整系统源码+数据库+开发笔记+详细部署教程)✅

目录 【计算机毕设】无查重 基于python豆瓣电影数据可视化系统&#xff08;完整系统源码数据库开发笔记详细部署教程&#xff09;✅ 一、项目背景 二、项目目标 三、项目功能 四、开发技术介绍 五、数据库设计 六、项目展示 七、开发笔记 八、启动步骤文档 九、权威教…

Python学习从0到1 day29 Python 高阶技巧 ⑦ 正则表达式

目录 一、正则表达式 二、正则表达式的三个基础方法 1.match 从头匹配 2.search&#xff08;匹配规则&#xff0c;被匹配字符串&#xff09; 3.findall&#xff08;匹配规则&#xff0c;被匹配字符串&#xff09; 三、元字符匹配 单字符匹配&#xff1a; 注&#xff1a; 示例&a…

[Python学习日记-67] 封装

[Python学习日记-67] 封装 简介 如何隐藏类中的属性 封装并不是单纯意义的隐藏 封装与扩展性 特性&#xff08;property&#xff09; 简介 从封装本身的意思去理解&#xff0c;封装就好像是拿来一个麻袋&#xff0c;把小猫、小狗、小王八和小猪一起装进麻袋&#xff0c;然…

@Autowired 和 @Resource思考(注入redisTemplate时发现一些奇怪的现象)

1. 前置知识 Configuration public class RedisConfig {Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template new RedisTemplate<>();template.setConnectionFactory(facto…

MongoDB分布式集群搭建----副本集----PSS/PSA

MongoDB分布式集群 Replication 复制、Replica Set 复制集/副本集 概念 一、 副本集的相关概念 1.概念 “ A replica set is a group of mongod instances that maintain the same data set. ” 一组MongoDB服务器&#xff08;多个mongod实例&#xff09;&#xff08;有不…

五、函数封装及调用、参数及返回值、作用域、匿名函数、立即执行函数

1. 函数基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style&…

数据分析-48-时间序列变点检测之在线实时数据的CPD

文章目录 1 时间序列结构1.1 变化点的定义1.2 结构变化的类型1.2.1 水平变化1.2.2 方差变化1.3 变点检测1.3.1 离线数据检测方法1.3.2 实时数据检测方法2 模拟数据2.1 模拟恒定方差数据2.2 模拟变化方差数据3 实时数据CPD3.1 SDAR学习算法3.2 Changefinder模块3.3 恒定方差CPD3…

第八节 如何结合AAA实现用户远程登录-路由基础

关于调试设备的登录方式&#xff0c;一共有三种&#xff1a; 第一个&#xff1a;console&#xff1a;需要工程师在现场&#xff0c;进行登录&#xff0c;设备开局的时候使用 第二个&#xff1a;telnet ssh&#xff1a;基于网络互通的前提下进行登录的&#xff0c;远程登录 第三…

【Conda】Windows下conda的安装并在终端运行

下载 在官网下载 https://www.anaconda.com/download/success 安装 双击 一直下一步安装 配置环境变量 为了在终端运行&#xff0c;需配置环境变量 进入到安装conda的目录并复制路径 设置高级环境变量 在终端运行 输入&#xff1a; conda list表明可以正常运行 参考…

LogViewer NLog, Log4Net, Log4j 文本日志可视化

LogViewer 下载 示例&#xff1a;NLog文本日志可视化软件&#xff0c;并且能够实时监听输出最新的日志 nlog.config 通过udp方式传输给LogViewer (udp://ip:port) <?xml version"1.0" encoding"utf-8" ?> <nlog xmlns"http://www.nlog-…

MuMu模拟器安卓12安装Xposed 框架

MuMu模拟器安卓12安装Xposed 框架 当开启代理后,客户端会对代理服务器证书与自身内置证书展开检测,只要检测出两者存在不一致的情况,客户端就会拒绝连接。正是这个原因,才致使我们既没有网络,又抓不到数据包。 解决方式: 通过xposed框架和trustmealready禁掉app里面校验…