【2012年中山纪念中学信息学竞赛初一选拔赛一】纪中游戏(d)

(File IO): input:d.in output:d.out 时间限制: 1000 ms 空间限制: 262144 KB

【题目描述】
纪中的学生是很幸福的,因为纪中有很多课外活动,每一个学生都能找到施展才华的舞台。除了上面说的JBA外,每年还有元旦晚会、主持人大赛、形象大使、街舞比赛、心声晚会、每周一演等等很多活动。
最近纪中又推出一项益智类的游戏——玩骰子,骰子是一个立方体,数字1到6分布在6个面上(如图所示),而且对着的两个面上的数字之和等于7,也就是说6对着1,5对着2,4对着3。

  一开始骰子被放在一个R*C的棋盘的左上角格子上,骰子一开始的状态是:数字1在上面,1的右边是3,同样为上图所示(即上面为1,下面为6,左面为4,右面为3,前面为2,后面为5)。现在允许你进行以下操作:把骰子往右滚直到到达最后一列,然后把骰子往下滚到达下一行,再把骰子往左滚直到碰到第一列,然后把骰子往下滚到达下一行,再把骰子往右滚直到碰到最后一列,再把骰子往下滚到达下一行。。。,如此反复下去直到所有的格子都经过一次。要求计算到达所有格子时上面数字之和。

【输入】
第一行包含两个整数R和C(1<=R,C<=100,000)

【输出】
计算到达所有格子时上面数字之和。

【样例输入】
样例输入1
3 2
样例输入2
3 4
样例输入3
737 296

【样例输出】
样例输出1
19
样例输出2
42
样例输出3
763532

【数据范围限制】
50%的数据满足:1<=R,C<=100。

【提示】
样例1经过每个格子时骰子上面的数字依次为:1 4 5 1 3 5。

【思路】
用一个变量t[]来模拟每个格子当前是多少,接着去循环每一
行。如[1]=1,[2]=6,[3]=2,[4]=5,[5]=4,[6]=3
用双重循环来模拟,每滚一步,就判断i是否是奇数,如果是,就int tmp=a[0]; a[0]=a[4]; a[4]=a[1]; a[1]=a[5]; a[5]=tmp;否则就int tmp=a[0]; a[0]=a[5]; a[5]=a[1]; a[1]=a[4]; a[4]=tmp;,最后答案加上上面的
数。但还要竖着往下滚一次,同样,就int tp=a[0]; a[0]=a[3]; a[3]=a[1]; a[1]=a[2]; a[2]=tp;,最后输出答案。(这个规律大家拿个骰子滚一滚试一试也能发现)
看到这里,如果你打个代码试一试就会发现会超时!!!(哦对了还有记得用long long,否则你懂的!)
我们可以发现,这其实有重复的周期,每翻四次的和就是十四(具体大家自己思考)。所以我们可以进行优化,用此公式:ans+=(a[1]+a[2]+a[3]+a[4])*(c/4);
这样循环就可以减少很多次计算,从1~c%4就可以了。剩下部
分就和之前的一样了。

【AC代码】
1️⃣

#include<cstdio>
using namespace std;long long r,c,t,ans = 0;
int a[6] = {1,6,2,5,4,3}; //上 下 前 后 右 左 void roll_right(){int tmp = a[0];a[0] = a[4];a[4] = a[1];a[1] = a[5];a[5] = tmp;
}void roll_left(){int tmp = a[0];a[0] = a[5];a[5] = a[1];a[1] = a[4];a[4] = tmp;
}void roll_down(){int tmp = a[0];a[0] = a[3];a[3] = a[1];a[1] = a[2];a[2] = tmp;
}
int main()
{freopen("d.in","r",stdin);freopen("d.out","w",stdout); scanf("%lld%lld",&r,&c);               //n行m列c--;                //骰子所在的位置不需要滚动,需要滚动的次数为c-1 for(int i = 1;i <= r;++i){ans += a[0];t = c / 4;                    //能滚多少次循环 ans += (a[0] + a[1] + a[2] + a[3]) * t;if(i % 2 == 1){               //当前在奇数行,向右滚 for(int j = 1;j <= c % 4;++j){roll_right();ans += a[0]; }}else{                         //当前在偶数行,向左滚 for(int j = 1;j <= c % 4;++j){roll_left();ans += a[0];}}roll_down();   //向下滚到下一行 }printf("%lld",ans);fclose(stdin);fclose(stdout);return 0;
}

2️⃣

#include<iostream>
#include<cstdio>
using namespace std;
int a[]={1,6,2,5,4,3};
long long ans,t;
int main(){freopen("d.in","r",stdin);freopen("d.out","w",stdout);int r,c;cin>>r>>c;c--;for(int i=1;i<=r;i++){ans+=a[0];t=c/4;ans+=(a[0]+a[1]+a[2]+a[3])*t;if(i%2==1){for(int j=1;j<=c%4;j++){int tmp=a[0];a[0]=a[4];a[4]=a[1];a[1]=a[5];a[5]=tmp;ans+=a[0];}}else{for(int j=1;j<=c%4;j++){int tmp=a[0];a[0]=a[5];a[5]=a[1];a[1]=a[4];a[4]=tmp;ans+=a[0];}}int tp=a[0];a[0]=a[3];a[3]=a[1];a[1]=a[2];a[2]=tp;}cout<<ans;fclose(stdin);fclose(stdout);
}

【2012年中山纪念中学信息学竞赛初一选拔赛一】纪中游戏(d)相关推荐

  1. 【2012年中山纪念中学信息学竞赛初一选拔赛一】美丽的纪中(a)

    [2012年中山纪念中学信息学竞赛初一选拔赛一]美丽的纪中(a) (File IO): input:a.in output:a.out 时间限制: 1000 ms 空间限制: 262144 KB [题 ...

  2. 【2012年中山纪念中学信息学竞赛初一选拔赛一】纪中篮球联赛(b)

    [2012年中山纪念中学信息学竞赛初一选拔赛一]纪中篮球联赛(b) (File IO): input:b.in output:b.out 时间限制: 1000 ms 空间限制: 262144 KB [ ...

  3. 【2012年中山纪念中学信息学竞赛初一选拔赛一】纪中作业(c)

    [2012年中山纪念中学信息学竞赛初一选拔赛一]纪中作业(c) (File IO): input:c.in output:c.out 时间限制: 1000 ms 空间限制: 262144 KB [题目 ...

  4. 2019.1.23 中山纪念中学之北大教授讲座

    long long ago 早已经听闻了在我们去中山纪念中学训练的过程中,北京大学信息学冬令营会在纪中举行.我们还期望着观摩一下这些来自全国各个信息强省强校的大佬们呢. day-3 三天前的下午,一大 ...

  5. 中山纪念中学集训日志

    7.31 下了一天的雨,坐了一天的车. 中山纪念中学,满目绿树朱瓦,历史感挺浓的. 想起了一年前,我兴致勃勃地看苏卿念的纪中培训日记,没想到一年后,我亲身来到了纪中. 在宿舍跟蚊帐搏斗了许久,真是剪不 ...

  6. 2019中山纪念中学夏令营-Day21[JZOJ]

    2019中山纪念中学夏令营-Day21[JZOJ] 提高组(B组模拟赛)Team_B (由于本人太弱,并没有订正完题目) (题解大部分是从官方题解文件上摘来的) 日常膜拜大神:じやゆん蒟蒻 正文部分: ...

  7. 中山纪念中学套题(1)

    哈哈哈,本博客的第一张,讲的就是我在中山纪念中学的一套普及组的题目. ----------------------------------------------------------------- ...

  8. 2019中山纪念中学夏令营-Day14 图论初步【dijkstra算法求最短路】

    Dijkstra是我学会的第一个最短路算法,为什么不先去学SPFA呢?因为我在luogu上翻到了一张比较神奇的图: 关于SPFA -它死了 以及网上还有各位大佬的经验告诉我:SPFA这玩意很容易被卡. ...

  9. 中山纪念中学培训15天总结

    比赛 2018/7/6-纪中某C组题[jzoj1192,jzoj1397,jzoj1736] 上来就集体爆零 2018/7/7-纪中某C组题[jzoj1494,jzoj1495,jzoj1496,jz ...

最新文章

  1. java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode
  2. svn仓库出现already locked error解决方法:cleanup
  3. 音视频技术开发周刊 | 174
  4. pythondockerapi_docker-py 用Python调用Docker接口的方法
  5. python如何导入图片imread_OpenCV 使用imread()函数读取图片的六种正确姿势
  6. Java 官方性能测试工具 JMH 简单入门
  7. 【Elasticsearch】 Full text queries query_string 等 字符串查询
  8. 程序设计与算法----递归之爬楼梯问题
  9. Linux内核深入理解定时器和时间管理(3):tick 广播 框架 和 dyntick
  10. Cisco交换机密码忘记重置
  11. 获取数据库链接Junit
  12. 图像处理自学(五):CAMERA驱动软件硬件架构V4L2
  13. 支持树莓派的路由器系统_真香!国产64位树莓派系统上手评测
  14. 新版gsp计算机系统全套资料,新版GSP对计算机系统的需求表
  15. reviewboard 介绍
  16. linux最好的mp4软件,【良心推荐】5款好用的MP4视频编辑器
  17. [吴恩达机器学习课程笔记] week four强化学习
  18. [附源码]计算机毕业设计JAVA景区门票系统
  19. MTK android系统源码修改快速上手
  20. 【术语】本地部署、云化部署、混合部署

热门文章

  1. 文献阅读:Noise Is Also Useful: Negative Correlation-Steered Latent Contrastive Learning
  2. 【爱奇艺】2019校招算法工程师笔试题
  3. 寻找女仆完美替身:7款智能扫地机器人擂台赛
  4. 医药电商政策有望松绑,市场或迎来爆发期
  5. STM32串口通信详解(嵌入式学习)
  6. 一篇文章带你了解Web主被动攻击手段
  7. tensorflow入门之---------图像大小调整
  8. 王者荣耀服务器维护9月27,王者荣耀体验服9月27日更新维护公告 S18赛季正式开启...
  9. 统计扣分加分java_再也不怕违章扣分了,驾照也能够加分,最高+21分!快来看怎么加...
  10. 图片怎么转成Excel表格文件?分享两个可以实现的方法