Codeforces Round #137 (Div. 2)
来源:互联网 发布:python 微信机器人 编辑:程序博客网 时间:2024/04/29 19:54
转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove
不是很难的一场~~~
A. Shooshuns and Sequence
随便YY下吧,首先必须从k个之后,都是相同的,否则不管怎么样,都不会完成
然后就需要看k之前连续相同的有几个
B. Cosmic Tables
直接搞,两个数组分别记录每一行当前的位置,以及每一列当前的位置
C. Reducing Fractions
分解质因子之后,不要将质因子组合,那样容易出错,一个是容易出上界,二个容易个数过多
显然新分数是将原分数约分得到的,所以个数不变,我们保留剩下的因子即可
#include<iostream>#include<cstdio>#include<map>#include<cstring>#include<cmath>#include<vector>#include<algorithm>#include<set>#define inf 1<<27#define M 100005#define N 10000005#define Min(a,b) ((a)<(b)?(a):(b))#define Max(a,b) ((a)>(b)?(a):(b))#define pb(a) push_back(a)#define mem(a,b) memset(a,b,sizeof(b))#define LL long longusing namespace std;int prime[N]={0},c1[N],c2[N];int n,m,a[M],b[M];void Prime(){for(int i=2;i<N;i++){if(prime[i]) continue;for(int j=2;j*i<N;j++)prime[i*j]=1;}}void split(int num,int c[]){for(int i=2;i*i<=num&&prime[num];i++){while(num%i==0){c[i]++;num/=i;}}if(num>1) c[num]++;}void print(int num,int c[]){int tmp=1;for(int i=2;i*i<=num&&prime[num];i++){//cout<<i<<" "<<c[i]<<endl;while(num%i==0){if(c[i]){c[i]--;tmp*=i;}num/=i;}}if(num>1&&c[num]){c[num]--;tmp*=num;}printf("%d ",tmp);}int main(){Prime(); while(scanf("%d%d",&n,&m)!=EOF){mem(c1,0);mem(c2,0);for(int i=0;i<n;i++){scanf("%d",&a[i]);split(a[i],c1);}for(int i=0;i<m;i++){scanf("%d",&b[i]);split(b[i],c2);}for(int i=2;i<N;i++){int mm=min(c1[i],c2[i]);c1[i]-=mm;c2[i]-=mm;}printf("%d %d\n",n,m);for(int i=0;i<n;i++) print(a[i],c1);printf("\n");for(int i=0;i<m;i++) print(b[i],c2);printf("\n");}return 0;}
D. Olympiad
readforces~~~~看懂之后,排序直接贪心,题目说一定有一组相加大于k,所以最优为1
E. Decoding Genome
简单题~~构造矩阵,快速幂乘
#include<iostream>#include<cstdio>#include<map>#include<cstring>#include<cmath>#include<vector>#include<algorithm>#include<set>#define inf 1<<27#define M 100005#define N 55#define Min(a,b) ((a)<(b)?(a):(b))#define Max(a,b) ((a)>(b)?(a):(b))#define pb(a) push_back(a)#define mem(a,b) memset(a,b,sizeof(b))#define LL long long#define MOD 1000000007using namespace std;struct Matrix{ LL m[N][N]; }init; LL n,k,m; int ID(char ch){if(ch>='a'&&ch<='z') return ch-'a';else return ch-'A'+26;}Matrix Mult(Matrix m1,Matrix m2,int n){ Matrix ans; for(int i=0;i<n;i++) for(int j=0;j<n;j++){ ans.m[i][j]=0; for(int k=0;k<n;k++) ans.m[i][j]=(ans.m[i][j]+m1.m[i][k]*m2.m[k][j])%MOD; } return ans; } Matrix Pow(Matrix m1,LL b,int n){ Matrix ans; for(int i=0;i<n;i++) for(int j=0;j<n;j++) ans.m[i][j]=(i==j); while(b){ if(b&1) ans=Mult(ans,m1,n); m1=Mult(m1,m1,n); b>>=1; } return ans; } void debug(Matrix m1,int n){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++) printf("%I64d ",m1.m[i][j]); printf("\n"); } } int main(){while(scanf("%I64d%d%d",&n,&k,&m)!=EOF){for(int i=0;i<k;i++) for(int j=0;j<k;j++) init.m[i][j]=1;while(m--){char str[5];scanf("%s",str);init.m[ID(str[0])][ID(str[1])]=0;}//debug(init,k);init=Pow(init,n-1,k);//debug(init,k);LL ans=0;for(int i=0;i<k;i++)for(int j=0;j<k;j++)ans=(ans+init.m[i][j])%MOD;printf("%I64d\n",ans);}return 0;}
- Codeforces Round #137 (Div. 2)
- Codeforces Round #137 (Div. 2)
- Codeforces Round #137 (Div. 2)
- Codeforces Round #137 (Div. 2)
- Codeforces Round #137 (Div. 2)
- Codeforces Round #137 (Div. 2)
- Codeforces Round #137 (Div. 2)
- Codeforces Round #137 (Div. 2), problem: (C)
- Codeforces Round #137 (Div. 2) A题
- Codeforces Round #102 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #104 (Div. 2)
- Codeforces Round #105 (Div. 2)
- Codeforces Round #105 (Div. 2)
- Codeforces Round #107 (Div. 2)
- Codeforces Round #108 (Div. 2)
- Codeforces Round #110 (Div. 2)
- cc攻击下载 的思路及防范方法
- oracle事务
- ntohs htons ntohl htonl比较和详解
- VFS的索引节点 链接
- HDOJ 1160 FatMouse's Speed (子序列 - 动态规划)
- Codeforces Round #137 (Div. 2)
- 用英语写书给老外看
- 6个月:从小白到程序员,也许没你想的那么难
- 安卓系统中的桌面启动器Launcher
- 资深数据库工程师第一步
- Android ViewGroup中事件触发和传递机制
- 产品说明文档 BlackBerry 9930 用户手册:用户指南,此处开始(快速入门)
- 一致性Hash算法
- SDET职位概述