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