Educational Codeforces Round 170 (Div. 2)

Educational Codeforces Round 170 (Div. 2) 总结

不想写,只有代码记录。

A

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;

string a,b;
void solve()
{
	cin>>a>>b;
	int len=min(a.size(),b.size());
	int cnt=0;
	for(int i=0;i<len;i++) 
	{
		if(a[i]==b[i]) cnt++;
		else break;
	}
	if(cnt==0) cnt++;
	cout<<a.size()+b.size()-(cnt-1)<<'\n';
}
int main ()
{
	int T;
	cin>>T;
	while(T--) solve();
	return 0;
}

B

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;

const int N=1e5+5,mod=1e9+7;
int n;
int a[N],b[N];
int p[N];
int dfs(int x,int y)
{
	if(x==y) return 1;
	if(y==0) return 1;
	return p[y];
}
int C[10][10];

void solve()
{
	cin>>n;
	p[0]=1;
	for(int i=1;i<=N-5;i++) p[i]=1ll*p[i-1]*2%mod;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) cin>>b[i];
	// for(int n=0;n<=10;n++)
	// {
	// 	C[n][0] = 1;
    //     C[n][n] = 1;
    //     for (int k = 1; k <n; k++) // loop over k from 1 to n-1 (inclusive)
    //         C[n][k] = C[n][k - 1] + C[n - 1][k - 1];
	// }
	// for(int n=0;n<=10;n++)
	// {
	// 	for(int k=0;k<=n;k++) cout<<C[n][k]<<' ';
	// 	cout<<'\n';
	// }
	for(int i=1;i<=n;i++) cout<<dfs(a[i],b[i])<<'\n';
}
int main ()
{
	int T;
	T=1;
	while(T--) solve();
	return 0;
}

C

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>

using namespace std;
const int N=2e5+5;
int n,k;
int a[N],b[N],c[N];
int cnt;
void solve()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++) b[i]=a[i],c[i]=0;
	cnt=unique(b+1,b+n+1)-b-1;
	for(int i=1;i<=n;i++)
	{
		int id=lower_bound(b+1,b+cnt+1,a[i])-b;
		c[id]++;
	}
	// for(int i=1;i<=n;i++) cout<<a[i]<<' ';
	// cout<<'\n';
	// for(int i=1;i<=cnt;i++) cout<<b[i]<<' ';
	// cout<<'\n';
	// for(int i=1;i<=cnt;i++) cout<<c[i]<<' ';
	// cout<<'\n';
	int l=1;
	int ans=0,num=0;
	for(int r=1;r<=cnt;r++)
	{
		num+=c[r];
		if(r-l+1>k) num-=c[l++];
		if(b[r]-b[r-1]!=1) l=r,num=c[r];
		ans=max(ans,num); 
	}
	cout<<ans<<'\n';
}
int main ()
{
	int T;
	cin>>T;
	while(T--) solve();
	return 0;
}

D

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>
#include <math.h>
#include <cstdio>

using namespace std;

const int N=2e6+5;
int n,m;
int a[N],b[N],c[N];
int f[N];
void solve()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	int s=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i]>0) b[a[i]]++;
		else if(a[i]<0) c[-a[i]]++;
		if(a[i]==0||i==n)
		{
			for(int j=1;j<=s;j++) b[j]+=b[j-1],c[j]+=c[j-1];
			for(int j=0;j<=s;j++) f[j]+=b[j]+c[s-j];
			for(int j=s+1;j>=1;j--) f[j]=max(f[j],f[j-1]);
			for(int j=0;j<=s+1;j++) b[j]=c[j]=0;
			s++;
		}
	}
	int ans=0;
	for(int j=0;j<=s;j++) ans=max(ans,f[j]);
	cout<<ans<<'\n';
}
int main ()
{
	int T;
	T=1;
	while(T--) solve();
	return 0;
}

posted @ 2024-10-30 21:14  zhouruoheng  阅读(2)  评论(0编辑  收藏  举报