代码源挑战赛 Round 41

代码源挑战赛 Round 41

2025.12.12

A. [R41A]出题组3

link
image
image

\(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]购物

link
image
image

\(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]文本编辑器

link
image
image

\(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;
}

posted @ 2025-12-12 22:47  Lmx__qwq  阅读(3)  评论(0)    收藏  举报