「模拟赛」暑期集训CSP提高模拟5(7.22)
1.「模拟赛」高一下三调5.13(附关于二分图匈牙利建边的详细思考)2.模拟赛3.「模拟赛」CSP提高组模拟1(7.14)
4.「模拟赛」暑期集训CSP提高模拟5(7.22)
5.「模拟赛」暑期集训CSP提高模拟4(7.21)6.「模拟赛」暑期集训CSP提高模拟3(7.20)7.「模拟赛」暑期集训CSP提高模拟2(7.19)8.CSP 集训(9.23-9.26)9.「模拟赛」暑期集训CSP提高模拟17(8.10)10.「模拟赛」暑期集训CSP提高模拟15(8.7)11.「模拟赛」暑期集训CSP提高模拟14(8.6)12.「模拟赛」暑期集训CSP提高模拟11(7.29)13.「模拟赛」暑期集训CSP提高模拟10(7.28)14.joke 学长出题比赛记录15.「模拟赛」暑期集训CSP提高模拟6(7.23)16.CSP 联训 217.CSP 联训 318.「模拟赛」多校 A 层联训 8(更新 T3)19.「模拟赛」CSP-S 模拟 11(T2 超详细)20.「模拟赛」多校 A 层联训 521.「模拟赛」多校 A 层联训 4(卖品:CTH)22.【小 w 的代数】(打什么 n^3,提供一种 n log 的解法)23.「模拟赛」多校 A 层联训 9题目列表:
简单的序列
题意:
gtm1514 不喜欢序列。但是一天他拿到了一个序列。
这个序列非常杂乱,于是 gtm1514 想要整理一下这个序列。但是由于他非常的菜,他只会进行一个操作:选择一个
gtm1514 又菜又爱摆,他想让你找到使得数列严格递增的最小操作次数。如果无解,输出 −1。
对于 100% 的数据,
正解:
直接暴力即可,实际复杂度
将
code:
#include<bits/stdc++.h>
using namespace std;
const int N = 50;
int T, n, a[N];
int work(int &now, int ne){
int cnt = 0;
while(now >= ne){now /= 2, cnt++;}
return cnt;
}
int main(){
// freopen("in.in", "r", stdin); freopen("out.out", "w", stdout);
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
for(int i=1; i<=n; i++){
scanf("%d", &a[i]);
}
int ans = 0;
for(int i=n-1; i>=1; i--){
ans += work(a[i], a[i+1]);
if(i != 1 and a[i] == 0){
ans = -1;
break;
}
}
printf("%d\n", ans);
}
return 0;
}
简单的字符串
题意:
现在有一个字符串,但是它长得还是十分甚至九分混乱邪恶。gtm1514 想要整理一下这个字符串。
他发明了一个神奇的操作:一次操作使得字符串缩短一位,新字符串的第 i 位可以与原串的第 i 或 i+1 位相同。
他想知道最少经过多少次操作可以使整个字符串全相同,即只有一种字母。
赛时分析:
一眼有点感觉,可做。于是想想想,假假假。手模了半个小时之后不知道怎么着就想到正解了,突然就跳出来了。结果打完很开心地以为能
正解:
每个英文字母的扩展的次数其实是它到与自己相同的字母的上一个位置的距离。
求出原每个位置上的前驱,然后枚举 26 个英文字母的所有位置,对于每一种英文字母,满足条件所需即为所有位置到前驱距离以及最后一个位置到原序列最后一个字母的距离的最大值,答案就是 26 个字母的所需的最小值。
code:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
int n;
char s[N];
// map<char, int>la;
int cnt[130][N], la[200];
int work(char c){
int num = n - la[c];
for(int i=1; i<=cnt[c][0]; i++){
num = max(num, cnt[c][i] - cnt[c][i-1] - 1);
}
return num;
}
int main(){
// freopen("in.in", "r", stdin); freopen("out.out", "w", stdout);
cin>>(s+1);
n = strlen(s+1);
for(int i=1; i<=n; i++){
// pre[i] = la[s[i]];
la[s[i]] = i;
cnt[s[i]][++cnt[s[i]][0]] = i;
}
int ans = N;
for(char c='a'; c<='z'; c++){
if(!cnt[c][0]) continue;
ans = min(ans, work(c));
}
printf("%d", ans);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】