zoukankan      html  css  js  c++  java
  • CCNUOJ 1003 狗狗和花生

    1003: 狗狗和花生

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 10  Solved: 4
    [Submit][Status][Web Board]

    Description

    有n只狗狗,为了训练狗狗玩花生的能力,主人制定了三种命令:
    1.g i:表示第i只狗狗得到一颗花生
    2.e i:表示让第i只狗狗吃掉它得到的所有花生
    3.s i j:表示让第i只狗狗和第j只狗狗交换各自的花生
    主人给定了k个命令,作为一套命令,为了巩固训练效果,狗狗们需要将这套命令重复m遍……

    Input

    先输入T,表示输入T个测试数据,对于每个测试数据:
    第1行:整数n,m,k(n<=10,m<=10^10,k<=100)
    第2--k+1行:表示一套命令的每个命令,每个命令通过题目中(1,2,3)的语句给出

    Output

    对于每个测试数据,输出一行,有n个数,表示将命令重复m遍后,第1至n只狗狗最后手里的花生数,相邻两个数用一个空格隔开。

    Sample Input

    1 3 1 6 g 1 g 2 g 2 s 1 2 g 3 e 2

    Sample Output

    2 0 1

    矩阵快速幂,构造矩阵求解

    #include<stdio.h>
    #include<string.h>
    int a[105][105],b[105][105],c[105][105],n,m;
    
    void mul()
    {
    	int i,j,k;
    	memset(b,0,sizeof(b));
    	for(i=0;i<=n;i++)
    		for(j=0;j<=n;j++)
    			for(k=0;k<=n;k++)
    				b[i][j]+=c[i][k]*a[k][j];
    	memcpy(c,b,sizeof(b));
    }
    
    void mul2()
    {
    	int i,j,k;
    	memset(b,0,sizeof(b));
    	for(i=0;i<=n;i++)
    		for(j=0;j<=n;j++)
    			for(k=0;k<=n;k++)
    				b[i][j]+=a[i][k]*a[k][j];
    	memcpy(a,b,sizeof(b));
    }
    
    void qm()
    {
    	while(m)
    	{
    		if(m&1) mul();
    		mul2();
    		m>>=1;
    	}
    }
    int main()
    {
    	int T,k,i,j,p,q,tmp;
    	char op[5];
    	scanf("%d",&T);
    	while(T--)
    	{
    		scanf("%d%d%d",&n,&m,&k);
    		memset(a,0,sizeof(a));
    		for(i=0;i<=n;i++)
    			{a[i][i]=1;c[i][i]=1;}
    		for(i=0;i<k;i++)
    		{
    			scanf("%s%d",op,&p);
    			switch(op[0])
    			{
    			case 'g':a[n][p-1]++;break;
    			case 'e':for(j=0;j<=n;j++) a[j][p-1]=0;break;
    			case 's':scanf("%d",&q);for(j=0;j<=n;j++){tmp=a[j][p-1];a[j][p-1]=a[j][q-1];a[j][q-1]=tmp;}
    			}
    		}
    		qm();
    		printf("%d",c[n][0]);
    		for(i=1;i<n;i++)
    			printf(" %d",c[n][i]);
    		printf("\n");
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    is_enable()、is_displayed()、isSelected()
    python selenium(常用关键字)
    Jenkins 构建 Jmeter 项目之源代码管理(SVN)
    Jenkins 构建 Jmeter 项目
    SAP SD基础知识之现金销售
    SAP SD基础知识之与FI集成相关的流程与配置
    SAP SD 基础知识之计划行类别(Schedule Line Category)
    SAP MM 事务代码MRKO触发的财务凭证不会出现在PO History里
    SAP MM 对于MRKO事务代码的几点优化建议
    SAP SD 销售中的借贷项凭证
  • 原文地址:https://www.cnblogs.com/laputa/p/2121617.html
Copyright © 2011-2022 走看看