A
#include<bits/stdc++.h>
using namespace std;
const int MAXN=100100;
int a[MAXN],b[MAXN],a1[MAXN],b1[MAXN],a2[MAXN],b2[MAXN];
int main()
{
int T,i,j,p,q,ans,n,m,a1sum,a2sum,b1sum,b2sum;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<=m;i++)
scanf("%d",&b[i]);
a1sum=a2sum=b1sum=b2sum=0;
for(i=1;i<=n;i++)
{
scanf("%d",&p);
if(p)
a1[a1sum++]=a[i];
else
a2[a2sum++]=a[i];
}
for(i=1;i<=m;i++)
{
scanf("%d",&q);
if(q)
b1[b1sum++]=b[i];
else
b2[b2sum++]=b[i];
}
sort(a1,a1+a1sum);
sort(a2,a2+a2sum);
sort(b1,b1+b1sum);
sort(b2,b2+b2sum);
ans=0;
for(i=0,j=0;i<a1sum&&j<b2sum;)
{
if(a1[i]<b2[j])
{
ans++;
i++;
j++;
}
else
j++;
}
for(i=0,j=0;i<b1sum&&j<a2sum;)
{
if(b1[i]<a2[j])
{
ans++;
i++;
j++;
}
else
j++;
}
printf("%d\n",ans);
}
}
B
#include<bits/stdc++.h>
using namespace std;
string add(string s1,string s2)
{
if(s1.length()<s2.length())
swap(s1,s2);
int i,j,x,lazy=0;
for(i=s1.length()-1,j=s2.length()-1;j>=0;i--,j--)
{
x=lazy+s1[i]-'0'+s2[j]-'0';
s1[i]=x%10+'0';
lazy=x/10;
}
for(;i>=0&&lazy;i--)
{
x=lazy+s1[i]-'0';
s1[i]=x%10+'0';
lazy=x/10;
}
if(lazy)
return char(lazy+'0')+s1;
else
return s1;
}
void div2(string& s)
{
int i,x,lazy=0;
for(i=0;i<s.length();i++)
{
x=lazy*10+s[i]-'0';
s[i]=x/2+'0';
lazy=x%2;
}
if(s[0]=='0')
{
s=s.substr(1);
if(s=="")
s="0";
}
}
int main()
{
int T;
string s,ans;
cin>>T;
while(T--)
{
cin>>s;
ans="0";
while(s!="0")
{
div2(s);
ans=add(ans,s);
}
cout<<ans<<endl;
}
}
C
#include<bits/stdc++.h>
using namespace std;
const int MAXN=2020;
int mz[MAXN][MAXN],vis[MAXN][MAXN][3];
char s[250];
int function(int x,int y)
{
return 81*mz[x][y]+27*mz[x-1][y]+9*mz[x+1][y]+3*mz[x][y-1]+mz[x][y+1];
}
int main()
{
int T,n,m,a,b,i,j,id,ans;
long long k;
char ch;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
scanf("%d%d%lld",&a,&b,&k);
scanf(" %s",&s);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
scanf(" %c",&ch);
mz[i][j]=ch-'0';
vis[i][j][0]=vis[i][j][1]=vis[i][j][2]=-1;
}
ans=0;
while(k--)
{
if(vis[a][b][mz[a][b]]==ans)
break;
vis[a][b][mz[a][b]]=ans;
id=function(a,b);
if(s[id]=='U')
{
if(mz[a-1][b]!=1)
a--;
}
else if(s[id]=='D')
{
if(mz[a+1][b]!=1)
a++;
}
else if(s[id]=='L')
{
if(mz[a][b-1]!=1)
b--;
}
else if(s[id]=='R')
{
if(mz[a][b+1]!=1)
b++;
}
else if(s[id]=='P')
{
if(mz[a][b]==2)
{
mz[a][b]=0;
ans++;
}
}
}
printf("%d\n",ans);
}
}//
D
#include<bits/stdc++.h>
using namespace std;
int main()
{
int c,u,d,l,r,i;
char s[250];
for(i=0;i<243;i++)
{
c=i/81%3;
u=i/27%3;
d=i/9%3;
l=i/3%3;
r=i/1%3;
if(c==2)
s[i]='P';
else if(c==1)
s[i]='I';
else if(u==2)
s[i]='U';
else if(l==2)
s[i]='L';
else if(d==2)
s[i]='D';
else if(r==2)
s[i]='R';
else if(u==1&&d==0&&(l==0||l==1)&&r==0)
s[i]='R';
else if((u==0||u==1)&&d==0&&l==0&&r==1)
s[i]='D';
else if(u==0&&d==1&&l==0&&(r==0||r==1))
s[i]='L';
else if(u==0&&(d==0||d==1)&&l==1&&r==0)
s[i]='U';
else if(r==0)
s[i]='R';
else if(d==0)
s[i]='D';
else if(l==0)
s[i]='L';
else if(u==0)
s[i]='U';
else
s[i]='R';
}
s[243]=0;
printf("%s\n",s);
}//
E
#include<bits/stdc++.h>
using namespace std;
const int MAXN=110;
long long a[MAXN],b[MAXN];
int main()
{
int T,n,i;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(i=1;i<=n;i++)
scanf("%lld",&b[i]);
for(i=n;i>=1;i--)
{
if(b[i]<a[i])
break;
b[i-1]+=b[i]-a[i];
}
if(i<1)
printf("Yes\n");
else
printf("No\n");
}
}
F
unsloved
G
#include<bits/stdc++.h>
using namespace std;
const int MAXN=100100;
long long a[MAXN],b[MAXN];
int main()
{
int T,n,k,i,asum,bsum;
long long ans,x;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
asum=bsum=0;
for(i=1;i<=n;i++)
{
scanf("%lld",&x);
if(x>=0)
a[asum++]=x;
else
b[bsum++]=-x;
}
sort(a,a+asum);
sort(b,b+bsum);
ans=0;
for(i=asum-1;i>=0;i-=k)
ans+=a[i]*2;
for(i=bsum-1;i>=0;i-=k)
ans+=b[i]*2;
ans-=max(a[asum-1],b[bsum-1]);
printf("%lld\n",ans);
}
}
H
unsloved
I
#include<bits/stdc++.h>
using namespace std;
const long long mod=1e9+7;
const int MAXN=44;
vector<int> vec[MAXN];
int fa[MAXN];
long long w[MAXN],squsum[MAXN],sum[MAXN],num[MAXN],exc[MAXN];
long long powmod(long long x,long long p)
{
long long ret=1;
while(p)
{
if(p&1)
ret=ret*x%mod;
x=x*x%mod;
p>>=1;
}
return ret;
}
long long inv(long long x)
{
return powmod(x,mod-2);
}
int findfa(int x)
{
return fa[x]==x?x:fa[x]=findfa(fa[x]);
}
void dfs(int setid,int id,long long status,long long total)
{
if(id>=vec[setid].size())
{
squsum[setid]=(squsum[setid]+total*total%mod)%mod;
sum[setid]=(sum[setid]+total)%mod;
num[setid]++;
return;
}
int x=vec[setid][id];
dfs(setid,id+1,status,total);
if(!(exc[x]&status))
dfs(setid,id+1,status|(1ll<<x),total*w[x]%mod);
}
int main()
{
int n,m,x,y,i;
long long ans,squ_total,sum_total,num_total,ave;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%lld",&w[i]);
w[i]%=mod;
fa[i]=i;
}
while(m--)
{
scanf("%d%d",&x,&y);
fa[findfa(x)]=findfa(y);
exc[x]|=1ll<<y;
exc[y]|=1ll<<x;
}
for(i=1;i<=n;i++)
{
vec[findfa(i)].push_back(i);
}
squ_total=1;
sum_total=1;
num_total=1;
for(i=1;i<=n;i++)
{
if(!vec[i].size())
continue;
dfs(i,0,0,1);
squ_total=squ_total*squsum[i]%mod;
sum_total=sum_total*sum[i]%mod;
num_total=num_total*num[i]%mod;
}
ave=sum_total*inv(num_total)%mod;
ans=squ_total*inv(num_total)%mod-ave*ave%mod;
ans=(ans%mod+mod)%mod;
printf("%lld\n",ans);
}
J
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
long long n;
scanf("%d",&T);
while(T--)
{
scanf("%lld",&n);
if(n==1)
printf("8 9\n");
else
printf("%lld %lld\n",2*n,3*n);
}
}