当前位置: 首页 > news >正文

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

签到模拟

相关文章:

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

Problem L. Recover Statistics 题目意思&#xff1a; 给定a, b, c三个值&#xff0c;确保构造的数列中包含满足题目的数量 解题思路&#xff1a; 100 中 选择a 50个&#xff0c; b45个&#xff0c; c4个。 #include <iostream>using namespace std;using ll long …...

显示微服务间feign调用的日志

第一步 package com.niuniu.common.config;import com.niuniu.common.CommonConstant; import com.niuniu.common.utils.UserContext; import feign.Logger; import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.context.annotation.…...

SOHO场景开局(小型,多子网):AP+管理型交换机+路由器+光猫

业务需求 1. 实现除光猫外&#xff0c;整网设备通过APP进行开局&#xff0c;开局部署完成后&#xff0c;能够通过APP远程运维。 2. 需要单独划分访客、办公、视频监控3个子网&#xff0c;其中访客子网供顾客无线上网使用&#xff0c;办公子网用于接入无线和有线办公终端&#x…...

Android - Pixel 6a 手机OS 由 Android 15 降级到 Android 14 操作记录

Pixel 6a 手机由 Android 14 升级到 Android 15了&#xff0c;但是由于一些原因又想降级回 Android 14&#xff0c; 能降吗&#xff1f;该怎么降级呢&#xff1f;本篇文章来记述实际操作过程&#xff0c;希望能给想做相同操作的人一些帮助。 答案当然是能降&#xff0c;而且我…...

linux系统kkFileView 配置https预览文件

思路&#xff1a; 1.kkfile的 context全局路径可以修改 context-path,比如&#xff1a;server.servlet.context-path 2.使用nginx反向代理 /kkfile 转发到 kkfile路径上 官网教程 ​​​​​​kkFileView - 在线文件预览 1、配置config/application.properties. server.se…...

stm32——通用定时器时钟知识点

&#xff08;该图来自小破站 铁头山羊老师的stm32标准库教学&#xff09;...

前端无感刷新token

摘要&#xff1a; Axios 无感知刷新令牌是一种在前端应用中实现自动刷新访问令牌&#xff08;access token&#xff09;的技术&#xff0c;确保用户在进行 API 请求时不会因为令牌过期而中断操作 目录概览 XMLHttpRequestAxiosFetch APIJQuni.request注意事项&#xff1a; 访问…...

针对股票评论的情感分类器

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月16日13点39分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…...

Day18 Nim游戏

你和你的朋友&#xff0c;两个人一起玩 Nim 游戏&#xff1a; 桌子上有一堆石头。 你们轮流进行自己的回合&#xff0c; 你作为先手 。 每一回合&#xff0c;轮到的人拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数&#xff…...

理解反射,学会反射:撬开私有性质(private)的属性与方法

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study专栏&#xff1a;用Java学习数据结构系列喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹喜欢的话可以点个赞谢谢了。作者&#xff1a;小…...

Redis在高性能缓存中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Redis在高性能缓存中的应用 Redis在高性能缓存中的应用 Redis在高性能缓存中的应用 引言 Redis 概述 定义与原理 发展历程 Redi…...

菲涅耳全息图

菲涅耳全息图&#xff1a;记录介质在物光波场的菲涅耳衍射区(物体到记录介质表面的距离在菲涅耳衍射区内)。 一、点源全息图的记录和再现 1.1 记录 设物光波和参考光波是从点源O(xo, yo, zo)和点源 R(xr, yr, zr)发出的球面波, 波长为λ1, 全息底片位于z0 的平面上, 与两个点源…...

STM32 BootLoader 刷新项目 (十) Flash擦除-命令0x56

STM32 BootLoader 刷新项目 (十) Flash擦除-命令0x56 1. STM32F407 BootLoader 中的 Flash 擦除功能详解 在嵌入式系统中&#xff0c;BootLoader 的设计是非常关键的部分&#xff0c;它负责引导主程序的启动、升级以及安全管理。而在 STM32F407 等 MCU 上实现 BootLoader&…...

POI word转pdf乱码问题处理

1.使用poi 转换word文档成pdf 导入依赖 <dependency><groupId>com.aspose</groupId><artifactId>words</artifactId><version>16.8.0</version></dependency>2.代码实现: SneakyThrowspublic void wordToPdf(String docPath,…...

【GeekBand】C++设计模式笔记11_Builder_构建器

1. “对象创建” 模式 通过 “对象创建” 模式绕开new&#xff0c;来避免对象创建&#xff08;new&#xff09;过程中所导致的紧耦合&#xff08;依赖具体类&#xff09;&#xff0c;从而支持对象创建的稳定。它是接口抽象之后的第一步工作。典型模式 Factory MethodAbstract …...

面试经典 150 题:20、2、228、122

20. 有效的括号 参考代码 #include <stack>class Solution { public:bool isValid(string s) {if(s.size() < 2){ //特判&#xff1a;空字符串和一个字符的情况return false;}bool flag true;stack<char> st; //栈for(int i0; i<s.size(); i){if(s[i] ( |…...

SQL面试题——持续增长问题

持续增长我们也可以称之为连续增长,本质上还是连续类的问题,前面我们已经介绍过 SQL面试题——最大连续登陆问题 SQL面试题——球员连续四次得分 SQL面试题——间隔连续问题 SQL面试题——蚂蚁SQL面试题 连续3天减少碳排放量不低于100的用户 你可以看看之前的文章,了解…...

nginx源码安装配置ssl域名

nginx源码安装 下载 wget http://nginx.org/download/nginx-1.24.0.tar.gz 解压 tar -zxvf nginx-1.24.0.tar.gz 下载openssl apt install openssl 安装nginx cd nginx-1.24.0 sudo apt-get install libpcre3 libpcre3-dev ./configure --prefix=/home/nginx24 --with-http_ss…...

每日一博 - Java的Shallow Copy和Deep Copy

文章目录 概述创建对象的5种方式1. 通过new关键字2. 通过Class类的newInstance()方法3. 通过Constructor类的newInstance方法4. 利用Clone方法5. 反序列化 Clone方法基本类型和引用类型浅拷贝深拷贝如何实现深拷贝1. 让每个引用类型属性内部都重写clone()方法2. 利用序列化 概述…...

.netcore + postgis 保存地图围栏数据

一、数据库字段 字段类型选择(Type) 设置对象类型为&#xff1a;geometry 二、前端传递的Json格式转换 前端传递围栏的各个坐标点数据如下&#xff1a; {"AreaRange": [{"lat": 30.123456,"lng": 120.123456},{"lat": 30.123456…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...