发疯的CSP-J
2025-11-01 20:28:06
发布于:福建
题目出来了,作者把答案发出来(只能写T1+T2,T3+T4要写吐了)
T1:P14357 [CSP-J 2025] 拼数 / number(民间数据)
题意
给定一个包含小写字母和数字的字符串 ,要求从小写字母及数字的字符串 中选出任意多个数字 ,并按任意顺序将它们拼接成一个正整数。每个数字只能使用一次。求出所有能拼成的正整数中的最大值。
解析:以发现,最终数字的最高位越大,这个数就越大,因而只需挑出字符串中的所有数字,再按大小降序排序即可。
答案:
#include <bits/stdc++.h>
using namespace std;
string s , ans;
int main( ) {
//freopen("number.in", "r", stdin);
//freopen("number.out", "w", stdout);
cin >> s;
for (int i = 0; i < s.length(); i++) {// 选出 s 中的所有数字,加入答案字符串
if (s[i] >= '0' && s[i] <= '9')
ans += s[i];
}
sort(ans.begin() , ans.end()); // 升序排序
reverse(ans.begin() , ans.end());// 反转整个字符串(降序)
cout << ans << endl;
//fclose(stdin);
//fclose(stdout);
return 0;
}
T2:P14358 [CSP-J 2025] 座位 / seat(民间数据)
题意:
考场共有 行 列座位,共有 共 名考生。考生按照成绩由高到低,以“蛇形”顺序分配座位。蛇形分配的规则是:先从第1列第1行向下到第 行,然后转向第2列第 行向上到第1行,再转向第3列第1行向下到第 行,以此类推。给定考场的行数 、列数 和所有考生的成绩 , ,…… , (其中a_{1}是小R的成绩),要求确定小R的座位所在的列数 和行数
解析:
根据其他同学的成绩,可以很轻松的求出小 R 的排名(统计有多少人分数不小于他即可)。假设小 R 排名为 x,则他将位于第 列,第 , 当行数为奇数时,恰位于 行,否则将位于第 行。分类讨论得出答案。
答案
#include <bits/stdc++.h>
using namespace std;
long long n , m , x;
int main( ) {
cin >> n >> m >> x;
long long pos = 1; // 小 R 排名
for (int i = 2 ; i <= n * m ; i++) {// 计算小 R 排名
long long y;
scanf("%lld", &y);
if (y > x)
pos++;
}
long long l = (pos - 1) / n + 1; // 求列号
long long h = (pos - 1) % n + 1; // 求行号
if (l % 2 == 0) {
h = n - h + 1;
}
cout << l << " " << h;
return 0;
}
这里空空如也







有帮助,赞一个