2017 Multi-University Training Contest 1

来源:互联网 发布:mac怎么卸载驱动 编辑:程序博客网 时间:2024/06/03 23:06

比赛链接:2017 Multi-University Training Contest 1

A:水

#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){    int m,T=1;    while(~scanf("%d",&m))    {        printf("Case #%d: %d\n",T++,(int)(m*log10(2)));    }    return 0;}

B:

将所有字符串化成系数*字母的形式,其中系数也用26进制数表示,系数大的赋权大,然后考虑不能有前导零的情况就行了。

#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll mod=1e9+7;const int N=1e5+7;int c[26][N],p[26],v[26];char s[N];bool zero[26];bool cmp(int a, int b){    for(int i=N-1;i>=0;--i)        if(c[a][i]>c[b][i]) return true;        else if(c[a][i]<c[b][i]) return false;    return false;}int main(){    int n,T=1;    while(~scanf("%d",&n))    {        memset(c,0,sizeof(c));        memset(v,-1,sizeof(v));        memset(zero,false,sizeof(zero));        for(int i=0;i<n;++i)        {            scanf("%s",s);            int m=strlen(s);            if(m>1) zero[s[0]-'a']=true;            for(int j=0;j<m;++j)                ++c[s[j]-'a'][m-j-1];        }        for(int i=0;i<26;++i)            for(int j=0;j<N-1;++j)                if(c[i][j]>=26)                {                    c[i][j+1]+=c[i][j]/26;                    c[i][j]%=26;                }        for(int i=0;i<26;++i) p[i]=i;        sort(p,p+26,cmp);        for(int i=25;i>=0;--i) if(!zero[p[i]]) { v[p[i]]=0; break; }        int cur=25;        for(int i=0;i<26;++i)            if(v[p[i]]!=0) v[p[i]]=cur--;        ll ans=0;        for(int i=0;i<26;++i)        {            ll k=1,res=0;            for(int j=0;j<N;++j)            {                res=(res+k*c[i][j]%mod)%mod;                k=k*26%mod;            }            ans=(ans+v[i]*res%mod)%mod;        }        printf("Case #%d: ",T++);        printf("%I64d\n",ans);    }    return 0;}

C:
树形dp

F:

bu=v 代表一条有向边(u,v)
根据题目给定的 b 数组可以得到一个仅含环的图 G1
再根据f(i)=bf(ai) 可以再得到一个图 G2
G2 中的环可以被G1 中的环置换,且求置换的环必须是被置换的环的因子。
因此处理出每种长度环的数量,然后筛一下就行了。

#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll mod=1e9+7;const int N=1e5+7;int n,m,p[N];ll cf[N],cb[N];bool vis[N];int main(){    int T=1;    while(~scanf("%d%d",&n,&m))    {        memset(cf,0,sizeof(cf));        memset(cb,0,sizeof(cb));        for(int i=0;i<n;i++)        {            int u;            scanf("%d",&u);            p[u]=i;        }        memset(vis,0,sizeof(vis));        for(int i=0;i<n;++i)        {            if(!vis[i])            {                int k=0,u=i;                while(!vis[u]) ++k,vis[u]=true,u=p[u];                cf[k]++;            }        }        for(int i=0;i<m;i++)        {            int u;            scanf("%d",&u);            p[i]=u;        }        memset(vis,0,sizeof(vis));        for(int i=0;i<m;++i)        {            if(!vis[i])            {                int k=0,u=i;                while(!vis[u]) ++k,vis[u]=true,u=p[u];                cb[k]++;            }        }        for(int i=n;i>=1;--i)        {            ll k=cb[i];            for(int j=i*2;j<=n;j+=i)                cb[j]=(cb[j]+k*i%mod)%mod;            cb[i]=k*i;        }        ll ans=1;        for(int i=1;i<=n;++i)            while(cf[i]--) ans=ans*cb[i]%mod;        printf("Case #%d: %I64d\n",T++,ans);    }    return 0;}

H:
H

K:
打表找规律就行了

#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){    ll n,k;    int T=1;    while(~scanf("%I64d%I64d",&n,&k))    {        printf("Case #%d: ",T++);        if(k<=n) printf("%I64d\n",k);        else        {            k-=n;            if((k-1)/(n-1)%2==0)            {                if(k%(n-1)==0) printf("%I64d\n",n-1);                else printf("%I64d\n",(k-1)%(n-1)+1);            }            else            {                if(k%(n-1)==0) printf("%I64d\n",n);                else printf("%I64d\n",(k-1)%(n-1)+1);            }        }    }}

L:
L

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 掉头发很厉害怎么办吧 头发点的很厉害怎么办 为什么掉头发很厉害怎么办 产后2年脱发严重怎么办 产妇掉头发很厉害怎么办 头发掉了怎么办小妙招 头顶头发掉的厉害怎么办 20岁头发有些少怎么办 头痒头发掉厉害怎么办 头油头痒掉头发怎么办 头发痒掉发严重怎么办 宝宝的脸皴了怎么办 宝宝冬天脸皴了怎么办 白衬衣领子变黄怎么办 白衬衣领子烂了怎么办 玩手机眼睛红了怎么办 吃了发芽的土豆怎么办 散尾竹叶子发黄怎么办 吃了一朵长春花怎么办 3d模型打开缓慢怎么办 多肉叶片发芽后怎么办 多肉种子发芽后怎么办 玫瑰金手机掉漆怎么办 18k金掉色了怎么办 6s玫瑰金掉漆了怎么办 书被水泡了皱了怎么办 长头发掉的厉害怎么办 长头发容易掉发怎么办 家人被传销洗脑怎么办 衣服上有荧光剂怎么办 有荧光剂的衣服怎么办 3个月了恶露还有怎么办 京东倒闭欠的钱怎么办 便利通卡过期了怎么办 京东e卡被绑定了怎么办 天猫预售不发货怎么办 面签失败首付款怎么办 华为荣耀8卡顿怎么办 荣耀3c开不了机怎么办 华为3c开不了机怎么办 华为手机变砖了怎么办