没有原题。。。

囧。。

[问题描述]

游戏规则是这样,有n(1<=n<=100)行格子,第一行由n个格子,第二行有n-1个格子,第三行由n-2个格子,……以此类推,第n行有1个格子。要求再这些格子上摆放棋子。摆放的时候要注意,每一个格子只能放一个棋子。同一行的格子摆放必须遵守从左至右的顺序,在一行内从左至右摆放时不能跳过某个格子来摆放。每一行放的棋子数不能超过上一行的棋子数。

输入文件(diagrams.in):仅1行,一个正整数n。

输出文件(diagrams.out):仅1行,方案总数。

样例:输入2,输出4。

(样例补充说明:不能一个棋子都不放)

。。

这题DP好吧,裸的DP题。

不过要特判一下如果输入1要输出1.

设f[i][j]表示放到第[i]行,前j列都放了棋子的方案数

很明显就可以得出状态转移方程。。

f[i][j]=sum(f[i-1][k])(j<i,k<=j)

f[i][i]=f[i][i-1];

然后以为很简单,就交了。

发现数据范围一只。

n<=100,好小啊。。

但是。。

n到30就爆long long了。

怎么办。

写了个高精度。。

终于过了233~

高精度不能写炸诶~

下面贴代码

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char f[][][];
int n;
void add(char a[],char b[])
{
int l;
int l1=strlen(a);
int l2=strlen(b);
int num1[],num2[];
memset(num1,,sizeof(num1));
memset(num2,,sizeof(num2));
for(int i=;i<=l1-;i++)
num1[l1--i]=a[i]-'';
for(int i=;i<=l2-;i++)
num2[l2--i]=b[i]-'';
if(l1>l2)l=l1;
else l=l2;
for(int i=;i<=l-;i++)
{
num1[i]+=num2[i];
if(num1[i]>=)num1[i+]++,num1[i]-=;
}
if(num1[l]!=)l++;
for(int i=l-;i>=;i--)
a[l--i]=num1[i]+;
}
void work(int x){
if(x==){printf("1\n");return;}
else
{
f[][][]='';
f[][][]='';
for(int i=;i<=n;i++)
{
for(int j=;j<i;j++)
{
for(int k=;k<=j&&(k<=(i-));k++)
{
if(strcmp(f[i][j],"")==)f[i][j][]='';
add(f[i][j],f[i-][k]);
}
}
for(int j=;j<strlen(f[i][i-]);j++)
f[i][i][j]=f[i][i-][j];
}
char ans[]="";
ans[]='';
for(int i=;i<=n;i++)
{
add(ans,f[n][i]);
}
printf("%s",ans);
}
}
int main(){
freopen("diagrams.in","r",stdin);
freopen("diagrams.out","w",stdout);
scanf("%d",&n);
work(n);
fclose(stdin);
fclose(stdout);
}

放棋游戏(NOIP模拟赛)(DP)的更多相关文章

  1. 【noip模拟赛5】细菌 状压dp

    [noip模拟赛5]细菌   描述 近期,农场出现了D(1<=D<=15)种细菌.John要从他的 N(1<=N<=1,000)头奶牛中尽可能多地选些产奶.但是如果选中的奶牛携 ...

  2. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  3. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

  4. NOIP模拟赛-2018.11.7

    NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...

  5. 2016-06-19 NOIP模拟赛

          2016-06-19 NOIP模拟赛 by coolyangzc 共3道题目,时间3小时 题目名 高级打字机 不等数列 经营与开发 源文件 type.cpp/c/pas num.cpp/c ...

  6. 2014-10-31 NOIP模拟赛

        10.30 NOIp  模拟赛   时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...

  7. 11/1 NOIP 模拟赛

    11.1 NOIP 模拟赛 期望得分:50:实际得分:50: 思路:暴力枚举 + 快速幂 #include <algorithm> #include <cstring> #in ...

  8. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  9. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

随机推荐

  1. 英文缩写SFR

    英文缩写为SFR,是Special Function Register(特殊功能寄存器)的缩写.

  2. Python学习之set集合

    set集合以{}保存一组可迭代对象,如列表,字符串,set集合本身.集合内的元素若有重复的,将自动去除重复元素 a=set([1,2,3]) print(a) b=set('hello python' ...

  3. rootfls(根操作系统)

    rootfs根文件系统,linux下的任何目录都是rootfs的一个路径 Files 文件 Directory   目录 FHS(文件层级标准)规定了linux发行标准,也就是一些固定的文件存储 文件 ...

  4. 笔记-scrapy-cookie

    笔记-scrapy-cookie传递 1.      scrapy cookie传递 1.1.    开始 与cookie相关的设置参数有两个: COOKIES_ENABLED 决定是否使用cooki ...

  5. Sql Server多种分页性能的比较

    一.前言 因为工作关系,遇到了非常大的数据量的分页问题,数据总共有8000万吧,这个显然不是简单的分页能够解决的,需要从多多方面考虑,从分表.分库等等.但是这个也让我考虑到了分页性能的问题,在不同数据 ...

  6. MyBatis---自动创建表

    该项目基于Maven实现 该项目实现了在项目启动时,对数据库表进行操作 源码下载 实现步骤: 1.向pom.xml文件添加maven依赖 <dependency> <groupId& ...

  7. laravel5.5artisan命令

    目录 1. 简介 2. 编写命令 2.1 构建自己的命令 2.2 闭包命令 3. 定义输入期望 4.I/O 命令 5. 注册命令 6. 调用命令 1. 简介 Artisan 是 Laravel 自带的 ...

  8. 《Cracking the Coding Interview》——第2章:链表——题目1

    2014-03-18 02:16 题目:给定一个未排序的单链表,去除其中的重复元素. 解法1:不花额外空间,使用O(n^2)的比较方法来找出重复元素. 代码: // 2.1 Remove duplic ...

  9. 自己搭建php服务器(可接受表单提交,并返回页面)

    0.概述 本demo实现以下功能: ①在html页面输入姓名和邮箱,点击提交(这里为get) ②服务器通过解析表单内容,返回对“姓名”和“邮箱”的一个欢迎页面 1.软件准备 ①xampp 作用:提供a ...

  10. 【Pascal's Triangle】cpp

    题目: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,R ...