博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51nod 1293:球与切换器
阅读量:6948 次
发布时间:2019-06-27

本文共 1896 字,大约阅读时间需要 6 分钟。

题目来源: 
基准时间限制:1 秒 空间限制:131072 KB 分值: 80 
 收藏
 取消关注
有N行M列的正方形盒子。每个盒子有三种状态0, -1, +1。球从盒子上边或左边进入盒子,从下边或右边离开盒子。规则:
如果盒子的模式是-1,则进入它的球从下面出去。(方向变为向下)
如果盒子的模式是+1,则进入它的球从右面出去。 (反向变为向右)
如果盒子的模式是0, 则进入它的球方向不变。从上面进入的,从下面出去,从左面进入的,从右面出去。
球离开一个盒子,这个盒子的模式切换为相反数。已知,每个盒子的状态,扔k个球,它们都从左上角那个盒子的上面进入(方向向下),问最终有几个球从右下角的盒子的下边出去。
(可以理解维球一个一个放,等待的时间足够长,不会有两个球同时进入一个盒子的情形)本题由Javaman翻译。
Input
第1行:包括3个数M, N, K中间用空格分隔,M,N 为盒子的宽度和高度,K为球的数量(1 <= M, N <= 1000, 1 <= K <= 10^18)。第2 - N + 1行:每行M个数(-1, 0 或 1),表示对应的模式。
Output
输出1个数,对应最终有有多少个球从右下角的盒子的下边出去。
Input示例
3 2 4-1 0 -11 0 0
Output示例
1

经过该切换器的球的总量是k,发现如果是该位置的值是1,那么会有(k+1)/2的球像右去,剩下的球向下去。如果该位置的值是-1,那么会有(k+1)/2的球像下去,剩下的球向右去。

最后求右下角的位置球向下的数量。

代码:

#include 
#include
#include
#include
#include
#include
#pragma warning(disable:4996)using namespace std;int m, n;long long k;int num[1005][1005];long long val[1005][1005][2];//val[x][y][0]表示位置x,y去往下面的球的数量。val[x][y][1]表示位置x,y去往右面的球的数量int main(){ //freopen("i.txt", "r", stdin); //freopen("o.txt", "w", stdout); int i, j; long long temp; scanf("%d%d%lld", &m, &n, &k); memset(val, 0, sizeof(val)); for (i = 1; i <= n; i++) { for (j = 1; j <= m; j++) { scanf("%d", &num[i][j]); if (i != 1 || j != 1) { temp = val[i - 1][j][0] + val[i][j - 1][1]; if (num[i][j] == 0) { val[i][j][0] = val[i - 1][j][0]; val[i][j][1] = val[i][j - 1][1]; } else if (num[i][j] == 1) { val[i][j][1] = (temp + 1) / 2; val[i][j][0] = temp / 2; } else { val[i][j][0] = (temp + 1) / 2; val[i][j][1] = temp / 2; } } else { if (num[1][1] == 0) { val[1][1][0] = k; val[1][1][1] = 0; } else if (num[1][1] == 1) { val[1][1][1] = (k + 1) / 2; val[1][1][0] = k / 2; } else { val[1][1][0] = (k + 1) / 2; val[1][1][1] = k / 2; } } } } printf("%lld\n", val[n][m][0]); return 0;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/lightspeedsmallson/p/4899523.html

你可能感兴趣的文章
Android闹钟源代码
查看>>
const使用摘要
查看>>
1.cocos2dx 3.2环境结构
查看>>
你知道什么是Grunt么?
查看>>
Java堆栈详解
查看>>
Hadoop入门进阶课程6--MapReduce应用案例
查看>>
SQL Server 2014里的IO资源调控器
查看>>
.NET足球赛事资料数据库平台SmartLottery开源发布——全球足球联赛应有尽有
查看>>
Eamcs ditaa基于字符图形产生的图像上
查看>>
Only the original thread that created a view hierarchy can touch its views.
查看>>
LeetCode手记-Add Binary
查看>>
对DNSPOD添加域名解析的一些见解
查看>>
vim添加删除多行注释
查看>>
在caffe中增加和convolution相同的层
查看>>
Java设计模式(四) 装饰 代理模式
查看>>
patch与diff的恩怨
查看>>
蓝桥杯——先进的多说好树遍历
查看>>
Java系列笔记(4) - JVM监控与调优
查看>>
ORACLE工作原理小结
查看>>
LeetCode - Populating Next Right Pointers in Each Node
查看>>