A 爱丽丝的人偶(一)
#include<bits/stdc++.h>
using namespace std;
int n ;
int main (){
scanf("%d",&n);
int i=1,j=(n+1)/2+1;
while(i<=(n+1)/2){
printf("%d ",i);
i++;
if(j<=n){
printf("%d ",j);
j++;
}
}
}
B 爱丽丝的人偶(二)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int M=1e5+10,mod=1e9+7;
int n ,k;
ll a[M];
ll jc[M];
ll poww(ll x,ll n){
ll ans=1;
while(n){
if(n&1) ans=ans*x%mod;
x=x*x%mod;
n>>=1;
}
return ans;
}
int main (){
scanf("%d%d",&n,&k);
for (int i=1;i<=n;i++)
scanf("%lld",&a[i]);
sort(a+1,a+1+n);
n=unique(a+1,a+1+n)-(a+1);
ll ans=1;
jc[0]=1;
for(int i=1;i<=n;i++){
ans=ans*i%mod;
jc[i]=jc[i-1]*i%mod;
}
ans=ans*poww(jc[k],mod-2)%mod*poww(jc[n-k],mod-2)%mod;
printf("%lld",ans);
}
C 打毛玉大赛
#include<bits/stdc++.h>
using namespace std;
int a,b;
int main (){
scanf("%d%d",&a,&b);
if(b<a) swap(a,b);
if(a==1&&b==2)
printf("A");
else
printf("B");
}
D 贪玩的二小姐(续)
#include<bits/stdc++.h>
using namespace std;
int n ;
string s;
int main (){
scanf("%d\n",&n);
cin>>s;
int x=0,y=0;
for(int i=0;i<n;i++)
{
if(s[i]=='(' ) x++;
else if(s[i]==')')
{
if(x==0) y++;
else x--;
}
}
if(x%2==y%2) {
if(x%2==0)
printf("%d",x/2+y/2);
else
printf("%d",x/2+y/2+2);
}
else printf("-1");
return 0;
}
E 游戏机本当下手
#include<bits/stdc++.h>
using namespace std;
const int M=1e6+10;
#define ll long long
int n ,k;
string s;
ll a[M];
int cnt;
int main (){
scanf("%d%d\n",&n,&k);
cin>>s;
int t=1;
for(int i=0;i<n;i++)
{
if(s[i]!=s[i+1] )
a[++cnt]=t,t=0;
t++;
}
ll ans=0;
if(k==1)
{
for(int i=1;i<=cnt;i++)
ans+=(a[i] +1)*a[i]/2;
}
else{
for(int i=1;i<=cnt-k+1;i++)
ans+=a[i]*a[i+k-1];
}
printf("%lld",ans );
return 0;
}
F 宵暗的妖怪*
#include<bits/stdc++.h>
using namespace std;
const int M=1e5+10;
#define ll long long
int n ;
ll a[M];
ll dp[M];
int main (){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
dp[3]=a[2];
for(int i=4;i<=5;i++)
dp[i]=max(dp[i-1],a[i-1]);
for(int i=6;i<=n;i++)
dp[i]=max(dp[i-1],dp[i-3]+a[i-1]);
printf("%lld",dp[n]);
return 0;
}
G 魔界伊始
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
int n;
scanf("%d",&n);
ll t=0;
scanf("%lld",&t);
for(int i=2;i<=n;i++)
{
ll a;
scanf("%lld",&a);
t=__gcd(a,t);
}
int q=0;
scanf("%d",&q);
for(int i=1;i<=q;i++){
ll x;
scanf("%lld",&x);
if(x%t==0)
printf("Yes\n");
else
printf("No\n");
}
}
H 芭芭拉冲鸭~
#include<bits/stdc++.h>
using namespace std;
const int M=1e5+10;
string s;
int a[M];
int d[M],ans;
int h[M],nxt[M*2],to[M*2],cnt;
void add(int x,int y) {
to[++cnt]=y;
nxt[cnt]=h[x];
h[x]=cnt;
}
void dfs(int x,int fa) {
for(int i=h[x]; i; i=nxt[i]) {
int y=to[i];
if(y==fa) continue;
dfs(y,x);
if(a[x]!=a[y]) {
ans=max(ans,d[x]+d[y]+1);
d[x]=max(d[x],d[y]+1);
} else {
ans=max(ans,d[x]);
}
}
}
int main() {
int n;
scanf("%d\n",&n);
cin>>s;
for(int i=0; i<n; i++) {
if(s[i]=='R') a[i+1]=1;
else if(s[i]=='G') a[i+1]=2;
else if(s[i]=='B') a[i+1]=3;
}
for(int i=1; i<=n-1; i++) {
int x,y;
scanf("%d %d",&x,&y);
add(x,y);
add(y,x);
}
dfs(1,0);
printf("%d",ans);
}
I 永远亭的小游戏
#include<bits/stdc++.h>
using namespace std;
const int M=1e5+10,mod=1e9+7;
#define ll long long
int n ,m,k;
int a,b,c;
ll sa,sb,sc;
ll poww(ll x,ll n){
ll ans=1;
while(n){
if(n&1) ans=ans*x%mod;
x=x*x%mod;
n>>=1;
}
return ans;
}
int main (){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++)
scanf("%d",&a),sa+=a,sa%=mod;
for(int i=1;i<=m;i++)
scanf("%d",&b),sb+=b,sb%=mod;
for(int i=1;i<=k;i++)
scanf("%d",&c),sc+=c,sc%=mod;
ll ans=0;
ll p=poww(n,mod-2)*poww(m,mod-2)%mod*poww(k,mod-2)%mod;
ans=sa*sb%mod*sc%mod*p%mod;
printf("%lld",ans);
return 0;
}
J 芭芭拉冲鸭~(续)
#include<bits/stdc++.h>
using namespace std;
const int M=1e5+10;
string s;
int fa[M][20],t[30];
int d[M],sum[M][30];
int h[M],nxt[M*2],to[M*2],cnt;
void add(int x,int y) {
to[++cnt]=y;
nxt[cnt]=h[x];
h[x]=cnt;
}
void dfs(int x,int f) {
d[x]=d[f]+1;
fa[x][0]=f;
for (int i=1; i<=17; i++)
fa[x][i]=fa[fa[x][i-1]][i-1];
for(int i=1; i<=26; i++)
sum[x][i]+=sum[f][i];
int j=s[x-1]-'a'+1;
sum[x][j]++;
for(int i=h[x]; i; i=nxt[i]) {
int y=to[i];
if(y==f) continue;
dfs(y,x);
}
}
int lca(int x,int y) {
if(d[x]<d[y]) swap(x,y);
for(int i=17; i>=0; i--)
if(d[x]-(1<<i)>=d[y]) x=fa[x][i];
if(x==y) return x;
for(int i=17; i>=0; i--)
if(fa[x][i]!=fa[y][i]) x=fa[x][i],y=fa[y][i];
return fa[x][0];
}
int main() {
int n;
scanf("%d",&n);
for(int i=1; i<=n-1; i++) {
int x,y;
scanf("%d %d",&x,&y);
add(x,y);
add(y,x);
}
getchar();
cin>>s;
dfs(1,0);
int q=0;
scanf("%d",&q);
for(int i=1; i<=q; i++) {
int x,y;
scanf("%d %d",&x,&y);
int z=lca(x,y);
memset(t,0,sizeof(t));
t[s[z-1]-'a'+1]++;
int ans=0,f=0;
for(int j=1; j<=26; j++) {
t[j]+=sum[x][j]+sum[y][j]-2*sum[z][j];
if(t[j]%2) {
ans+=t[j]-1;
f=1;
} else ans+=t[j];
}
if(f) ans++;
printf("%d\n",ans);
}
return 0;
}
K 玩具销售员
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int main (){
scanf("%d%d%d",&n,&m,&k);
k*=2;
if(k>=m) printf("Yes");
else printf("No");
}