SMU Spring 2023 Contest Round 3(2023年湘潭大学新生赛)
Problem A. 签到啦
从大到小排序,累加大于行李w时输出下标即可

int ans;
void solve()
{
cin >> n >> m;
int ans = 0;
vector<int> a(n);
for(int i = 0;i < n;i ++){
cin >> a[i];
}
sort(a.begin(), a.end());
reverse(a.begin(),a.end());
for(int i = 0;i < n; i++ ){
ans += a[i];
if(ans >= m){
cout << i + 1 << endl;
return;
}
}
}
Problem B. 熙巨打票
冷却时间小于操作时间时,实际上就等于操作时间乘以票数,大于操作时间时,假设操作时间4分钟,冷却时间10分钟,在两台上操作完后还需要等6分钟才能进行操作,6分钟后加上第一台操作完毕的时间刚好10分钟这时第二台又可以操作了,如此往复,票数是奇数时除以2就是要等待的次数,偶数时需减一次,因为最后一次出完后不需要再等待了.

void solve() {
int a,b,n;
cin >> a >> b >> n;
if(a <= b){
cout << b * n << endl;
return ;
}
else{
if(n & 1){
cout << b * n + (n>>1) * (a - b) << endl;
}
else{
cout << b * n + ((n >> 1) - 1) * (a - b) << endl;
}
}
}
Problem C. 三元分配
按题意我们可以先分成四种情况,即(以下奇数简称奇,偶数简称偶)奇奇奇,奇奇偶,奇偶偶,偶偶偶,其中奇奇奇和奇偶偶一定是不能配对的,偶偶偶是一定可以配对,所以我们要对奇奇偶这种情况再讨论,因为两个部门要凑成质数才可以进行配对,而两个奇数加起来是质数只能是两个1,且两个1加一个偶数是一定可以配对的,另外再讨论两个奇数与偶数配对成质数的情况即可,当偶数是0时,这时就变成了两个奇数配对了,此时要特判一下


bool f(int x){
if(x < 2)
return false;
if(x == 2)
return true;
for(int i = 2;i <= sqrt(x);i ++)
if(x % i == 0)
return false;
return true;
}
void solve()
{
cin >> n >> m >> k;
if((n + m + k) & 1){
cout << 'P' << endl;
return ;
}
if(n % 2 == 0 && m % 2 == 0 && k % 2 == 0){
cout << 'R' << endl;
return ;
}
if(n == 1 && m == 1 || n == 1 && k == 1 || m == 1 && k == 1){
cout << 'R' << endl;
return ;
}
if(f(n + m) && f(n + k) &&n != 0 || f(m + n) && f(m + k) && m != 0 || f(k + n) && f(k + m) && k != 0){
cout << 'R' << endl;
return ;
}
cout << 'P' << endl;
return ;
}
Problem D. "逆"天求和
哎,还特意查了一下逆元的公式啥的,最后发现这道题要做的话感觉又和逆元没啥关系
感兴趣的可以自己推到一下,就是说当p为质数时,其1到p-1的逆元都在1到p-1中且互不重复
所以我们直接1到p-1累加即可

void solve()
{
cin >> n;
int sum = 0;
for(int i = 1;i < n;i ++){
sum += i;
}
cout << sum << endl;
}
Problem E. 读中国数字
纯模拟,不想多说(


#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 1e5 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/*
*/
int ans;
void solve()
{
string num;
cin >> num;
if(num == "0"){
cout << num << endl;
return ;
}
string chinese = "";
string unit[] = {"", "T", "B", "K", "W", "Y"};
string digit[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
int len = num.length();
int i = 0;
while (i < len) {
int j = len - i - 1;
int k = j % 4;
bool fw = false,fy = false;
if (num[i] == '0') {
int zeroCount = 0;
bool f = false;
while (i < len && num[i] == '0') {
i++;
if((len - i) == 8 && !fy){
chinese += "Y";
f = true;
fy = true;
}
if((len - i) == 4 && !f && !fw && chinese.back() != 'Y'){
chinese += "W";
f = true;
fw = true;
}
zeroCount++;
}
if (j == 4 && !f && !fw) {
chinese += "W";
} else if (j == 8 && !f && !fy) {
chinese += "Y";
}
if(zeroCount >= 1 && i != len && (len - i) != 4 && (len - i) != 8)
chinese += '0';
} else {
chinese += digit[num[i] - '0'] + unit[k];
if (j == 4 && !fw) {
chinese += "W";
fw = true;
} else if (j == 8 && !fy) {
chinese += "Y";
fy = true;
}
i++;
}
}
cout << chinese << endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int Ke_scholar = 1;
cin >> Ke_scholar ;
while(Ke_scholar--)
solve();
return 0;
}
Problem H. 我爱XTU
可以每次计算x,t,u的数量,用pair对其中两个的差进行一个存储,如果这个pair前面出现过,说明从前面到现在有加了x,t,u数量相同的子串,需要注意的当x,t,u数量相等的时候需要加一次,或者在最开始就往pair对里放一组{0,0}.


#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 1e5 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/*
*/
int ans;
void solve()
{
string s;
cin >> s;
ans = 0;
int x = 0, t = 0, u = 0;
map<PII, int> mp;
for(int i = 0;i < s.size();i ++){
if(s[i] == 'X')
x ++;
else if(s[i] == 'T')
t ++;
else
u ++;
int divx = x - t;
int divu = u - t;
if(x == t && t == u)
ans ++;
if(mp.count({divx,divu})){
ans += mp[{divx, divu}];
// cout << x << ' ' << t << ' ' << u << endl;
}
mp[{divx,divu}]++;
}
cout << ans << endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int Ke_scholar = 1;
cin >> Ke_scholar ;
while(Ke_scholar--)
solve();
return 0;
}
SMU Spring 2023 Contest Round 3(2023年湘潭大学新生赛)的更多相关文章
- contesthunter CH Round #64 - MFOI杯水题欢乐赛day1 solve
http://www.contesthunter.org/contest/CH Round %2364 - MFOI杯水题欢乐赛 day1/Solve Solve CH Round #64 - MFO ...
- 2015 Astar Contest - Round 3 题解
1001 数长方形 题目大意 平面内有N条平行于坐标轴的线段,且不会在端点处相交 问共形成多少个矩形 算法思路 枚举4条线段的全部组合.分别作为矩形四条边.推断是否合法 时间复杂度: O(N4) 代码 ...
- Contest Round #451 (Div. 2)F/Problemset 898F Restoring the Expression
题意: 有一个a+b=c的等式,去掉两个符号,把三个数连在一起得到一个数 给出这个数,要求还原等式,length <= 1e6 三个数不能含有前导0,保证有解 解法: 铁头过题法,分类然后各种判 ...
- CH Round #55 - Streaming #6 (NOIP模拟赛day2)解题报告
T1九九归一 描述 萌蛋在练习模n意义下的乘法时发现,总有一些数,在自乘若干次以后,会变成1.例如n=7,那么5×5 mod 7=4,4×5 mod 7=6,6×5 mod 7=2,2×5 mod 7 ...
- CH Round #54 - Streaming #5 (NOIP模拟赛Day1)解题报告
最近参加了很多CH上的比赛呢~Rating--了..题目各种跪烂.各种膜拜大神OTZZZ T1珠 描述 萌蛋有n颗珠子,每一颗珠子都写有一个数字.萌蛋把它们用线串成了环.我们称一个数字串是有趣的,当且 ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #49 - Streaming #4 (NOIP模拟赛Day2)
A.二叉树的的根 题目:http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP 模 ...
随机推荐
- Scrcpy - 开源免费在电脑显示手机画面并控制手机的工具 (投屏/录屏/免Root)
教程:https://www.iplaysoft.com/scrcpy.html 官方地址:https://github.com/Genymobile/scrcpy
- Win11在VMWare中无tpm条件下安装
Win11在VMWare中无tpm条件下安装 在条件不满足提示的窗口下. 按shift+F10打开cmd, 输入regedit打开注册表, 按如下路径新建三个值后即可 [HKEY_LOCAL_MACH ...
- .NET 个人博客-给图片添加水印
个人博客-给图片添加水印 前言 需要用到的库 SixLabors.lmageSharp 2.1.3 SixLabors.lmageSharp.Web 2.0.2 SixLabors.Fonts 1.0 ...
- C语言:if(0)之后的语句真的不会执行吗?
C语言--if(0)之后的语句真的不会执行吗? 原文(有删改):https://www.cnblogs.com/CodeWorkerLiMing/p/14726960.html 前言 学过c语言的都知 ...
- uniapp+thinkphp5实现微信扫码支付(APP支付)
前言 统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口.下面介绍的是其中APP的支付的配置与实现流程 配置 1.首先登录 ...
- 瑞芯微RK3568J如何“调节主频”,实现功耗降低?一文教会您!
RK3568J主频模式说明 为降低RK3568J功耗,提高运行系统健壮性,在产品现场对RK3568J实现主频调节则显得尤为重要. 图 1 RK3568J官方数据手册主频模式描述 normal模式 根据 ...
- gdb 根据c语言二进制文件进程号查看内部多线程任务
C语言二进制文件 a 编译时添加了 -g (gdb 调试), 但是 gdb a 这种方式有时不容易复现一些场景.这时可以先正常启动 a, 然后根据 a 的进程号启动gdb调试. # 1. 找到程序进程 ...
- java 提取证书指纹
正文 用到的依赖 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov ...
- var、let、const 区别?
var 存在变量提升.let 只能在块级作用域内访问.const 用来定义常量,必须初始化,不能修改(对象特殊) 1.var[声明变量] var 没有块的概念,可以跨块访问,无法跨函数访问: 2.le ...
- redis基本数据结构-字符串
reids字符串数据结构相关命令 序号 命令 命令实例 意义 1 set key value set bar 1 设置key为bar的值为"1" 2 incr k ...