Codeforces1200 简要题解

这篇博客详细介绍了Codeforces 1200分组比赛中的六道题目解法,包括暴力模拟、贪心策略、数学技巧、二维差分与前缀和的应用、字符串哈希匹配以及构造问题的解决方法。每道题目都提供了关键思路和代码实现。
摘要由CSDN通过智能技术生成

文章目录


传送门
总结一下:
C C C题读入进来的时候没开 l o n g l o n g long long longlong导致 f s t fst fst.
F F F题最后 5 m i n 5min 5min才发现一个细节读错了最后凉凉.
还是挺遗憾的

A

暴力模拟即可。

#include<bits/stdc++.h>
#define ri register int
#define fi first
#define se second
using namespace std;
const int mod=1e9+7;
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<int> poly;
inline int add(int a,int b){
   return (a+=b)<mod?a:a-mod;}
inline int dec(int a,int b){
   return (a-=b)<0?a+mod:a;}
inline int mul(int a,int b){
   return (ll)a*b%mod;}
inline void Add(int&a,int b){
   (a+=b)<mod?a:a-=mod;}
inline void Dec(int&a,int b){
   (a-=b)<0?a+=mod:a;}
inline void Mul(int&a,int b){
   a=(ll)a*b%mod;}
inline int ksm(int a,int p){
   int ret=1;for(;p;p>>=1,Mul(a,a))if(p&1)Mul(ret,a);return ret;}
inline int read(){
   
	#define gc getchar
	int ans=0;
	bool f=1;
	char ch=gc();
	while(!isdigit(ch))ch=gc();
	while(isdigit(ch))ans=((ans<<2)+ans<<1)+(ch^48),ch=gc();
	return f?ans:-ans;
}
const int N=1e5+5;
int n;
char s[N];
bool vis[N];
int main(){
   
	n=read();
	scanf("%s",s+1);
	for(ri i=1;i<=n;++i){
   
		if(s[i]=='L'){
   
			for(ri j=0;j<10;++j){
   
				if(vis[j])continue;
				vis[j]=1;
				break;
			}
		}
		if(s[i]=='R'){
   
			for(ri j=9;~j;--j){
   
				if(vis[j])continue;
				vis[j]=1;
				break;
			}
		}
		if(isdigit(s[i]))vis[s[i]-'0']=0;
	}
	for(ri i=0;i<10;++i)cout<<vis[i];
	return 0;
}

B

每次贪心把能装的尽量装进包里。
代码:

#include<bits/stdc++.h>
#define ri register int
#define fi first
#define se second
using namespace std;
const int mod=1e9+7;
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<int> poly;
inline int add(int a,int b){
   return (a+=b)<mod?a:a-mod;}
inline int dec(int a,int b){
   return (a-=b)<0?a+mod:a;}
inline int mul(int a,int b){
   return (ll)a*b%mod;}
inline void Add(int&a,int b){
   (a+=b)<mod?a:a-=mod;}
inline void Dec(int&a,int b){
   (a-=b)<0?a+=mod:a;}
inline void Mul(int&a,int b){
   a=(ll)a*b%mod;}
inline int ksm(int a,int p){
   int ret=1;for(;p;p>>=1,Mul(a,a))if(p&1)Mul(ret,a);return ret;}
inline int read(){
   
	#define gc getchar
	int ans=0;
	bool f=1;
	char ch=gc();
	while(!isdigit(ch))ch=gc();
	while(isdigit(ch))ans=((ans<<2)+ans<<1)+(ch^48),ch=gc();
	return f?ans:-ans;
}
#define int long long
const int N=1e5+5;
int n,k,m,a[N];
signed main(){
   
	for(ri tt=read();tt;--tt){
   
		n=read(),m=read(),k=read();
		for(ri i=1;i<=n;++i)a[i]=read();
		bool f=1;
		for
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值