机器人的舞蹈

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 292    Accepted Submission(s): 154

Problem Description
一天四个不同的机器人a、b、c和d在一张跳舞毯上跳舞,这是一张特殊的跳舞毯,他由4个正方形毯子组成一个大的正方形毯子,一开始四个机器人分别站在4块毯子上,舞蹈的每一步机器人可以往临近(两个毯子拥有同一条边视为临近)的一个毯子移动或停留在原来的毯子(同一块毯子可以有多个机器人停留),这个时候机器人的制造者你想知道经过n步的移动有多少种方式可以让每个毯子上都有机器人停留。
 
Input
对于每组数据输入一个整数n(0<=n<=100)
 
Output
对于每组输入输出一个整数表示方法种数,种数可能很大请对9937取模。
 
Sample Input
1
 
Sample Output
9
 
Source
 
Recommend
lcy   |   We have carefully selected several similar problems for you:  2235 2233 2234 2237 2238 
思路:总共给四个机器人那么分别记为1 2 3 4,记4个位置1 2 3 4
开个三维数组a,第一维表示步数,第二维表示哪个机器人,第三维表示机器人所在的位置.
那么递推a[i][j][k]=sum(a[i-1][j][s])(abs(k-s)!=2)
那么最后枚举四个机器人所在的位置,然后sum+=四个位置方案数的乘积。
 1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<math.h>
6 #include<queue>
7 #include<string.h>
8 #include<stack>
9 #include<vector>
10 #include<map>
11 #define sc(x) scanf("%I64d",&x)
12 #define pr(x) printf("%I64d",x)
13 #define prr(x) printf("%I64d\n",x)
14 #define prrr(x) printf(" %I64d",x)
15 #define FOR(i,p,q) for(int i=p;i<=q;i++)
16 const int NN=9937;
17 using namespace std;
18 int a[101][5][5];
19 int main(void)
20 {
21 int n,i,j,k,p,q,kk;
22 for(i=1; i<=4; i++)
23 {
24 for(j=1; j<=4; j++)
25 {
26 if(i==j)
27 {
28 a[0][i][j]=1;
29 }
30 else a[0][i][j]=0;
31 }
32 }//当为0步的时候的初始状态
33 for(i=1; i<=100; i++)
34 for(kk=1; kk<=4; kk++)
35 for(j=1; j<=4; j++)
36 for(int zz=1; zz<=4; zz++)
37 if(abs(zz-j)!=2)
38 a[i][kk][j]=(a[i][kk][j]+a[i-1][kk][zz])%9937;//递推计算第几步的时候的每个机器人所对应4个位置的方案数
39
40 int ak[101];
41 int t[5];//判断是否在不同的4个位置
42 for(i=1; i<=100; i++)
43 {
44 int sum=0;memset(t,0,sizeof(t));
45 for(int r=1; r<=4; r++)//枚举24种状态
46 {
47 t[r]++;
48 for(int z=1; z<=4; z++)
49 {
50 t[z]++;
51 for(int s=1; s<=4; s++)
52 {
53 t[s]++;
54 for(int y=1; y<=4; y++)
55 {
56 t[y]++;
57 int uu=0;
58 for(int rt=1; rt<=4; rt++)
59 {
60 if(t[rt]!=0)
61 {
62 uu++;
63 }
64 }
65 if(uu==4)
66 {
67 int sum1=((a[i][1][r]%NN*a[i][2][z]%NN)%NN*(a[i][3][s]%NN*a[i][4][y]%NN)%NN)%NN;
68 if(sum1<0)
69 {
70 printf("%d %d\n",a[i][3][s],a[i][4][y]);
71 printf("%d\n",sum1);
72 }
73 sum=(sum+sum1)%NN;
74
75 }
76 t[y]--;
77 }
78 t[s]--;
79 }
80 t[z]--;
81 }
82 t[r]--;
83 }
84 ak[i]=sum;
85
86 }
87 while(scanf("%d",&k)!=EOF)
88 {
89 printf("%d\n",ak[k]);
90 }
91 return 0;
92 }

机器人的舞蹈(hdu 2232)的更多相关文章

  1. hdu 2232 矩阵 ***

    一天四个不同的机器人a.b.c和d在一张跳舞毯上跳舞,这是一张特殊的跳舞毯,他由4个正方形毯子组成一个大的正方形毯子,一开始四个机器人分别站在4 块毯子上,舞蹈的每一步机器人可以往临近(两个毯子拥有同 ...

  2. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. [C#] 逆袭——自制日刷千题的AC自动机攻克HDU OJ

    前言 做过杭电.浙大或是北大等ACM题库的人一定对“刷题”不陌生,以杭电OJ为例:首先打开首页(http://acm.hdu.edu.cn/),然后登陆,接着找到“Online Exercise”下的 ...

  4. 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ

    前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...

  5. HDU 1978 记忆化搜索(dfs+dp)

    Y - How many ways Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  6. HDU 4003 (树形DP+背包)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4003 题目大意:有K个机器人,走完树上的全部路径,每条路径有个消费.对于一个点,机器人可以出去再回来 ...

  7. HDU 自动刷题机 Auto AC (轻轻松松进入HDU首页)

    前言: 在写这篇文章之前,首先感谢给我思路以及帮助过我的学长们 以下4篇博客都是学长原创,其中有很多有用的,值得学习的东西,希望能够帮到大家! 1.手把手教你用C++ 写ACM自动刷题神器(冲入HDU ...

  8. C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~

    暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...

  9. hdu 4003 Find Metal Mineral 树形DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4003 Humans have discovered a kind of new metal miner ...

随机推荐

  1. git 新建分支并切换到该分支_Git 从master拉取代码创建新分支 并且再将修改合并到master...

    开发过程中会从master主分支copy到另一个开发分支: 1.切换到master分支 git  checkout  master 2.获取最新的代码 git pull origin master 3 ...

  2. Linux 【复习巩固】

    目录 一.网络和服务 1.查看ip 2.查看主机名 配置 3.临时服务 1)基本语法(CentOS 6) 2)基本语法(CentOS 7) 3)示例 4.开机自启动服务 1)基本语法(CentOS 6 ...

  3. 安全相关,xss

    XSS XSS,即 Cross Site Script,中译是跨站脚本攻击:其原本缩写是 CSS,但为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS. ...

  4. 03-Collection用例管理及批量执行

    当我们对一个或多个系统中的很多用例进行维护时,首先想到的就是对用例进行分类管理,同时还希望对这批用例做回归测试 .在postman也提供了这样一个功能,就是Collection .通过这个Collec ...

  5. 队列——Java实现

    1 package struct; 2 3 interface IQueue{ 4 //入队列 5 void add(Object obj); 6 //出队列 7 Object remove(); 8 ...

  6. Java Maven项目搭建

    创建空项目 New Project --> Empty Project --> ... 配置JDK Project Settings --> Project 选择JDK Module ...

  7. treeTable实现排序

    /* * * TreeTable 0.1 - Client-side TreeTable Viewer! * @requires jQuery v1.3 * * Dual licensed under ...

  8. 小程序中使用less(最优方式)

    写惯了less/sass,但是现在开发小程序缺还是css,很不习惯. 在网上搜的教程,要么是gulp,要么就是vscode的Easy-less的插件. 传统方式 我们来对比,这两种方式的优劣. Gul ...

  9. String 、StringBuffer、StringBuilder的区别

    String:字符串常量 StringBuffer:字符串变量:线程安全的 StringBuilder:字符串变量:线程非安全的 三者执行速度比较:StringBuilder >  String ...

  10. spring mvc访问html页面404报错解决

    <servlet> <servlet-name>context</servlet-name> <servlet-class>org.springfram ...