机器人的舞蹈

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. 关于vim复制剪贴粘贴命令的总结-转

    最近在使用vim,感觉很好很强大,但是在使用复制剪切粘贴命令是,碰到了一些小困惑,网上找了一些资料感觉很不全,讲的也不好,遂自己进行实践并总结了. 首先是剪切(删除): 剪切其实也就顺带删除了所选择的 ...

  2. Android 获取html中指定标签

    有时我们并不需要全部的html页面,而只是需要其中的部分标签,我们可以通过jsoup来完成这一操作. 官网:https://jsoup.org/ 1 Document document = Jsoup ...

  3. django中的filter(), all(), get()

    1. 类名.objects中的get(), filter(), all() 的区别 结论: (1)all()返回的是QuerySet对象,程序并没有真的在数据库中执行SQL语句查询数据,但支持迭代,使 ...

  4. 在服务端应用中如何获得客户端 IP

    如果有 x-forwarded-for 的请求头,则取其中的第一个 IP,否则取建立连接 socket 的 remoteAddr. 而 x-forwarded-for 基本已成为了基于 proxy 的 ...

  5. C++基本函数的调用优化(构造、拷贝构造、赋值)

    合理的函数可提升时间和空间的利用率 //Test1.h #include<iostream> using namespace std; struct ST { private: int a ...

  6. 使用NSURLSessionDataTask实现大文件离线断点下载(完整)

    6.1 涉及知识点(1)关于NSOutputStream的使用 //1. 创建一个输入流,数据追加到文件的屁股上 //把数据写入到指定的文件地址,如果当前文件不存在,则会自动创建 NSOutputSt ...

  7. Pagination.js + Sqlite web系统分页

    前端使用 jquery pagination.js 插件. 环境准备:jquery.js.pagination.js.pagination.css 附件下载:https://files.cnblogs ...

  8. 论文翻译:2021_Low-Delay Speech Enhancement Using Perceptually Motivated Target and Loss

    论文地址:使用感知动机目标和损失的低延迟语音增强 引用格式:Zhang X, Ren X, Zheng X, et al. Low-Delay Speech Enhancement Using Per ...

  9. log4j漏洞的产生原因和解决方案,小白都能看懂!!!!

    核弹级bug Log4j,相信很多人都有所耳闻了,这两天很多读者都在问我关于这个bug的原理等一些问题,今天咱们就专门写一篇文章,一起聊一聊这个核弹级别的bug的产生原理以及怎么防止 产生原因 其实这 ...

  10. 手把手教你提交Jar包到Maven公共仓库 | 萌新写开源02

    在上一篇文章中,我介绍了自己的SpringBoot Starter项目,可以让我们使用注解的方式轻松地获取操作日志,并推送到指定数据源. 之前,我的项目开源在Github上,大家想要用我的项目,还得把 ...