51nod 1293:球与切换器

第1行:包括3个数M, N, K中间用空格分隔,M,N 为盒子的宽度和高度,K为球的数量(1 <= M, N <= 1000, 1 <= K <= 10^18)。
第2 - N + 1行:每行M个数(-1, 0 或 1),表示对应的模式。
输出1个数,对应最终有有多少个球从右下角的盒子的下边出去。
3 2 4
-1 0 -1
1 0 0
1
经过该切换器的球的总量是k,发现如果是该位置的值是1,那么会有(k+1)/2的球像右去,剩下的球向下去。如果该位置的值是-1,那么会有(k+1)/2的球像下去,剩下的球向右去。
最后求右下角的位置球向下的数量。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
51nod 1293:球与切换器的更多相关文章
- 51nod 1293 球与切换器 | DP
51nod 1293 球与切换器 | DP 题面 有N行M列的正方形盒子.每个盒子有三种状态0, -1, +1.球从盒子上边或左边进入盒子,从下边或右边离开盒子.规则: 如果盒子的模式是-1,则进入它 ...
- 51Nod 1293 球与切换器 DP分类
基准时间限制:1 秒 空间限制:131072 KB 有N行M列的正方形盒子.每个盒子有三种状态0, -1, +1.球从盒子上边或左边进入盒子,从下边或右边离开盒子.规则: 如果盒子的模式是-1,则 ...
- 【51NOD-5】1293 球与切换器
[算法]DP [题解]f[i][j][0]表示在i,j位置往下走的球数,f[i][j][1]表示在i,j位置往右走的球数,经过i,j的球若为-1则(num+1)/2往下,其余往右.+1类似. 转移见代 ...
- KVM(多电脑切换器)
KVM:Keyboard Video Mouse的缩写.KVM 交换机通过直接连接键盘.视频和鼠标 (KVM) 端口,让您能够访问和控制计算机.KVM 技术无需目标服务器修改软件.这就意味着可以在 W ...
- C# 方法调用的切换器 Update 2015.02.02
在编写应用程序时,我们经常要处理这样的一组对象,它们的类型都派生自同一个基类,但又需要为每个不同的子类型应用不同的处理方法. 通常的做法,最简单的就是用很多 if-else 去判断各自的类型,如下面的 ...
- KVM切换器
所谓KVM,就是Keyboard.Video.Mouse的缩写,正式的名称为多计算机切换器.简单的说,就是一组键盘.显示器和鼠标,控制2台.4 台.8台.16台甚至到4096台以上的计算机主机. KV ...
- Android 自学之网格试图(GridView)和图片切换器(ImageSwitcher)功能和用法
网格试图(GridView)用于在界面上按行,列分布的方式来显示多个组件. GridView和ListView有共同的父类:AbsListView,因此GridView和ListView具有一定的相似 ...
- Android应用开发学习之图片切换器
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 如果我们要实现类似Windows的照片查看器切换上一张下一张照片的效果,可以使用图片切换器ImageSwitcher ...
- 文本切换器(TextSwitcher)的功能和用法
TextSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件的同时使用动画效果.与ImageSwitcher相似的是,使用TextSw ...
随机推荐
- .Net使用SharpZip解压缩文件
最近,项目中使用到了上传压缩文件,文件上传到服务器后,肯定要解压,取出其中的文件才能使用,在这里做一个小结,Get这个新技能. 首先在使用NuGet管理程序在项目中添加引用ICSharpCode.Sh ...
- python中提取位图信息(AttributeError: module 'struct' has no attribute 'unstack')
前言 今天这篇博文有点意思,它是从一个例子出发,从而体现出在编程中的种种细节和一些知识点的运用.和从前一样,我是人,离成神还有几十万里,所以无可避免的出现不严谨的地方甚至错误,请酌情阅读. 0x00 ...
- Codeforces 598E:Chocolate Bar
E. Chocolate Bar time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- TP-Link TL-WR841N v14 CVE-2019-17147 缓冲区溢出漏洞分析笔记v2018.12.31
0x00 背景 Httpd服务中的缓冲区溢出漏洞 复现参考文章https://www.4hou.com/posts/gQG9 Binwalk -Me 解压缩 File ./bin/busybox文件类 ...
- linux 串口 拼帧处理
串口每次read数据可能不是完整的数据,参照网上的代码,写了拼帧的代码#include <stdio.h> #include <termios.h> #include < ...
- Gridview的stretchMode详解附自动宽度
<GridView android:id="@+id/grid" android:layout_width="fill_parent" android:l ...
- Element 表单校验不消失问题
由于不好的命名习惯,所以我的:rule :ref :model命名就是写了改,改了再写. 直到今天出现了这个毛病就是 “表单验证不消失” 比方说这里的 ‘密码不能为空’,在我已经输入了数字 ...
- 图的数据结构的实现与遍历(DFS,BFS)
//图的存储结构:const int MAXSIZE = 10;//邻接矩阵template<class T>class MGraph {public: MGraph(T a[], ...
- Java中很少用的CopyOnWriteArrayList
类注释 /** * A thread-safe variant of {@link java.util.ArrayList} in which all mutative * operations ({ ...
- centos6 初次安装成功,未显示eth0网卡的信息
https://www.cnblogs.com/yecao8888/p/6364830.html