【u240】棋子放置
Time Limit: 1 second
Memory Limit: 128 MB
小虎刚刚上了幼儿园,老师让他做一个家庭作业:首先画3行格子,第一行有三个格子,第二行有2个格子,第三行有1个格子。
每行的格子从左到右可以放棋子,但要求除第一行外,每行放的棋子数不能超过上一行的棋子。玩了一会儿,小虎的哥哥大虎
:这个作业有很多种摆放法,我想找到,但我不知道有多少种方案,你能帮助我吗?
大虎是学校信息学集训队的,立刻想到用计算机来解决这个问题,并很快有了解答:13。
第二天他把问题拿到学校,并说如果第一行有N个格子,第二行有N-1个格子,…,第N行有1个格子,怎么办?现在请你一块来帮助
他解决这个难题。
数据范围:
30%数据:1<=n<=12
50%数据:1<=n<=30
100%数据:1<=n<=100
【输入格式】
仅一行,一个正整数N。
【输出格式】
一行,方案总数。
【数据规模】
Sample Input1
2
Sample Output1
4
Sample Input2
3
Sample Output2
13
【样例说明】
【题目链接】:http://noi.qz5z.com/viewtask.asp?id=u240
【题意】
【题解】
除非是最上面那一层;
否则每一行不能是空的;
设f[i][j]表示第i行第j列以下的合法方案数;
有递推公式
f[i+1][j..i+1]+=f[i][j];
写个高精度.
最后累加f[n][1..n]就好
【完整代码】
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%lld",&x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 110;
struct bignum
{
int a[N],len;
bignum()
{
memset(a,0,sizeof a);
len = 1;
}
};
int n;
bignum f[N][N];
bignum jia(bignum a,bignum b)
{
bignum c;
int &len = c.len;
int lena = a.len,lenb = b.len;
len = max(lena,lenb);
int x = 0;
rep1(i,1,len)
{
c.a[i] = c.a[i]+a.a[i]+b.a[i]+x;
x = c.a[i]/10;
c.a[i]%=10;
}
while (x>0)
{
c.a[++len] = x;
x = c.a[len]/10;
c.a[len]%=10;
}
return c;
}
int main()
{
//freopen("F:\\rush.txt","r",stdin);
rei(n);
f[1][1].a[1] = 1;
if (n>1)
f[1][0].a[1] = 1;
rep1(i,1,n-1)
{
if (i==n-1)
rep1(j,1,n)
f[i+1][j] = jia(f[i+1][j],f[i][0]);
else
rep1(j,0,i+1)
f[i+1][j] = jia(f[i+1][j],f[i][0]);
rep1(j,1,i)
rep1(k,j,i+1)
f[i+1][k] = jia(f[i+1][k],f[i][j]);
}
bignum ans;
rep1(i,1,n)
ans = jia(ans,f[n][i]);
int len = ans.len;
rep2(i,len,1)
printf("%d",ans.a[i]);
return 0;
}
【u240】棋子放置的更多相关文章
- Ex 6_5棋子放置问题_第八次作业
题目貌似有问题 (b) 子问题定义: 设maxValue[i][j]为棋盘的前i行中最后一行为i时第i行按照第j种放置方式放置时得到的最大覆盖值,comp[i][j]为第i种放置方式与第j种放置方式是 ...
- 完全自制的五子棋人机对战游戏(VC++实现)
五子棋工作文档 1说明: 这个程序在创建初期的时候是有一个写的比较乱的文档的,但是很可惜回学校的时候没有带回来……所以现在赶紧整理一下,不然再过一段时间就忘干净了. 最初这个程序是受老同学所托做的,一 ...
- C语言实现五子棋简单功能
/******************************************************************** C-4.29-1: 实现五子棋游戏 操作说明:用方向键或者& ...
- POJ 1321-棋盘问题(DFS 递归)
POJ 1321-棋盘问题 K - DFS Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I6 ...
- [HDOJ 5155] Harry And Magic Box
题目链接:HDOJ - 5155 题目大意 有一个 n * m 的棋盘,已知每行每列都至少有一个棋子,求可能有多少种不同的棋子分布情况.答案对一个大素数取模. 题目分析 算法1: 使用容斥原理与递推. ...
- 利用开源HTML5引擎lufylegend.js结合javascript实现的五子棋人机对弈
前言 本文主要介绍利用开源引擎 lufylegend.js开发基于Html5的游戏--五子棋,主要叙述其详细开发过程. 游戏规则 玩过五子棋的都应该知道五子棋的规则,这里就简单介绍其规则. 1 ...
- 2015苏州大学ACM-ICPC集训队选拔赛(3)题解
第三次校赛链接:快戳我 1001 考虑前半组数,我们只需要标记每个数出现的次数,再加上这个数之前的数出现的次数,即为这个数在m次操作中总共需要翻转的次数(即求前缀和),再根据翻转的奇偶性判断最后这个位 ...
- JAVA课设---五子棋
1.团队博客链接 JAVA课设-五子棋-团队博客 2.个人负责模块: ①对鼠标事件的处理 , 此模块需处理五子棋的放置问题.颜色转换问题.以及当五子连线时弹出窗口显示结果. ②对MainFrame中主 ...
- [Swift]LeetCode51. N皇后 | N-Queens
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...
随机推荐
- Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包)
如果你用Android Studio开发,并且要用其他项目作为library,这个问题是很容易出现的.出现这个问题的原因是包的重复引用,意思就是在你自己的项目中引用了某个包,而被你作为library的 ...
- 【前端统计图】echarts实现属性修改
原图: 原代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- j2ee,jsp,servlet文件下载server端
1.getOutputStream() has already been called for this response 报错的原因: 使用tomcat容器调用response.getOutputS ...
- 常用的织梦dedecms安全设置集合整理
织梦系统用户很多,被发现的漏洞也就相对很多,所以网站安全需要做好,很多所谓的“黑客”都是用工具来扫描入侵,厉害点的人是不屑来黑我们的小网站的,所以在我们不是专业维护人员情况下,做好一般的安全防护就可以 ...
- 【Codeforces Round #442 (Div. 2) B】Nikita and string
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举中间那一段从哪里开始.哪里结束就好 注意为空的话,就全是a. 用前缀和优化一下. [代码] #include <bits/ ...
- [求助]linux同一目录可否挂载多个数据盘?
https://bbs.aliyun.com/read/281222.html?pos=20
- 11.1 Android显示系统框架_framebuffer原理及改进
1. Android显示系统框架Android Graphic UI with GPU Hardware Accelerationhttps://community.nxp.com/docs/DOC- ...
- 【u251】心灵的抚慰
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 病毒问题解决后,神牛们的心灵久久不能平静.他可以从一个程序联想到一些相似的程序.比如从程序1联想到2, ...
- [React] Setup 'beforeunload' listener
In this lesson we'll show how to take a beforeUnload call and convert it to a declarative React Comp ...
- [AngularJS NG-redux] Handle Asynchronous Operations with Middleware
Invariably the question that comes up when talking about Redux is how does one handle asynchronous o ...