1.小苯的数字权值

在这里插入图片描述

#include <iostream>
#include <algorithm>
using namespace std;const int max_n = 2000000;
int d[max_n + 1];
int f[max_n + 1];int main() {for(int i =1; i<=max_n;i++){for(int j = i; j<=max_n;j+=i){d[j]++;}}for(int i=1; i<=max_n;i++){f[i] = d[i];}for(int i = 2; i <= max_n; i++){for(int j = 2; j <= max_n / i; j++){int k = i * j;if(f[i] + f[j] > f[k]){f[k] = f[i] + f[j];}}}int T;scanf("%d", &T);while(T--){int x;scanf("%d", &x);printf("%d\n", f[x]);}return 0;}
2.小红的子序逆序列

在这里插入图片描述

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;const int MOD = 1e9 +7;class FenwickTree{
private:vector<int> tree;int size;public:FenwickTree(int n) : size(n), tree(n+1,0){}void update(int idx, int delta) {while(idx <= size){tree[idx] += delta;idx += idx & -idx;}}int query(int idx){int res = 0;while(idx > 0){res += tree[idx];idx -= idx & -idx;}return res;}
};int main(){int n;cin >> n;vector<int> a(n);for(int i=0;i<n;++i){cin >> a[i];}vector<int> temp = a;sort(temp.begin(), temp.end());temp.erase(unique(temp.begin(), temp.end()), temp.end());for(int i = 0; i<n;i++){a[i] = lower_bound(temp.begin(), temp.end(), a[i]) - temp.begin() + 1;}FenwickTree ft(temp.size());long long inv_count = 0;for(int i = n-1; i>=0;--i){inv_count += ft.query(a[i] - 1);ft.update(a[i], 1);}long long power = 1;for(int i =0; i < n-2; ++i){power = (power * 2)%MOD;}long long total = (inv_count % MOD) * (power % MOD) % MOD;cout << total << endl;return 0;
}// 64 位输出请用 printf("%lld")
3.小美的彩带

在这里插入图片描述

#include <iostream>
#include<bits/stdc++.h>
using namespace std;#define all(x) x.begin(), x.end() //
int n, q ,len, m, blo;char op;
int length;
int lisan[20005];
int a[400005], ans[200005];
int mp[200005], siz;
// 64 位输出请用 printf("%lld")struct stuct{int l, r, idx;bool operator< (const stuct& x) const{if(l/blo != x.l / blo) return l < x.l;return ( l / blo ) & 1 ? r > x.r : r < x.r;}} b[200005];int get(int v){return lower_bound(lisan +1, lisan +1 +m, v) - lisan;
}int main(){scanf("%d %d", &n, &q);for(int i=1; i<=n;++i){scanf("%d", &a[i]);lisan[i] = a[i];}sort(lisan +1, lisan + 1+ n);m = unique(lisan + 1, lisan + 1 + n) - lisan;--m;blo = sqrt( 2* n) * 1.5;for(int i = 1; i <= n; ++i){a[i] = get(a[i]);a[i+n] = a[i];}scanf("\n");int l = 1, r = 2*n, len = 0;for(int i = 1; i<=q;++i){scanf("%c %d\n", &op, &length);if(length >= n){ans[i] = m;length %= n;if(op =='L'){l += length;if(l>n) {l -= n;}}else{r -= length;if( r<= n) r+=n;}continue;}if(op =='L'){++len;b[len].l = l, b[len].r = l + length -1, b[len].idx = i;l+=length;if(l > n) l -= n;}else{++len;b[len].l = r - length + 1, b[len].r = r, b[len].idx = i;r -= length;if(r <= n) r += n;}}sort(b+1, b+1+len);l = 0, r = 0;for(int i = 1; i <= len; ++i){while( r < b[i].r){++r;if(mp[a[r]]==0) siz++;mp[a[r]]++;}while( r > b[i].r){mp[a[r]]--;if(mp[a[r]]==0)siz--;--r;}while( l < b[i].l){mp[a[l]]--;if(mp[a[l]] == 0) --siz;++l;}while( l > b[i].l){--l;if(mp[a[l]] == 0) ++siz;mp[a[l]]++;}ans[b[i].idx] = siz;}for(int  i = 1; i<= q; ++i) printf("%d\n", ans[i]);return 0;
}
4.小美和大富翁

在这里插入图片描述

5.数组删除

在这里插入图片描述

#include <iostream>
#include <cstring>
#include <vector>
#include <string>
#include <set>
#include <unordered_set>
#include <unordered_map>
#include <cmath>
#include <queue>
#include <iomanip>
#include <algorithm>using namespace std;// 64 位输出请用 printf("%lld")unordered_map<long long, long long> hashMap;long long a[20005];void solve() {hashMap.clear();long long n, k, x;cin >> n >> k >> x;for(long long i = 1; i <= n; i++){cin >> a[i];hashMap[a[i]]++;}long long minMiss = 0;while(true){auto it  = hashMap.find(minMiss);if(it == hashMap.end()){break;}minMiss++;}long long result = k * minMiss; for(long long i = 1; i <= n; i++){long long start =0;long long mex = -1;auto target = hashMap.find(a[i]);if(target -> second >= 2){hashMap[a[i]]--;}else{hashMap.erase(a[i]);}while(true){auto it = hashMap.find(start);if(it == hashMap.end()){mex = start;break;}start++;}result = min(result, i*x+k*mex);}cout << result << endl;
}int main() {std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);long long T = 1;cin >> T;while(T--){solve();}return 0;
}
6.数字删除

在这里插入图片描述
在这里插入图片描述

#include <string>
#include <iostream>
using namespace std;bool isValid(const string & s){if(s.empty() || s == "0") return false;int sum =0;for(char c:s) sum += c - '0';return sum % 3==0;
}int maxDelete(string s){int cnt =0;while(s.length() > 1){bool found = false;for(int i = 0; i< s.length(); i++){string t = s.substr(0,i) + s.substr(i+1);if(isValid(t)){s = t;cnt++;found = true;break;}}if(!found) break;}return cnt;
}int main(){int T;cin >> T;while(T--){string s;cin >> s;cout << maxDelete(s) << endl;}return 0;
}
// 64 位输出请用 printf("%lld")
7.小红的数字串

在这里插入图片描述

#include <iostream>              // 引入输入输出流头文件
#include <string>                // 引入字符串处理头文件
using namespace std;int main() {string s;                    // 存储输入的数字串long long k;                 // 存储输入的正整数kcin >> s >> k;               // 读取输入int n = s.size();            // 获取数字串长度long long ans = 0;           // 记录满足条件的子串数量int left = 0;                // 预留变量,实际未使用long long num = 0;           // 用于存储当前子串转换成的数字// 枚举每个子串的右端点for (int right = 0; right < n; ++right) {num = 0;                 // 每次外层循环重置num// 枚举以right为结尾的所有子串,长度最多为10(因为k最大为1e9,超过10位一定不小于k)for (int l = right; l >= 0 && right - l + 1 <= 10; --l) {num = stoll(s.substr(l, right - l + 1)); // 将子串转换为数字if (num < k) ans++;   // 如果小于k,计数加一else break;           // 如果不小于k,提前结束内层循环}}cout << ans << endl;          // 输出满足条件的子串数量return 0;                     // 程序结束
}
8.小红的0 1串

在这里插入图片描述

/*
每遇到一个"010"或"101"子串,只需修改其中任意一个字符即可消除该子串。
为避免重叠,每次修改后跳过这3个字符。
时间复杂度O(n)。
*/
#include <iostream>              // 引入输入输出流头文件
#include <string>                // 引入字符串处理头文件
using namespace std;// 功能:将01串变为不含"010"和"101"子串的“好串”,返回最小操作次数
int main() {string s;                    // 定义字符串s,存储输入的01串cin >> s;                    // 读取输入的01串int n = s.size();            // 获取字符串长度int ans = 0;                 // 记录最小操作次数// 遍历字符串,检查每个长度为3的子串for (int i = 0; i <= n - 3; ) {// 如果当前位置出现"010"或"101"子串if ((s[i] == '0' && s[i + 1] == '1' && s[i + 2] == '0') ||(s[i] == '1' && s[i + 1] == '0' && s[i + 2] == '1')) {ans++;      // 需要进行一次操作(取反其中任意一个字符即可消除该子串)i += 3;     // 跳过这3个字符,防止重叠子串被重复计数} else {i++;        // 如果不是"010"或"101",则继续检查下一个位置}}cout << ans << endl;         // 输出最小操作次数return 0;                    // 程序结束
}
9. 小红的爆炸串2

在这里插入图片描述

/**
代码解释1.​​初始化​​:读入字符串长度 n、阈值 k 和字符串 s。2.​​滑动窗口​​:​​右指针 j​​:遍历字符串的每个位置。​​更新相邻对数​​:若 s[j−1] 和 s[j] 不同,则 cur_sum 加 1。​​调整左指针​​:当 cur_sum >= k 时,向右移动左指针 i,并减少离开窗口的字符对的贡献。​3.​计数​​:对每个 j,满足条件的子串数量为 j−i+1,累加到答案 ans。​4.​输出结果​​:打印所有不会爆炸的子串总数。*/#include <iostream>              // 引入输入输出流头文件
#include <string>                // 引入字符串处理头文件
using namespace std;int main() {ios::sync_with_stdio(false); // 关闭C++和C的流同步,加快输入输出速度cin.tie(0);                  // 解除cin和cout的绑定,加快输入输出int n, k;                    // n为字符串长度,k为爆炸的最小相邻不同对数string s;                    // 存储输入字符串cin >> n >> k;               // 读取n和kcin >> s;                    // 读取字符串long long ans = 0;           // 记录不会爆炸的子串数量int i = 0;                   // 滑动窗口左端指针int cur_sum = 0;             // 当前窗口内相邻不同对数// 枚举右端点j,滑动窗口for (int j = 0; j < n; j++) {if (j >= 1) {            // 不是第一个字符时if (s[j-1] != s[j]) {cur_sum++;       // 如果当前字符和前一个字符不同,cur_sum加一}}// 如果窗口内不同对数达到k,移动左指针i缩小窗口while (i < j && cur_sum >= k) {if (s[i] != s[i+1]) {cur_sum--;       // 移动i时,如果i和i+1不同,cur_sum减一}i++;                 // 左指针右移}ans += (j - i + 1);      // 以j结尾的不爆炸子串数量累加到ans}cout << ans << endl;         // 输出不会爆炸的子串数量return 0;                    // 程序结束
}
10. 小红的拼图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <iostream>                  // 引入输入输出流头文件
#include <vector>                    // 引入vector容器头文件
using namespace std;int main() {int t;                           // t为测试用例组数cin >> t;while (t--) {                    // 处理每组测试用例int n, m;                    // n为行数,m为列数cin >> n >> m;vector<string> grid(n);      // 存储拼图网格for (int i = 0; i < n; i++) {cin >> grid[i];          // 读取每一行}bool found = false;          // 标记是否存在合法拼接方案// 枚举W形状的四条边(上右下左)是凸(1)还是凹(0)for (int t0 = 0; t0 <= 1; t0++) {for (int r0 = 0; r0 <= 1; r0++) {for (int b0 = 0; b0 <= 1; b0++) {for (int l0 = 0; l0 <= 1; l0++) {// edges[i][j][k]表示(i,j)格子第k条边(0上1右2下3左)是凸(1)还是凹(0)vector<vector<vector<int>>> edges(n, vector<vector<int>>(m, vector<int>(4, -1)));bool valid = true; // 标记当前枚举的边形态是否有效// 根据每个格子的旋转形态,确定其四条边的凸凹情况for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (grid[i][j] == '*') continue; // 空格子跳过char c = grid[i][j];if (c == 'W') {edges[i][j] = {t0, r0, b0, l0}; // W: 上右下左} else if (c == 'D') {edges[i][j] = {l0, t0, r0, b0}; // D: 旋转90度} else if (c == 'S') {edges[i][j] = {b0, l0, t0, r0}; // S: 旋转180度} else if (c == 'A') {edges[i][j] = {r0, b0, l0, t0}; // A: 旋转270度}}}// 检查所有相邻格子的边是否契合for (int i = 0; i < n && valid; i++) {for (int j = 0; j < m && valid; j++) {if (grid[i][j] == '*') continue; // 空格子跳过// 检查右邻格子if (j + 1 < m && grid[i][j + 1] != '*') {// 当前格右边和右邻格左边之和必须为1(一个凸一个凹)if (edges[i][j][1] + edges[i][j + 1][3] != 1) {valid = false;}}// 检查下邻格子if (i + 1 < n && grid[i + 1][j] != '*') {// 当前格下边和下邻格上边之和必须为1if (edges[i][j][2] + edges[i + 1][j][0] != 1) {valid = false;}}}}// 如果当前枚举的边形态有效,说明存在合法拼接方案if (valid) {found = true;goto next; // 跳出所有循环,进入输出}}}}}next:if (found) {cout << "Yes" << endl;   // 存在合法方案} else {cout << "No" << endl;    // 不存在合法方案}}return 0;
}
11.小红的奇偶抽取

在这里插入图片描述

/**
该程序将输入的正整数的每一位数字,按奇偶性分别拼接成两个新数,然后输出这两个数的差的绝对值。
例如输入302938,奇数拼接为393,偶数拼接为28,输出|393-28|=365。
*/
#include <iostream>              // 引入输入输出流头文件
#include <string>                // 引入字符串处理头文件
using namespace std;int main() {string s;                    // 定义字符串s,用于存储输入的数字cin >> s;                    // 读取输入的数字串long long odd_num = 0;       // 用于存储奇数位拼接成的数long long even_num = 0;      // 用于存储偶数位拼接成的数// 遍历输入字符串的每个字符for (char c : s) {int digit = c - '0';     // 将字符转换为对应的数字if (digit % 2 == 1) {    // 如果是奇数odd_num = odd_num * 10 + digit;   // 拼接到奇数数值后面} else {                 // 如果是偶数even_num = even_num * 10 + digit; // 拼接到偶数数值后面}}long long diff = odd_num - even_num; // 计算奇数数和偶数数的差if (diff < 0) {                      // 如果差为负数diff = -diff;                    // 取绝对值}cout << diff << endl;                // 输出最终结果return 0;                            // 程序结束
}

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

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

相关文章

基于springboot的大学公文收发管理系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业多年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;没有什么华丽的语言&#xff0…

【机器学习】反向传播如何求梯度(公式推导)

写在前面 前期学习深度学习的时候&#xff0c;很多概念都是一笔带过&#xff0c;只是觉得它在一定程度上解释得通就行&#xff0c;但是在强化学习的过程中突然意识到&#xff0c;反向传播求梯度其实并不是一件简单的事情&#xff0c;这篇博客的目的就是要讲清楚反向传播是如何对…

ALB、NLB、CLB 负载均衡深度剖析

ALB、NLB、CLB 负载均衡深度剖析 前言 笔者在上周的实际工作中遇到了一个典型的负载均衡选择问题&#xff1a;在使用代理调用相关模型时&#xff0c;最初配置 Nginx 的代理地址为 ALB 的 7 层虚拟 IP&#xff08;VIP&#xff09;&#xff0c;但由于集团网络默认的超时时间为 3 …

历史数据分析——云南白药

医药板块走势分析: 从月线级别来看 2008年11月到2021年2月,月线上走出了两个震荡中枢的月线级别2085-20349的上涨段; 2021年2月到2024年9月,月线上走出了20349-6702的下跌段; 目前月线级别放巨量,总体还在震荡区间内,后续还有震荡和上涨的概率。 从周线级别来看 从…

【读书笔记】《Effective Modern C++》第3章 Moving to Modern C++

《Effective Modern C》第3章 Moving to Modern C 一、区分圆括号 () 与大括号 {} &#xff08;Item 7&#xff09; C11 引入统一初始化&#xff08;brace‑initialization&#xff09;&#xff0c;即使用 {} 来初始化对象&#xff0c;与传统的 () 存在细微差别&#xff1a;避…

Rust基础-part1

Rust基础[part1]—安装和编译 安装 ➜ rust curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh安装成功 [外链图片转存中…(img-ClSHJ4Op-1752058241580)] 验证 ➜ rust rustc --version zsh: command not found: rustc因为我是用的是zsh&#xff0c;所以zsh配置…

PyQt5布局管理(QGridLayout(网格布局))

QGridLayout&#xff08;网格布局&#xff09; QGridLayout&#xff08;网格布局&#xff09;是将窗口分隔成行和列的网格来进行排列。通常可以使用函数addWidget()将被管理的控件&#xff08;Widget)添加到窗口中&#xff0c;或者使用addLayout() 函数将布局&#xff08;Layou…

Java设计模式之行为型模式(责任链模式)介绍与说明

一、核心概念与定义 责任链模式是一种行为型设计模式&#xff0c;其核心思想是将请求沿着处理对象链传递&#xff0c;直到某个对象能够处理该请求为止。通过这种方式&#xff0c;解耦了请求的发送者与接收者&#xff0c;使多个对象有机会处理同一请求。 关键特点&#xff1a; 动…

SQL server之版本的初认知

SQL server之版本的初认知 为什么要编写此篇文档呢&#xff0c;主要是因为在最近测试OGG实时同步SQL server数据库表数据的时候&#xff0c;经过多次测试&#xff0c;发现在安装了一套SQL server2017初始版本&#xff0c;未安装任何补丁的时候&#xff0c;在添加TRANDATA的时候…

【前端】jQuery动态加载CSS方法总结

在jQuery 中动态加载 CSS 文件有多种方法&#xff0c;以下是几种常用实现方式&#xff1a; 方法 1&#xff1a;创建 <link> 标签&#xff08;推荐&#xff09; // 动态加载外部 CSS 文件 function loadCSS(url) {$(<link>, {rel: stylesheet,type: text/css,href:…

Python爬虫实战:研究xlwings库相关技术

1. 引言 在金融科技快速发展的背景下,数据驱动决策已成为投资领域的核心竞争力。金融市场数据具有海量、多源、实时性强等特点,传统人工收集与分析方式难以满足高效决策需求。Python 凭借其丰富的开源库生态,成为金融数据分析的首选语言。结合 Requests、BeautifulSoup 等爬…

Linux 内核日志中常见错误

目录 **1. `Oops`****含义****典型日志****可能原因****处理建议****2. `panic`****含义****典型日志****可能原因****处理建议****3. `BUG`****含义****典型日志****可能原因****处理建议****4. `kernel NULL pointer`****含义****典型日志****可能原因****处理建议****5. `WA…

Linux驱动开发2:字符设备驱动

Linux驱动开发2&#xff1a;字符设备驱动 字符设备驱动开发流程 字符设备是 Linux 驱动中最基本的一类设备驱动&#xff0c;字符设备就是一个一个字节&#xff0c;按照字节流进行读写操作的设备&#xff0c;读写数据是分先后顺序的。比如最常见的点灯、按键、 IIC、 SPI&#x…

RuoYi-Cloud 验证码处理流程

以该处理流程去拓展其他功能模块处理流程&#xff0c;进而熟悉项目开发代码一、思路JavaWeb流程主干线&#xff1a;发起请求、处理请求、响应请求二、登录页面在登录页面按键F12打开开发者工具&#xff0c;点击network&#xff0c;刷新页面&#xff0c;点击code&#xff0c;查看…

云计算三大服务模式深度解析:IaaS、PaaS、SaaS

架构本质&#xff1a;云计算服务模式定义了资源抽象层级和责任分担边界&#xff0c;形成从基础设施到应用的全栈服务金字塔。三种模式共同构成云计算的服务交付模型核心框架。一、服务模式全景图 #mermaid-svg-f0Klw2fbuhBQqJTh {font-family:"trebuchet ms",verdana…

【sql学习之拉链表】

1.拉链表理解 记录历史。记录一个事物从开始&#xff0c;一直到当前状态的所有变化的信息。字段说明&#xff1a; start_dt&#xff1a;该条记录的生命周期开始时间 end_dt&#xff1a;该条记录的生命周期结束时间 end_dt’9999/12/31’表示该条记录目前处于有效状态 如果查询当…

STM32中实现shell控制台(shell窗口输入实现)

文章目录 一、总体结构二、串口接收机制三、命令输入与处理逻辑四、命令编辑与显示五、历史命令管理六、命令执行七、初始化与使用八、小结在嵌入式系统开发中,使用串口Shell控制台是一种非常常见且高效的调试方式。本文将基于STM32平台,分析一个简洁但功能完整的Shell控制台…

区分三种IO模型和select/poll/epoll

部分内容来源&#xff1a;JavaGuide select/poll/epoll 和 三种IO模型之间的关系是什么&#xff1f;区分普通IO和IO多路复用普通IO&#xff0c;即一个线程对应一个连接&#xff0c;因为每个线程只处理一个客户端 socket&#xff0c;目标明确&#xff1a;线程中直接操作该 socke…

Actor-Critic重要性采样原理

目录 AC的数据低效性&#xff1a; 根本原因&#xff1a;策略更新导致数据失效 应用场景&#xff1a; 1. 离策略值函数估计 2. 离策略策略优化 3. 经验回放&#xff08;Experience Replay&#xff09; 4. 策略梯度方法 具体场景分析 场景1&#xff1a;连续策略更新 场…

【赠书福利,回馈公号读者】《智慧城市与智能网联汽车,融合创新发展之路》

「5G行业应用」公号作家团队推出《智慧城市与智能网联汽车&#xff0c;融合创新发展之路》。本书由机械工业出版社出版&#xff0c;探讨如何通过车城融合和创新应用&#xff0c;促进汽车产业转型升级与生态集群发展&#xff0c;提升智慧城市精准治理与出行服务效能。&#xff0…