北京信息科技大学第十二届程序设计竞赛暨ACM选拔赛(同步赛)

crazy_qqq 2020-11-22 10:19:30
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");
}
...全文
42 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧