hdu 1023 Train Problem II

题目连接

http://acm.hdu.edu.cn/showproblem.php?pid=1212

Train Problem II

Description

As we all know the Train Problem I, the boss of the Ignatius Train Station want to know if all the trains come in strict-increasing order, how many orders that all the trains can get out of the railway.

Input

The input contains several test cases. Each test cases consists of a number N(1<=N<=100). The input is terminated by the end of file.

Output

For each test case, you should output how many ways that all the trains can get out of the railway.

SampleInput

1
2
3
10

SampleOutput

1
2
5
16796

卡特兰数。。

$ f(n) = f(n-1)*(n*4-2)/(n-1)$

  1 #include<algorithm>
  2 #include<iostream>
  3 #include<cstdlib>
  4 #include<cstring>
  5 #include<cassert>
  6 #include<cstdio>
  7 #include<vector>
  8 #include<string>
  9 #include<map>
 10 #include<set>
 11 using std::cin;
 12 using std::max;
 13 using std::cout;
 14 using std::endl;
 15 using std::string;
 16 using std::istream;
 17 using std::ostream;
 18 #define sz(c) (int)(c).size()
 19 #define all(c) (c).begin(), (c).end()
 20 #define iter(c) decltype((c).begin())
 21 #define cls(arr,val) memset(arr,val,sizeof(arr))
 22 #define cpresent(c, e) (find(all(c), (e)) != (c).end())
 23 #define rep(i, j, n) for (int i = j; i < (int)(n); i++)
 24 #define fork(i, k, n) for (int i = (int)k; i <= (int)n; i++)
 25 #define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i)
 26 #define pb(e) push_back(e)
 27 #define mp(a, b) make_pair(a, b)
 28 struct BigN {
 29     typedef unsigned long long ull;
 30     static const int Max_N = 2010;
 31     int len, data[Max_N];
 32     BigN() { memset(data, 0, sizeof(data)), len = 0; }
 33     BigN(const int num) {
 34         memset(data, 0, sizeof(data));
 35         *this = num;
 36     }
 37     BigN(const char *num) {
 38         memset(data, 0, sizeof(data));
 39         *this = num;
 40     }
 41     void clear() { len = 0, memset(data, 0, sizeof(data)); }
 42     BigN& clean(){ while (len > 1 && !data[len - 1]) len--;  return *this; }
 43     string str() const {
 44         string res = "";
 45         for (int i = len - 1; ~i; i--) res += (char)(data[i] + '0');
 46         if (res == "") res = "0";
 47         res.reserve();
 48         return res;
 49     }
 50     BigN operator = (const int num) {
 51         int j = 0, i = num;
 52         do data[j++] = i % 10; while (i /= 10);
 53         len = j;
 54         return *this;
 55     }
 56     BigN operator = (const char *num) {
 57         len = strlen(num);
 58         for (int i = 0; i < len; i++) data[i] = num[len - i - 1] - '0';
 59         return *this;
 60     }
 61     BigN operator + (const BigN &x) const {
 62         BigN res;
 63         int n = max(len, x.len) + 1;
 64         for (int i = 0, g = 0; i < n; i++) {
 65             int c = data[i] + x.data[i] + g;
 66             res.data[res.len++] = c % 10;
 67             g = c / 10;
 68         }
 69         return res.clean();
 70     }
 71     BigN operator * (const BigN &x) const {
 72         BigN res;
 73         int n = x.len;
 74         res.len = n + len;
 75         for (int i = 0; i < len; i++) {
 76             for (int j = 0, g = 0; j < n; j++) {
 77                 res.data[i + j] += data[i] * x.data[j];
 78             }
 79         }
 80         for (int i = 0; i < res.len - 1; i++) {
 81             res.data[i + 1] += res.data[i] / 10;
 82             res.data[i] %= 10;
 83         }
 84         return res.clean();
 85     }
 86     BigN operator * (const int num) const {
 87         BigN res;
 88         res.len = len + 1;
 89         for (int i = 0, g = 0; i < len; i++) res.data[i] *= num;
 90         for (int i = 0; i < res.len - 1; i++) {
 91             res.data[i + 1] += res.data[i] / 10;
 92             res.data[i] %= 10;
 93         }
 94         return res.clean();
 95     }
 96     BigN operator - (const BigN &x) const {
 97         assert(x <= *this);
 98         BigN res;
 99         for (int i = 0, g = 0; i < len; i++) {
100             int c = data[i] - g;
101             if (i < x.len) c -= x.data[i];
102             if (c >= 0) g = 0;
103             else g = 1, c += 10;
104             res.data[res.len++] = c;
105         }
106         return res.clean();
107     }
108     BigN operator / (const BigN &x) const {
109         BigN res, f = 0;
110         for (int i = len - 1; ~i; i--) {
111             f *= 10;
112             f.data[0] = data[i];
113             while (f >= x) {
114                 f -= x;
115                 res.data[i]++;
116             }
117         }
118         res.len = len;
119         return res.clean();
120     }
121     BigN operator % (const BigN &x) {
122         BigN res = *this / x;
123         res = *this - res * x;
124         return res;
125     }
126     BigN operator += (const BigN &x) { return *this = *this + x; }
127     BigN operator *= (const BigN &x) { return *this = *this * x; }
128     BigN operator -= (const BigN &x) { return *this = *this - x; }
129     BigN operator /= (const BigN &x) { return *this = *this / x; }
130     BigN operator %= (const BigN &x) { return *this = *this % x; }
131     bool operator <  (const BigN &x) const {
132         if (len != x.len) return len < x.len;
133         for (int i = len - 1; ~i; i--) {
134             if (data[i] != x.data[i]) return data[i] < x.data[i];
135         }
136         return false;
137     }
138     bool operator >(const BigN &x) const { return x < *this; }
139     bool operator<=(const BigN &x) const { return !(x < *this); }
140     bool operator>=(const BigN &x) const { return !(*this < x); }
141     bool operator!=(const BigN &x) const { return x < *this || *this < x; }
142     bool operator==(const BigN &x) const { return !(x < *this) && !(x > *this); }
143     friend istream& operator >> (istream &in, BigN &x) {
144         string src;
145         in >> src;
146         x = src.c_str();
147         return in;
148     }
149     friend ostream& operator << (ostream &out, const BigN &x) {
150         out << x.str();
151         return out;
152     }
153 }A[101], B;
154 inline void init() {
155     A[1] = 1;
156     rep(i, 2, 101) {
157         B = 4 * i - 2;
158         A[i] = A[i - 1] * B / (i + 1);
159         B.clear();
160     }
161 }
162 int main() {
163 #ifdef LOCAL
164     freopen("in.txt", "r", stdin);
165     freopen("out.txt", "w+", stdout);
166 #endif
167     init();
168     std::ios::sync_with_stdio(false);
169     int n;
170     while (cin >> n) cout << A[n] << endl;
171     return 0;
172 }
View Code

 

转载于:https://www.cnblogs.com/GadyPu/p/4578972.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx自建CDN加速节点 实现DNS智能解析网站项目

如今&#xff0c;网站项目越来越多的会使用CDN加速&#xff0c;如果需要便捷一点的可以直接用第三方提供的CDN加速服务&#xff0c;比如百度CDN、七牛、又拍云、腾讯云、阿里云等等服务商都有提供这类服务。但是前提条件是需要一定的成本&#xff0c;以及网站域名是需要BA才可以…

matlab中获取view,ios 怎么获取一个view的位置

ios 怎么获取一个view的位置以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;ios 怎么获取一个view的位置打开appstore进入应用&#xff0c;右上角的分享按钮(从右往左数第二个)&#xff0c;拷…

eureka需要替换吗_Spring Cloud Alibaba迁移指南1:零代码从Eureka迁移到Nacos

作者&#xff1a;得少&#xff0c;校对&#xff1a;周立。在本号首发&#xff0c;欢迎转载。Spring Cloud官方宣布Spring Cloud Netflix进入维护状态&#xff0c;后续不再会有新的功能已成为事实。作为开发者&#xff0c;如何使用极简的方式替换Netflix相关组件成为首要解决的问…

JAVA TCP通信练习

2019独角兽企业重金招聘Python工程师标准>>> 1、Server端 package com.hhdys.serviceimpl;import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.…

微服务架构下的身份认证

从单体应用架构到分布式应用架构再到微服务架构&#xff0c;应用的安全访问在不断的经受考验。为了适应架构的变化、需求的变化&#xff0c;身份认证与鉴权方案也在不断的变革。面对数十个甚至上百个微服务之间的调用&#xff0c;如何保证高效安全的身份认证&#xff1f;面对外…

php缓存注入,利用Thinkphp 5缓存漏洞实现前台Getshell

原标题&#xff1a;利用Thinkphp 5缓存漏洞实现前台Getshell*本文原创作者&#xff1a;WindWing&#xff0c;属于FreeBuf原创奖励计划&#xff0c;禁止转载000 背景网站为了实现加速访问&#xff0c;会将用户访问过的页面存入缓存来减小数据库查询的开销。而Thinkphp5框架的缓存…

mac版小达人点读包怎么安装_小达人点读笔扩容实战:16G变128G

随着小达人点读笔可以点读的童书越来越多&#xff0c;笔的容量就是个尴尬的问题&#xff1a;是处理掉手头的16G容量的旧点读笔&#xff0c;重新再买32G容量的新点记笔吗&#xff1f;如果32G容量也不够用怎么办&#xff1f;官方可没有更大容量的点读笔了。删除原先的点读内容&am…

WorldWind源码剖析系列:可渲染对象类RenderableObject

RenderableObject是WorldWind中所有需要渲染的对象的父类&#xff0c;继承了接口IRenderable和Icomparable。其派生类体系如下所示。RenderableObject的成员如下所示。 RenderableObjectList也继承自RenderableObject。 接口Irenderable内部仅仅定义下面三个接口&#xff0c;分…

php table 下拉框,LayerUI的table 里面加 select 下拉框 – Fly社区-Mikel

先上效果图&#xff1a;直接上代码//添加样式&#xff1a;.table-select-icon{position:absolute;right:10px;line-height:34px;color:#d3d3d3}.table-select-selected dl{display:block}.table-select dl{position:absolute;left:0;padding:5px 0;z-index:999;min-width:100%;…

家里wifi网速越来越慢_家里的wifi信号不好?有了它再也不怕网速慢啦

夏天太热&#xff0c;就想宅在家里刷刷剧、打打游戏、看看新闻。可是网速却不好&#xff0c;看一会儿&#xff0c;卡一会儿&#xff0c;本来天气就热&#xff0c;这样更加烦躁&#xff01;这WiFi信号怎么会这么差&#xff1f;有什么好办法能解决这个问题呢&#xff1f;只要有了…

python文件操作实验总结,[干货分享]Python文件操作技巧总结

引言小伙伴们&#xff0c;今天给大家讲解一下python程序下的文件操作完整技巧梳理&#xff0c;都是笔者总结的干货。通过本文阅读&#xff0c;不仅可以带来生产力提升&#xff0c;也可以开发小脚本为生活带来乐趣。首先不知道大家对python有没有了解&#xff0c;不太会用的小伙…

7价 半导体掺杂_天津大学封伟团队:新型半导体二维原子晶体锗硅烷材料的带隙调控...

xxxxxxxxxxxx【研究背景】xxxx新型二维半导体原子晶体兼具原子级厚度、纳米级层状结构、极高的载流子迁移率&#xff0c;是构建未来高性能纳米光电器件的核心材料。带隙是二维半导体电子器件和光电子光器件中最重要的基本参数之一&#xff0c;是影响二维半导体电子器件开关比和…

vs2017怎么安装python包,vs2017安装pygame,vs2017安装python第三方包

vs2017有独立的python环境&#xff1b;所以想在vs2017开发python并使用第三方包&#xff0c;需要在vs2017中操作&#xff0c;完成第三方包的安装。一&#xff0c;查看vs2017有哪些版本的python&#xff0c;当前使用的是哪个版本工具--》Python--》Python环境可以看到vs2017包含…

基于opencv在摄像头ubuntu根据视频获取

&#xfeff;&#xfeff;基于opencv在摄像头ubuntu根据视频获取 1 工具 原料 平台 &#xff1a;UBUNTU12.04 安装库 Opencv-2.3 2 安装编译执行步骤 安装编译opencv-2.3 參考http://blog.csdn.net/xiabodan/article/details/23547847 提前下载OPENCV源代码包 官方&am…

Flask构建微电影(二)

第三章、项目分析、搭建目录及模型设计 3.1.前后台项目目录分析 微电影网站 前台模块后台模块前台&#xff08;home&#xff09; 数据模型&#xff1a;models.py表单处理&#xff1a;home/forms.py模板目录&#xff1a;templates/home后台&#xff08;admin&#xff09; 数据模…

Android Studio开发第四篇版本管理Git(下)

前面一片介绍了在as下如何关联远程仓库&#xff0c;这篇就介绍在开发过程中怎么应用。 提交Push 如果本地开发代码有改动了或者你觉得某功能做完了&#xff0c;你打算把改动代码提交到远程仓库&#xff0c;这个时候很简单&#xff0c; 还是在工具栏找到VSC箭头朝上的按钮。 这时…

容器大小_无根容器内部结构浅析

随着云计算的发展&#xff0c;容器变得越来越流行&#xff0c;同时也产生了实现容器的新方案&#xff0c;其中之一就是无根容器。本文介绍了无根容器的内部结构&#xff0c;并分析了无根容器网络组件中的漏洞。随着云计算的发展&#xff0c;容器变得越来越流行&#xff0c;同时…

php layout布局文件,layout(布局) - jQuery EasyUI中文文档 - EasyUI中文站

Layout(布局)使用$.fn.layout.defaults重写默认值对象。布局容器有5个区域&#xff1a;北、南、东、西和中间。中间区域面板是必须的&#xff0c;边缘的面板都是可选的。每个边缘区域面板都可以通过拖拽其边框改变大小&#xff0c;也可以点击折叠按钮将面板折叠起来。布局可以进…

Bootstrap系列 -- 11. 基础表单

表单主要功能是用来与用户做交流的一个网页控件&#xff0c;良好的表单设计能够让网页与用户更好的沟通。表单中常见的元素主要包括&#xff1a;文本输入框、下拉选择框、单选按钮、复选按钮、文本域和按钮等。其中每个控件所起的作用都各不相同&#xff0c;而且不同的浏览器对…