UNIQUE VISION Programming Contest 2024 Spring(AtCoder Beginner Contest 346)

A - Adjacent Product

#include<bits/stdc++.h> 
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])  
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int> 
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
						For(j,m-1) cout<<a[i][j]<<' ';\
						cout<<a[i][m]<<endl; \
						} 
#pragma comment(linker, "/STACK:102400000,102400000")
#define ALL(x) (x).begin(),(x).end()
#define gmax(a,b) a=max(a,b);
#define gmin(a,b) a=min(a,b);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
	int x=0,f=1; char ch=getchar();
	while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
	while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
	return x*f;
} 
int main()
{
//	freopen("A.in","r",stdin);
//	freopen(".out","w",stdout);
	
	int n=read(),p=read();
	For(i,n-1) {
		int q=read();
		cout<<p*q<<' ';
		p=q;
	}
	
	return 0;
}


B - Piano

#include<bits/stdc++.h> 
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])  
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int> 
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
						For(j,m-1) cout<<a[i][j]<<' ';\
						cout<<a[i][m]<<endl; \
						} 
#pragma comment(linker, "/STACK:102400000,102400000")
#define ALL(x) (x).begin(),(x).end()
#define gmax(a,b) a=max(a,b);
#define gmin(a,b) a=min(a,b);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
	int x=0,f=1; char ch=getchar();
	while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
	while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
	return x*f;
} 
string s="wbwbwwbwbwbw";
bool f[400][300]={};
int main()
{
//	freopen("B.in","r",stdin);
//	freopen(".out","w",stdout);
	For(i,8) s=s+s;
//	cout<<s.length();
	Rep(i,1200){
		int w=0,b=0;
		Fork(j,i,i+200) {
			w+=s[j]=='w';
			b+=s[j]!='w';
			f[w][b]=1;
		}
	}
	int w,b;
	cin>>w>>b;
	cout<<(f[w][b]?"Yes":"No");
	return 0;
}

C - Σ

#include<bits/stdc++.h> 
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])  
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int> 
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
						For(j,m-1) cout<<a[i][j]<<' ';\
						cout<<a[i][m]<<endl; \
						} 
#pragma comment(linker, "/STACK:102400000,102400000")
#define ALL(x) (x).begin(),(x).end()
#define gmax(a,b) a=max(a,b);
#define gmin(a,b) a=min(a,b);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
	int x=0,f=1; char ch=getchar();
	while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
	while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
	return x*f;
} 
int main()
{
//	freopen("C.in","r",stdin);
//	freopen(".out","w",stdout);
	map<int,int> h;
	ll n,k;
	cin>>n>>k;
	ll s=(1+k)*k/2;
	For(i,n) {
		int p=read();
		if(1<=p &&p<=k) {
			if(h.count(p)) continue;
			h[p]=1;
			s-=p;

		}
	}
	cout<<s;
	
	return 0;
}


D - Gomamayo Sequence

#include<bits/stdc++.h> 
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])  
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int> 
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
						For(j,m-1) cout<<a[i][j]<<' ';\
						cout<<a[i][m]<<endl; \
						} 
#pragma comment(linker, "/STACK:102400000,102400000")
#define ALL(x) (x).begin(),(x).end()
#define gmax(a,b) a=max(a,b);
#define gmin(a,b) a=min(a,b);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
	int x=0,f=1; char ch=getchar();
	while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
	while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
	return x*f;
} 
ll f[200000+10][2][2]={};
ll c[200000+10];
int main()
{
//	freopen("D.in","r",stdin);
//	freopen(".out","w",stdout);
	
	int n=read();
	string s;cin>>s;
	Rep(i,n) c[i]=read();
	Rep(i,n+1) Rep(j,2) f[i][j][1]=1e18;
	if(s[0]=='0') f[0][1][0]=c[0];else f[0][0][0]=c[0];
	For(i,n-1) {
		Rep(j,2) {
			f[i][j][0]=f[i-1][j^1][0]+((s[i]-'0'==j)?0:c[i]);
			f[i][j][1]=f[i-1][j][0]+((s[i]-'0'==j)?0:c[i]);
			gmin(f[i][j][1],f[i-1][j^1][1]+((s[i]-'0'==j)?0:c[i]));
		}
	}
	cout<<min(f[n-1][0][1],f[n-1][1][1]);
	return 0;
}


E Paint

#include<bits/stdc++.h> 
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])  
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int> 
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
						For(j,m-1) cout<<a[i][j]<<' ';\
						cout<<a[i][m]<<endl; \
						} 
#pragma comment(linker, "/STACK:102400000,102400000")
#define ALL(x) (x).begin(),(x).end()
#define gmax(a,b) a=max(a,b);
#define gmin(a,b) a=min(a,b);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
	int x=0,f=1; char ch=getchar();
	while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
	while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
	return x*f;
} 
map<ll,ll> hh,hw,hx;
#define MAXN (200000+10)
ll p1[MAXN],p2[MAXN],p3[MAXN];
	
int main()
{
//	freopen("E.in","r",stdin);
//	freopen(".out","w",stdout);
	ll h=read(),w=read(),m=read();
	
	For(i,m) {
		p1[i]=read(),p2[i]=read(),p3[i]=read();
	}
	ForD(i,m) {
		int t=p1[i],a=p2[i],x=p3[i];
		if(t==1) {
			if(hh.count(a)) continue;
			hh[a]=1;
			hx[x]+=w;
			--h;
		}
		if(t==2) {
			if(hw.count(a)) continue;
			hw[a]=1;
			hx[x]+=h;
			--w;
		}
	}
	hx[0]+=h*w;
	int s=0;
	for(auto it=hx.begin();it!=hx.end();++it){
		if(it->se) ++s;
//		cout<<(it->fi)<<' '<<(it->se)<<endl;
	}
	cout<<s<<endl;
	for(auto it=hx.begin();it!=hx.end();++it){
		if(it->se) 	cout<<(it->fi)<<' '<<(it->se)<<endl;
	}
	
	return 0;
}


F SSttrriinngg in StringString

#include<bits/stdc++.h> 
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])  
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int> 
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
						For(j,m-1) cout<<a[i][j]<<' ';\
						cout<<a[i][m]<<endl; \
						} 
#pragma comment(linker, "/STACK:102400000,102400000")
#define ALL(x) (x).begin(),(x).end()
#define gmax(a,b) a=max(a,b);
#define gmin(a,b) a=min(a,b);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
	int x=0,f=1; char ch=getchar();
	while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
	while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
	return x*f;
} 
ll n;
string s,t;
ll slen;
ll ct[10000]={};
int f[100000+10][26]={};
ll get(int a,int b,int c) {
	c-='a';
	ll ans=f[b][c];
	if(a) ans-=f[a-1][c];
	return ans;
}
bool ck(ll m) {
	if(!m) return 1;
	ll j=0,k=1;
	Rep(i,t.length()) {
		char c=t[i];
		ll tm=m;
		if(!ct[c]) return 0;
		if(j!=0&&tm>0) {
			if(tm>get(j,slen-1,c)) {
				tm-=get(j,slen-1,c);
				j=0,k++;
			}
			else {
				int ans=-1,l=j,r=slen-1;
				while(l<=r) {
					int m=l+r>>1;
					if(get(j,m,c)>=tm ) ans=m,r=m-1;else l=m+1;
				}
				j=ans+1;tm=0;
				if(j>=slen) k++,j=0;
			}
		}
		
//		while(j!=0 && tm>0) {
//			if(s[j]==c) --tm;
//			j=j+1;
//			if(j==slen) j=0,++k;
//		}
//		cout<<k<<' '<<j<<' '<<tm<<endl;
		if(tm) {
			ll a=tm/ct[c];
//			cout<<a<<endl;
			if(a>0) {
				k+=a-1;
				tm-=(a-1)*ct[c];
			}
		}
//		cout<<k<<' '<<j<<' '<<tm<<endl;
		
		
		if(tm>0) {
			if(tm>get(j,slen-1,c)) {
				tm-=get(j,slen-1,c);
				j=0,k++;
			}
			else {
				int ans=-1,l=j,r=slen-1;
				while(l<=r) {
					int m=l+r>>1;
					if(get(j,m,c)>=tm ) ans=m,r=m-1;else l=m+1;
				}
				j=ans+1;tm=0;
				if(j>=slen) k++,j=0;
			}
		}
		if(tm>0) {
			if(tm>get(j,slen-1,c)) {
				tm-=get(j,slen-1,c);
				j=0,k++;
			}
			else {
				int ans=-1,l=j,r=slen-1;
				while(l<=r) {
					int m=l+r>>1;
					if(get(j,m,c)>=tm ) ans=m,r=m-1;else l=m+1;
				}
				j=ans+1;tm=0;
				if(j>=slen) k++,j=0;
			}
		}
		
		
//		while(tm) {
//			if(s[j]==c) --tm;
//			j=j+1;
//			if(j==slen) j=0,++k;
//		}
//		cout<<j<<' '<<k<<endl;
		if(k>n+1) return 0;
	}
	if(k<=n|| k==n+1 && j==0) return 1;
	return 0;
}
int main()
{
//	freopen(".out","w",stdout);
	cin>>n>>s>>t;

	slen=s.length();
	Rep(i,slen) ct[s[i]]++;
	Rep(i,slen) Rep(j,26)
	{
		f[i][j]=(s[i]-'a'==j);
		if(i) f[i][j]+=f[i-1][j];
	}
	
	ll ans=0,l=0,r=s.length()*n/t.length();
	while(l<=r) {
		ll m=(l+r)/2;
		if(ck(m)) ans=m,l=m+1;else r=m-1;
	}
	cout<<ans<<endl;
	
	return 0;
}


  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值