2024CCPC辽宁省赛 个人补题 ABCEGJL

Dashboard - 2024 CCPC Liaoning Provincial Contest - Codeforces

过题难度

B A J C L E G

铜奖  4 953

银奖  6 991

金奖  8 1664

B:

模拟题

// Code Start Here	string s;cin >> s;reverse(all(s));cout << s << endl;

A:很明显的哈希一下,然后去重即可,这里set和map都可以

// Code Start Here	string s;getline(cin , s);for(int i = 0;i<sz(s);i++){if((s[i] >= 'A' && s[i] <= 'Z')){s[i] += 32;}}set<string> st;for(int i = 0;i<sz(s);i++){if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')){int j = i;string t = "";while((s[j] >= 'a' && s[j] <= 'z') || (s[j] >= 'A' && s[j] <= 'Z')) t += s[j++];i = j;st.insert(t);}}int q;cin >> q;while(q--){string t;cin >> t;if(st.find(t) != st.end())st.erase(t);}
//	for(auto i : st)cout << i <<" ";cout << sz(st) << endl;

J

模拟前后两次的人数

// Code Start Here	int n;cin >> n;int a , b , c;cin >> a >> b >> c;vector<int> x(n + 1) , y (n + 1);for(int i = 1;i<=n;i++)cin >> x[i] >> y[i];int d;cin >> d;int before = 0 , after = 0;for(int i = 1;i<=n;i++){if(x[i] + y[i] >= c){before++;}}for(int i = 1;i<=n;i++) x[i] = min(a , x[i] + d);for(int i = 1;i<=n;i++){if(x[i] + y[i] >= c){after++;}}cout <<after - before << endl;

C

DFS跑一遍每个插座和插排的功率,然后贪心跑一遍判断即可

// Code Start Here	int n;cin >> n;vector<int> w(n + 1);vector<vector<int>> g(n + 1);vector<int> f(n + 1);for(int i = 1;i<=n;i++){int u;cin >> u >> w[i];g[u].push_back(i);}w[0] = 2200;auto dfs = [&](auto &&self , int u)->void{if(g[u].empty())f[u] += w[u];for(auto v : g[u]){self(self,v);f[u] += f[v];}};dfs(dfs , 0);vector<int> e , ee;for(int i = 0;i<=n;i++){if(!g[i].empty()){e.push_back(f[i]);ee.push_back(w[i]);}}sort(all(e)) , sort(all(ee));bool flag = true;for(int i = 0;i<sz(e);i++){if(e[i] > ee[i] || e[i] > w[0])flag = false;}cout << ( flag ? "YES" : "NO") <<endl;

L

题意:

2024年起,每平年 +1 层数。但有特殊规则,年份必须是 4 的倍数,且不能是 100 的倍数但不是 10000 的倍数,否则是平年。到第 k 层的时候,是哪一年

思路:

可以不断贪心,更简单的方法是二分年份,然后找第k个合法年份。

计算到年份 x 之间,有多少个平年。遍历 i = 4, 400, 40000, ... 逐个计算:x / i 表示小于等于 x 有多少个 i 的倍数(4, 400, 40000, ...)x / (25 * i) 表示去掉那些是100倍数但不是10000倍数的年数。x - sum 表示有效的龙之研习年份数量,看看是不是到达了第 n + 1533 个。这里的 1533 是因为:2024是第0层,到2024年底总共经历了 2024 - 1533 = 491 个有效年份(实际上这1533是题目设定的初始偏移值,具体是为了校正年份起点和层数的关系)

// Code Start Here	int t;cin >> t;while(t--){int n;cin >> n;int l = 2025 , r = 2e18;auto check = [&](int x)->bool{int sum = 0;for(int i = 4;i<=x;i*= 100){sum += x / i - x / (25 * i);}return (x - sum) >= (n + 1533);};while(l <= r){int mid = l + r >> 1;if(check(mid)) r = mid - 1;else l = mid + 1;}cout << l << endl;}

E

一道大模拟

// Code Start Here	int t;cin >> t;auto solve = [&]()->void{int x, y; cin >> x >> y;if(x*y %4 !=0){cout << "NO\n";return ;}vector a(x+1, vector<int>(y+1, 0));auto yes = [&](){cout << "YES\n";for(int i=1; i<=x; ++i){for(int j=1; j<=y; ++j) cout << a[i][j] << " ";cout << endl;}};if(x % 4 == 0){int cnt = 1;for(int j=1; j<=y; j++){for(int i=1; i<=x; i+=4){a[i][j] = a[i+1][j] = a[i+2][j] = a[i+3][j] = cnt++;}}yes();return;}if(y % 4 ==0){int cnt=1;for(int i=1; i<=x; i++){for(int j=1; j<=y; j+=4){a[i][j] = a[i][j+1] = a[i][j+2] = a[i][j+3] = cnt++;}}yes();return;}if(x%2 ==0 && y%2 ==0){if(y >=6 && (y-6)%4 ==0){for(int i=1; i<=x; i+=2){int temp = (i/2)*((y-6)/4*2 +3) +1;a[i][1] = a[i][2] = a[i][3] = a[i+1][1] = temp;a[i][4] = a[i][5] = a[i][6] = a[i+1][6] = temp+1;a[i+1][2] = a[i+1][3] = a[i+1][4] = a[i+1][5] = temp+2;int cnt = temp+3;for(int j=7; j<=y; j+=4){a[i][j] = a[i][j+1] = a[i][j+2] = a[i][j+3] = cnt++;a[i+1][j] = a[i+1][j+1] = a[i+1][j+2] = a[i+1][j+3] = cnt++;}}yes();return;}else if(x >=6 && (x-6)%4 ==0){for(int j=1; j<=y; j+=2){int temp = (j/2)*((x-6)/4*2 +3) +1;a[1][j] = a[2][j] = a[3][j] = a[1][j+1] = temp;a[4][j] = a[5][j] = a[6][j] = a[6][j+1] = temp+1;a[2][j+1] = a[3][j+1] = a[4][j+1] = a[5][j+1] = temp+2;int cnt = temp+3;for(int i=7; i<=x; i+=4){a[i][j] = a[i+1][j] = a[i+2][j] = a[i+3][j] = cnt++;a[i][j+1] = a[i+1][j+1] = a[i+2][j+1] = a[i+3][j+1] = cnt++;}}yes();return;}}cout << "NO\n";};while(t--){solve();}

G

题意:给定一个长度为n的数组,求存在多少个子数组满足最大 值出现至少k 次。

思路:对于每一个位置i,我们可以考虑其作为第一个最大值时对答案的贡献,即能保证不重不漏的计数。不妨设:Li 为以 i 为起点,从右往左第一个比ai 大的元素的位置;Ri 为以 i 为起点,从左往右第一个比ai 大的元素的位置;lsti 为相对于当前位置 i,ai 上一次出现的位置;nxti 为相对于当前位置 i,ai 第 k 次出现的位置。

其中,Li 和Ri 可以通过单调栈计算,lsti 和nxti 则可以通过对值域开桶,根据每个位置在对应的桶中的相对位置进行计算。对于当前位置i 作为第一个最大值的数组:其左端点的合法范围是(max(lsti,Li),i],其右端点的合法范围是[i,min(nxti,Ri))。最后,统计每个位置作为第一个最大值时的贡献,即能求出结果

// Code Start Here	int t;cin >> t;while(t--){int n , k;cin >> n >> k;vector<int> a(n + 1) , l (n + 1) , r(n + 1);vector<vector<int>> num(n + 1);for(int i = 1;i<=n;i++){cin >> a[i];num[a[i]].push_back(i);}int ans = 0;vector<int> left , right;for(int i = 1;i<=n;i++){while(!left.empty() && a[left.back()] <=a[i])left.pop_back();if(left.empty())l[i] = 1;else l[i] = left.back() + 1;left.push_back(i);}for(int i = n;i>=1;i--){while(!right.empty() && a[right.back()] <= a[i])right.pop_back();if(right.empty())r[i] = n;else r[i] = right.back() - 1;right.push_back(i);}for(int i = n;i>=1;i--){if(sz(num[i]) >= k){for(int j = 0;j + k - 1 < sz(num[i]);j++){int p = num[i][j] , q = num[i][j + k - 1];int l_ = l[p] , r_ = r[p];if(j >= 1) l_ = max(l_ , num[i][j - 1] + 1);if(r_ >= q)ans += (p - l_ + 1) *(r_ - q + 1);}}	}cout << ans << endl;}

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

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

相关文章

Java基础 Day17

一、递归 方法直接或者间接调用本身 将大问题, 层层转化为一个与原问题相似的、规模更小的问题来解决 二、异常 程序在编译或执行过程中&#xff0c;出现的非正常的情况 (错误) 语法错误不是异常 1、阅读异常信息 从下往上看&#xff1a;发生异常的位置、异常名称、发生异…

hook原理和篡改猴编写hook脚本

hook原理&#xff1a; hook是常用于js反编译的技术&#xff1b;翻译就是钩子&#xff0c;他的原理就是劫持js的函数然后进行篡改 一段简单的js代码 &#xff1a;这个代码是顺序执行的 function test01(){console.log(test01)test02() } function test02(){console.log(02)tes…

使用 Vue 展示 Markdown 文本

使用 Vue 展示 Markdown 文本可以通过以下几种方法&#xff1a; 方法 1&#xff1a;使用 v-html 指令 可以使用 v-html 指令来渲染 Markdown 文本&#xff1a; <template><div v-html"markdownText"></div> </template> <script>e…

深度解析 Java 中介者模式:重构复杂交互场景的优雅方案

一、中介者模式的核心思想与设计哲学 在软件开发的历史长河中&#xff0c;对象间的交互管理一直是架构设计的核心难题。当多个对象形成复杂的网状交互时&#xff0c;系统会陷入 "牵一发而动全身" 的困境。中介者模式&#xff08;Mediator Pattern&#xff09;作为行…

FreeCAD傻瓜教程-外螺纹的绘制,利用两个实体进行布尔运算来实现

起因&#xff1a;因为要设计一个波珠螺丝固定器&#xff0c;为了不跑偏&#xff0c;需要在螺柱上加工一个直径6mm&#xff0c;深度1.2mm的圆弧凹槽所以想用泉州制造的6.8车铣加工。 但是该加工目前不支持轴向的钻孔&#xff0c;所以想着干脆在两端加上M8的螺栓&#xff0c;也起…

权限控制相关实现

Spring Boot-Shiro-Vue&#xff1a; 这个项目可以满足基本的权限控制需求&#xff0c;前后端都有&#xff0c;开箱即用

Node.js路径处理指南:如何安全获取当前脚本目录路径

本文适用于 Node.js 14.x及以上版本&#xff0c;同时覆盖 CommonJS 和 ES Modules 模块系统 文章目录 一、为什么需要关注路径问题&#xff1f;二、三种核心方法详解方法1&#xff1a;经典方案 __dirname (CommonJS)方法2&#xff1a;ES Modules 解决方案方法3&#xff1a;动态…

web基础

域名概述 2-1 域名的概念&#xff1a;IP 地址不易记忆&#xff0c;域名是互联网络上识别和定位计算机的层次结构式的字符标识&#xff0c;与该计算机的互联网协议 (IP) 地址相对应&#xff0c;用于在数据传输时标识计算机的电子方位&#xff0c;方便人们记忆和输入。 早期使用…

医疗行业数据共享新实践:如何用QuickAPI打通诊疗全流程数据壁垒

在医疗行业&#xff0c;数据的高效流转直接影响诊疗效率和患者体验。某三甲医院在数字化转型中发现&#xff0c;虽然已积累大量核心业务数据&#xff0c;但各科室系统间的数据互通仍存在明显瓶颈——检验科的报告无法实时同步至门诊系统&#xff0c;药房库存数据与采购系统脱节…

高级认知型Agent

目标: 构建一个具备自主规划、多步推理、工具使用、自我反思和环境交互能力的智能代理,使其能够高效、可靠地完成复杂任务。 核心理念: Agent的智能涌现于一个精密的认知循环: 感知 (Perceive) -> 理解与规划 (Think/Plan - 想) -> 信息获取 (Search/Act - 查) -&g…

百度地图的地铁图API所有城市的城市名和citycode的对照关系列表

百度地图的地铁图API所有城市的城市名和citycode的对照关系列表 城市keywordcitycode北京beijing131上海shanghai289广州guangzhou257深圳shenzhen340重庆chongqing132天津tianjin332石家庄shijiazhuang150南京nanjing315成都chengdu75沈阳shenyang58杭州hangzhou179武汉wuhan2…

SymPy | 获取表达式自由变量方法与因式分解

SymPy 是 Python 中强大的符号计算库&#xff0c;广泛应用于数学建模、公式推导和科学计算。本文将从两个核心功能展开&#xff1a;表达式中自由变量的获取与因式分解的实现&#xff0c;通过完整代码示例和深入分析&#xff0c;帮助读者掌握其使用方法。 第一部分&#xff1a;获…

掩膜合并代码

def ensure_dir(path):"""若目录不存在则创建"""if not os.path.exists(path): #判断路径是否存在os.makedirs(path) #创建路径def read_and_resize(img_path, size):"""读取并缩放图像到指定尺寸&#xff0c;返回 numpy 数组&qu…

蓝桥杯5130 健身

问题描述 小蓝要去健身&#xff0c;他可以在接下来的 1∼n 天中选择一些日子去健身。 他有 m 个健身计划&#xff0c;对于第 i 个健身计划&#xff0c;需要连续的 天&#xff0c;如果成功完成&#xff0c;可以获得健身增益 si​ &#xff0c;如果中断&#xff0c;得不到任何…

auto关键字解析

前言 在11标准之前&#xff0c;auto在c中是声明存储器类型的关键字。而在11标准中它的功能变为了类型推导。 对此&#xff0c; 在这里引入Cprimer中的原句&#xff1a; 编程时常常需要把表达式的值赋给变量&#xff0c;这就要求在声明变量的时候清楚的知道表达式的类型。然而…

嵌入式STM32学习——串口USART 2.0(printf重定义及串口发送)

printf重定义&#xff1a; C语言里面的printf函数默认输出设备是显示器&#xff0c;如果要实现printf函数输出正在串口或者LCD显示屏上&#xff0c;必须要重定义标准库函数里调用的与输出设备相关的函数&#xff0c;比如printf输出到串口&#xff0c;需要将fputc里面的输出指向…

信号量机制:操作系统中的同步与互斥利器

在计算机操作系统中&#xff0c;信号量机制是一种重要的进程同步与互斥工具。它广泛应用于多进程或多线程环境中&#xff0c;用于解决并发访问共享资源时可能出现的竞态条件问题。本文将从信号量的基本概念出发&#xff0c;逐步深入探讨其工作原理、实现方式以及实际应用&#…

LeetCode 1004. 最大连续1的个数 III

LeetCode 1004题 “最大连续1的个数 III” 是一道关于数组和滑动窗口的问题。题目描述如下&#xff1a; 题目描述 给定一个由若干 0 和 1 组成的数组 nums&#xff0c;以及一个整数 k。你可以将最多 k 个 0 翻转为 1。返回经过翻转操作后&#xff0c;数组中连续 1 的最大个数…

digitalworld.local: FALL靶场

digitalworld.local: FALL 来自 <digitalworld.local: FALL ~ VulnHub> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.4 3&…

经典Java面试题的答案——Java 基础

大家好&#xff0c;我是九神。这是互联网技术岗的分享专题&#xff0c;废话少说&#xff0c;进入正题&#xff1a; 1.JDK 和 JRE 有什么区别&#xff1f; JDK&#xff1a;Java Development Kit 的简称&#xff0c;java 开发工具包&#xff0c;提供了 java 的开发环境和运行环境…