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年湘潭大学新生赛)的更多相关文章

  1. contesthunter CH Round #64 - MFOI杯水题欢乐赛day1 solve

    http://www.contesthunter.org/contest/CH Round %2364 - MFOI杯水题欢乐赛 day1/Solve Solve CH Round #64 - MFO ...

  2. 2015 Astar Contest - Round 3 题解

    1001 数长方形 题目大意 平面内有N条平行于坐标轴的线段,且不会在端点处相交 问共形成多少个矩形 算法思路 枚举4条线段的全部组合.分别作为矩形四条边.推断是否合法 时间复杂度: O(N4) 代码 ...

  3. Contest Round #451 (Div. 2)F/Problemset 898F Restoring the Expression

    题意: 有一个a+b=c的等式,去掉两个符号,把三个数连在一起得到一个数 给出这个数,要求还原等式,length <= 1e6 三个数不能含有前导0,保证有解 解法: 铁头过题法,分类然后各种判 ...

  4. 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 ...

  5. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)解题报告

    最近参加了很多CH上的比赛呢~Rating--了..题目各种跪烂.各种膜拜大神OTZZZ T1珠 描述 萌蛋有n颗珠子,每一颗珠子都写有一个数字.萌蛋把它们用线串成了环.我们称一个数字串是有趣的,当且 ...

  6. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  7. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  8. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  9. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  10. CH Round #49 - Streaming #4 (NOIP模拟赛Day2)

    A.二叉树的的根 题目:http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP 模 ...

随机推荐

  1. uniapp windows 上架 apple store

    香蕉云 蒲公英 ios上架助手iOS Development 开发!先用上架助手在certificates里面生成一个p12文件在profiles里面生成mobileprovision文件就欧克了 需 ...

  2. k8s使用rbd作为存储

    k8s使用rbd作为存储 如果需要使用rbd作为后端存储的话,需要先安装ceph-common 1. ceph集群创建rbd 需要提前在ceph集群上创建pool,然后创建image [root@ce ...

  3. C# 语言在AGI 赛道上能做什么

    自从2022年11月OpenAI正式对外发布ChatGPT依赖,AGI 这条赛道上就挤满了重量级的选手,各大头部公司纷纷下场布局.原本就在机器学习.深度学习领域占据No.1的Python语言更是继续稳 ...

  4. 将静态文件打包进nuget里 Net Core

    我之前写了一个.net core 生成验证码的小工具 需要使用者先单独下载字体文件到本地在 install-package 感觉这样很捞也很不方便,但当时忙着做其他需求现在更新下. 其实很简单 vis ...

  5. yolov1-yolov5 网络结构&正负样本筛选&损失计算

    学习yolo系列,最重要的,最核心的就是网络模型.正负样本匹配.损失函数等三个方面.本篇汇总了yolov1-yolov5等5个版本的相关知识点,主要看点是在yolo框架搭建.初学者可以通过相关篇章搭建 ...

  6. MYSQL中怎么查询LONGBLOB类型数据的大小

    在MySQL中,LONGBLOB 是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据.但是,LONGBLOB 数据类型本身并不直接存储数据的大小(长度).它存储的是二进制数据的实际内容. ...

  7. 【Playwright+Python】手把手带你写一个自动化测试脚本

    ​ 如何使用代理方式打开网页 在 playwright.chromium.launch() 中传入 proxy 参数即可,示例代码如下: 1.同步写法: 1 from playwright.sync_ ...

  8. Linux 提权-LXD 容器

    本文通过 Google 翻译 LXD Container – Linux Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充. 0 ...

  9. Fake权限验证小例子

    前言 关于本地测试如何进行Fake权限验证 正文 在我们使用swagger调试本地接口的时候,我们常常因为每次需要填写token而耽误工作,不可能每次调试的时候都去本地测试环境请求一个token进行验 ...

  10. QT 使用相对路径读取.txt文件

    QT可以使用QFile来读取.txt文件,具体代码实现如下: 1 #include <QCoreApplication> 2 #include <QString> 3 #inc ...