jzoj3082. 【NOIP2012模拟11.1】骰子游戏
来源:互联网 发布:c语言exit函数头文件 编辑:程序博客网 时间:2024/06/08 13:36
题目
滚骰子是一件有益身心健康的运动,因此骰子游戏可是一个很受年轻人欢迎的游戏。
现在先介绍一下这个闻名遐迩的骰子游戏吧。
首先是主角:骰子。骰子就是很普通的骰子:骰子有六个面,分别标号1到6,三对面上的数字之和均为7。以下是骰子的一个图示。
然后我们介绍这个游戏的地图:一个R*C的网格图。
骰子一开始的状态如上图所示(即上面为 1,下面为 6,左面为 4,右面为 3,前
面为 2,后面为 5),且位置在左上角。
然后重头戏来了,你需要的操作就是滚动骰子。滚动骰子当然是有轨迹的。你需要从左到右滚动到右端,然后向下滚动一格然后在向左滚动到左端,再向下一格,如此反复…直到最下面一行为止。
游戏的目的就是请你计算出骰子到达每个格点时,骰子上方的数字之和。
Input
第一行包含两个整数 R 和 C。
Output
输出仅一行,表示表示数字之和。
Sample Input
3 2
Sample Output
19
Hint
对于50%的数据1<=R,C<=100
对于100%的数据 1<=R,C<=100000
样例 1 经过每个格子时骰子上面的数字依次为:1 4 5 1 3 5。
分析
滚骰子要一行行滚,对于每行有循环,所以可以O(n)解决。
代码
#include<cmath>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>#include<queue>using namespace std;long long n,m,ans,a[6]={1,6,2,5,4,3};void gun1(){ long long t=a[0]; a[0]=a[4]; a[4]=a[1]; a[1]=a[5]; a[5]=t; }void gun2(){ long long t=a[0]; a[0]=a[5]; a[5]=a[1]; a[1]=a[4]; a[4]=t; }void gun3(){ long long t=a[0]; a[0]=a[3]; a[3]=a[1]; a[1]=a[2]; a[2]=t;}int main(){ scanf("%lld%lld",&n,&m); m--; for (int i=1;i<=n;i++) { ans+=a[0]; ans+=(a[0]+a[1]+a[2]+a[3])*floor(m/4); if (i%2) { for(int i=1;i<=m%4;i++) { gun1(); ans+=a[0]; } } else { for(int i=1;i<=m%4;i++) { gun2(); ans+=a[0]; } } gun3(); } printf("%lld",ans); return 0;}
1 0
- JZOJ3082. 【NOIP2012模拟11.1】骰子游戏
- jzoj3082. 【NOIP2012模拟11.1】骰子游戏
- 【NOIP2012模拟11.1】骰子游戏
- 【JZOJ3082】骰子游戏
- 【NOIP2012模拟10.31】掷骰子
- 【NOIP2012模拟10.31】掷骰子
- JZOJ3072. 【NOIP2012模拟10.31】掷骰子
- JZOJ【3072】【NOIP2012模拟10.31】掷骰子
- 3033. 【NOIP2012模拟10.17】石子游戏
- 高中OJ3033【NOIP2012模拟10.17】石子游戏
- 高中OJ3046. 【NOIP2012模拟10.23】游戏
- 【程序12】模拟掷骰子游戏
- 模拟骰子
- 模拟骰子
- 16.10.4 C:3046. 【NOIP2012模拟10.23】游戏
- 骰子游戏
- 【NOIP2012模拟11.1】塔(加强)
- 【NOIP2012模拟11.1】塔(加强)
- 需要思考人生了
- 指针与函数
- poj1260 Pearls
- 【IMPDP】使用 TRANSFORM选项去掉表空间和存储子句
- 关于希尔排序的整理
- jzoj3082. 【NOIP2012模拟11.1】骰子游戏
- 《第一行代码》复习二
- vijos1883 月光的魔法
- 快速排序(quicksort)
- poj 2031 Building a Space Station
- cookie和session关系
- 【论文学习笔记】Joint Cascade Face Detection and Alignment
- 1031. 查验身份证(15)
- 使用hubble.net实施全文搜索笔记