【洛谷训练记录】【LGR-213-Div.4】洛谷入门赛 #31

news/2025/1/17 21:34:44/文章来源:https://www.cnblogs.com/longxingx/p/18677695

训练情况

赛后反思

模拟题差点红温,差一道字符串模拟题AK

A题

问一个数 \(a\) 加多少后的个位数变成 \(b\),取出 \(a\) 的个位数,再用 \(b\) 去减,如果小于零答案再加十。

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){int a,b; cin>>a>>b;int ans = b-a%10;if(ans<0) ans += 10;cout<<ans<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

B题

巨大无比分类讨论,分为奇偶性不同和同奇和同偶三种情况,奇偶性不同计算离零的距离再+1就是答案,相同计算两数距离,再特判一下一端为零。

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){int a,b; cin>>a>>b;if(a==0){cout<<(b-1)/2<<endl;return;} else if(b == 0){cout<<(a-1)/2<<endl;return;}if(a%2==b%2){cout<<abs(b-a)/2-1<<endl;} else if(a&1){cout<<(b-1)/2+1+a/2<<endl;} else if(b&1){cout<<(a-1)/2+1+b/2<<endl;}
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

C题

直接模拟 \(x^2 \mod 10000\),进行 \(k-1\) 次就是答案,直接输出

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){int x,c,k;cin>>x>>c>>k;for(int i = 1;i<k;i++){x = (x*x+c)%10000;}cout<<x<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

D题

遍历数列,找到 \(\le 15\) 的元素先插入新数列,之后全部处理完再插入 \(> 15\) 的元素

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){int n; cin>>n;vector<int> a(n + 1);for(int i = 1;i<=n;i++) cin>>a[i];vector<int> b;for(int i = 1;i<=n;i++){if(a[i] <= 15) b.push_back(a[i]);}for(int i = 1;i<=n;i++){if(a[i] > 15) b.push_back(a[i]);}for(int i = 0;i<b.size();i++){cout<<b[i]<<" ";}
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

E题

巨大无比的模拟题,计算循环的起始和终止条件比较麻烦,我们先处理横杠部分,再处理箭头的上半部分,下半部分直接对称过来即可。

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){int n,m,k; cin>>n>>m>>k;char s[n+3][m+3];for(int i = 1;i<=n;i++) for(int j = 1;j<=m;j++) s[i][j] = 0;for(int i = (n+1)/2-(k-1)/2;i<=(n+1)/2+(k-1)/2;i++){for(int j = 1;j<=m-(n+1)/2;j++){s[i][j] = '#';}}for(int i = 1;i<=(n+1)/2;i++){for(int j = m-(n+1)/2+1;j<=m;j++){if(i>=(j-m+(n+1)/2)) s[i][j] = '#';}}for(int i = (n+1)/2;i<=n;i++){for(int j = m-(n+1)/2+1;j<=m;j++){s[i][j] = s[i-(i-(n+1)/2)*2][j];}}for(int i = 1;i<=n;i++){for(int j = 1;j<=m;j++){if(s[i][j]=='#') cout<<s[i][j];else cout<<".";}cout<<endl;}
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

F题

先求列的和,再取最大值,从右往左找到第一个最大值的列,再取这个列的行取最大值并计数即可

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){int n,m; cin>>n>>m;vector<vector<int>> a(n + 1,vector<int>(m + 1));vector<int> sum(m + 1);int masum = 0;for(int i = 1;i<=n;i++){for(int j = 1;j<=m;j++){cin>>a[i][j];sum[j] += a[i][j];masum = max(masum,sum[j]);}}int pos = m;for(int i = m;i;i--){if(sum[i] == masum){pos = i;break;}}int maa = 0;for(int i = 1;i<=n;i++){maa = max(maa,a[i][pos]);}int ans = 0;for(int i = 1;i<=n;i++){if(a[i][pos]==maa) ans++;}cout<<maa<<" "<<ans<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

G题

不知道为什么错了最后三个点,我们先对节拍进行计数,维护一个flag表示是否在括号内,遇到左括号计数器+1并改变flag,右括号改变flag,如果不在括号内并且不是 ' 计数器加一,接下来我们计算连续的 L,R,L',R' 我们先判断较长的两个 L',R' 使用四个变量表示当前的连续次数,答案取连续最大值即可

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){string s; int opt; cin>>s>>opt;int n = s.size();int ans = 0,a=0,b=0,c=0,d=0;bool flag = false;int aa=0,bb=0,cc=0,dd=0;for(int i = 0;i<n;i++){if(s[i] == '(') ans++,flag=true;else if(s[i] == ')') flag=false;else if(!flag){if(s[i]!='\'') ans++;}if(i!=n-1&&s.substr(i,2) == "L\'"){bb++; if(!flag) aa=0,cc=0,dd=0;}else if(i!=n-1&&s.substr(i,2)=="R\'"){dd++; if(!flag) aa=0,bb=0,cc=0;}else if(s[i] == 'L'){aa++; if(!flag) bb=0,cc=0,dd=0;}else if(s[i] == 'R'){cc++; if(!flag) aa=0,bb=0,dd=0;    }a = max(aa,a);b = max(bb,b);c = max(cc,c);d = max(dd,d);}cout<<ans<<endl;if(opt) cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

H题

直接模拟维护这个数列的变换操作,先求列的最大值和最小值,之后再全部遍历列,遇到相同的这个列的所有元素取出来之后,置零。最后对取出来的数进行排序,再按照题目要求,第奇数行从左往右,第偶数行从右往左,遇到零的位置放回去,进行 \(k\) 次即可

#include <bits/stdc++.h>
#define int long long
#define endl '\n'using namespace std;const int N = 53;int n,m,k;
int a[N][N];void op(){int ma = 0;int mi = LONG_LONG_MAX;int sumc[N]; for(int i = 1;i<=m;i++) sumc[i] = 0;for(int i = 1;i<=n;i++){for(int j = 1;j<=m;j++){sumc[j]+=a[i][j];}}for(int i = 1;i<=m;i++){ma = max(ma,sumc[i]);mi = min(mi,sumc[i]);}vector<int> p;for(int i = 1;i<=m;i++){if(sumc[i] == ma || sumc[i] == mi){for(int j = 1;j<=n;j++) p.push_back(a[j][i]),a[j][i] = 0;}}sort(p.begin(),p.end(),greater<int>());// for(int i = 0;i<p.size();i++) cout<<p[i]<<" ";// cout<<endl;// for(int i = 1;i<=n;i++){//     for(int j = 1;j<=m;j++){//         cout<<a[i][j]<<" ";//     }//     cout<<endl;// }int tot = -1;for(int i = 1;i<=n;i++){if(i&1){for(int j = 1;j<=m;j++){if(!a[i][j]) a[i][j] = p[++tot];}} else {for(int j = m;j;j--){if(!a[i][j]) a[i][j] = p[++tot];}}}
}void solve(){cin>>n>>m>>k;for(int i = 1;i<=n;i++){for(int j = 1;j<=m;j++){cin>>a[i][j];}}for(int i = 1;i<=k;i++) op();for(int i = 1;i<=n;i++){for(int j = 1;j<=m;j++){cout<<a[i][j]<<" ";}cout<<endl;}
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}

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

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

相关文章

WSL2配置代理

1、关闭梯子 2、设置为mirrored模式该设置会生成 C:/Users//.wslconfig【可选】修改.wslconfig文件内容如下 [experimental] autoMemoryReclaim=gradual networkingMode=mirrored dnsTunneling=true firewall=true autoProxy=true3、打开cmd并执行wsl --shutdown 4、重新启动…

【MySQL架构】图解

你是一个程序员,你做了一个网站应用,站点里的用户数据,需要存到某个地方,方便随时读写。 很容易想到可以将数据存到文件里。 但如果数据量很大,想从大量文件数据中查找某部分数据,并更新,是一件很痛苦的事情。 那么问题就来了,有办法可以解决这个问题吗? 好办,没有什…

2025 郑州一测 T18: 双变量问题探讨

2025 高考加把劲 /qtContent已知函数 \(f(x) = \log_a x(a>0, a\neq 1)\), \(y = f(x)\) 关于 \(y=x\) 对称的函数记为 \(g(x)\). (I) 若 \(a>1\), 方程 \(f(x)-g(x)=0\) 有且仅有一个实数解, 求 \(a\) 的值. (II) 讨论方程 \(g(x) = x_a = 0\) 在 \((0, +\infty)\) 上实…

笑死

哈哈哈哈哈笑死这个中国银行的标志出现的恰到好处,我还以为是什么标识

C#数据结构与算法入门实战指南

前言 在编程领域,数据结构与算法是构建高效、可靠和可扩展软件系统的基石。它们对于提升程序性能、优化资源利用以及解决复杂问题具有至关重要的作用。今天大姚分享一些非常不错的C#数据结构与算法实战教程,希望可以帮助到有需要的小伙伴。 C#经典十大排序算法 主要讲解C#经典…

29. 数据库操作

一、SQL与数据库数据库 (database)是统一管理的、有组织的、可共享的大量数据的集合。数据库将数据存储在一个或多个表格中,管理这个数据库的软件称为 数据库管理系统(database management system, DBMS)。数据库不是针对具体的应用程序,而是立足于数据本身的管理,它将所…

用Mermaid画图

1、用Mermaid画图 mermaid.md TyporaPortable.rar mermaid.zip 目录1 Mermaid是什么1.1 概述1.2 网址官网地址:Github地址:图形图形几种图形名字节点与无名字节点设置样式:style, classDef, class, :::线条图形连线(--)及注释(%%)线条样式实线与虚线箭头实线与粗实线及箭头延…

【RabbitMQ】图解

你是一个程序员,假设你维护了两个服务 A 和 B。 A 服务负责转发用户请求到 B 服务,B 服务是个算法服务,GPU 资源有限,当请求量大到 B 服务处理不过来的时候,希望能优先处理会员用户的请求。 那么问题就来了,如果普通用户和会员用户同时发起请求,怎样才能做到会员优先呢?…

THREE.js学习笔记8——Textures

这个小节主要学习纹理,Texture 纹理是覆盖几何形状表面的图像,不同类型的纹理具有多种不同的效果。 这些纹理(尤其是金属性和粗糙度)遵循PBR原则基于物理的渲染 许多技术往往遵循现实生活中的方向以获得现实的结果 成为现实渲染的标准 许多软件、引擎和库都在使用它如何加载…

快速傅里叶变换总结

基本概念 对于求和式 \(\sum a_ix^i\),如果是有限项相加,称为多项式,记作 \[f(x)=\sum_{i=0}^n a_ix^i。 \]其中最高次项的次数为 \(n\),为 \(n\) 次多项式。 用 \(n+1\) 个点可以唯一地确定一个 \(n\) 次多项式,这一过程可以参考 拉格朗日插值。 引入 给定多项式 \(f(x),…

寒假学习1

老年人评估系统 初步整理web端思路先写了第一张信息表并搭建基本框架并编写了老年人信息添加功能

1.17安卓测试

今天在idea进行安卓虚拟机测试成功,昨天的错误是因为版本不兼容 启动虚拟机运行测试