代码源挑战赛 Round 41
代码源挑战赛 Round 41
2025.12.12
A. [R41A]出题组3
\(Solution:\)
用取模模拟即可。
code
#include <bits/stdc++.h>
#define int long long
#define ll long long
#define ull unsigned long long
#define inf 1e12
#define eps 1e-9
#define endl "\n"
#define il inline
#define ls 2*k
#define rs 2*k+1
using namespace std;
const int N=2e5+5,M=3e6+5;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
return x*f;
}
int n,x,y,k;
signed main(){
n=read(),x=read(),y=read(),k=read();
for(int i=x+1;i<=k;i++) y=(y+1)%n;
cout<<(!y ? n : y);
return 0;
}
B. [R41B]购物
\(Solution:\)
贪心。将 \(a_i\) 升序排序,先选较小的 $ a_i $ 。
code
#include <bits/stdc++.h>
#define int long long
#define ll long long
#define ull unsigned long long
#define inf 1e12
#define eps 1e-9
#define endl "\n"
#define il inline
#define ls 2*k
#define rs 2*k+1
using namespace std;
const int N=2e5+5,M=3e6+5;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
return x*f;
}
int n,a[N],V,ans;
signed main(){
n=read(),V=read();
for(int i=1;i<=n;i++) a[i]=read();
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
V-=a[i];
if(V>=0) ans=max(ans,i);
else break;
}
cout<<ans;
return 0;
}
C. [R41C]文本编辑器
\(Solution:\)
维护一个栈来模拟打字过程即可。
code
#include <bits/stdc++.h>
#define int long long
#define ll long long
#define ull unsigned long long
#define inf 1e12
#define eps 1e-9
#define endl "\n"
#define il inline
#define ls 2*k
#define rs 2*k+1
using namespace std;
const int N=5e5+5,M=3e6+5;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
return x*f;
}
int n,flag=1,top;
char res[N],s[N];
signed main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++) cin>>s[i];
for(int i=1;i<=n;i++){
if(s[i]>='a' && s[i]<='z'){
if(flag==1) res[++top]=s[i];
else res[++top]=(s[i]-32);
}
else if(s[i]=='@') flag^=1;
else{
if(top) top--;
}
}
for(int i=1;i<=top;i++) cout<<res[i];
return 0;
}







浙公网安备 33010602011771号