2016HUAS_ACM暑假集训4D - 计数,排列
一个错排公式的基础应用。
大致题意:求n个数的错误排列方式。(每个都要错)
在这里先贴一下错排公式:D(1)=0;D(2)=1;D(n)=(n-1)*(D(n-1)+D(n-2))
它的推导也非常有意思,用的应该是递归的思想吧(个人猜测)。
Sample Input
2
3
Sample Output
1
2
这题注意两点:
1.长整型__int64或者long long
2.最好打一下表,防止超时
然后,然后就过了呗......
#include<iostream>
#include<cstdio>
using namespace std;
int N;
__int64 ans[];
//错排 D(1)=0;D(2)=1;D(n)=(n-1)*(D(n-1)+D(n-2))
void slove()
{
ans[]=;
ans[]=;
;i<=;i++)
ans[i]=(i-)*(ans[i-]+ans[i-]);
}
int main()
{
slove();
while(cin>>N)
printf("%I64d\n",ans[N]);
;
}
2016HUAS_ACM暑假集训4D - 计数,排列的更多相关文章
- 2016HUAS_ACM暑假集训2J - 今年暑假不AC
简单的贪心题.把节目的结束时间按升序排列,从第一个节目开始,寻找可以完全看完的节目. 这里用了结构体,所以要自己写排序方式. 总之,贪心的第一要义就是——排序! 本人新手,请体谅. #include& ...
- 2016HUAS_ACM暑假集训4C - 递推
题目大意:给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形. 这里我们可以这样看: 对于行:假如是m单位长度,则长度为1的矩形有m个,长度为2的矩形有m-1个......长度为m的只有1 ...
- 2016HUAS_ACM暑假集训4A - 递推
利用组合公式C(n,m)=C(n-1,m)+C(n-1,m-1).也就是从n个数里面选择m个数.按递增方式放在每一层循环. 杨辉三角+二项式定理,还真是挺有“意思”的一道题.说实话,非原创.见谅... ...
- 2016HUAS_ACM暑假集训4M - 基础DP
简单的0-1背包问题,大家都会做的.题意不想解释太多. 简述题目的案例及以几个关键 Sample Input 1 //测试组数T 5 10 ...
- 2016HUAS_ACM暑假集训4K - 基础DP
我不知道怎么用DP,不过DFS挺好用.DFS思路很明显,搜索.记录,如果刚好找到总价值的一半就说明搜索成功. 题目大意:每组6个数,分别表示价值1到6的物品个数.现在问你能不能根据价值均分. Samp ...
- 2016HUAS_ACM暑假集训4F - 数论
这个题目,如果没找到方向,确实有点一头雾水.但是如果你找对方向了,AC是分分钟的事.答案就是看n和m是否有除1之外的公约数. 简单证明:设n和m最大公约数不是1,假设为p.n和m总可以化为一个数乘以k ...
- 2016HUAS_ACM暑假集训4B - 递推
这种数学推理题目题意极其明显,在做的时候,可以多写几组,这样找起规律来会容易些.概括起来就是:题意简单暴力,案例毫无价值. 一个三角形最多可以把一个平面分成两部分,两个三角形最多是8(2+6)部分,而 ...
- 2016HUAS_ACM暑假集训3G - 还是畅通工程
最小生成树,题目简单.套的Prim模板,其他的题目比较有意义. Sample Input 3 //村庄个数1 2 1 ...
- 2016HUAS_ACM暑假集训3F - Jungle Roads
这个题目属于最小生成树问题,可以用Prim,也可以用Kruskal(还没试).题意简单直接,给你一个图,求出它最小生成树的权值. 题目最有趣的地方就是图的顶点是字母,稍微处理一下就好了. Sample ...
随机推荐
- centos添加硬盘
fdisk -l ## 这里是查看目前系统上有几块硬盘 Disk /dev/sda: 36.4 GB, 36401479680 bytes 255 heads, 63 sectors/track, 4 ...
- C++ 基础算法之二分查找
前提: 有序数组! int binary_search(int* a, int len, int goal) { ; ; while(low <= high) { ; if(a[middle] ...
- 最优雅,高效的javascript字符串拼接
这种方式是es6的语法.使用键盘1左边的那个字符 `` 拼接, 再加上js自带的模板引擎拼接字符串非常快速.这东西也没什么高深的,看几个例子就懂了. console.log(`<xml> ...
- Spark的Straggler深入学习(2):思考Block和Partition的划分问题——以论文为参考
一.partition的划分问题 如何划分partition对block数据的收集有很大影响.如果需要根据block来加速task的执行,partition应该满足什么条件? 参考思路1:range ...
- [SHELL] 修改xml的内容
解析和修改xml用python比较方便,但如果不方便使用python,可以用sed命令简单替换 例如,欲替换下面一行中的端口号的值: <param name="ftpPort" ...
- Android Studio下SlidingMenu的导入与基础使用
一.关于这个控件,其实我们现在很多app都在用,最简单的,你打开QQ,当看资料卡的时候,首先要侧拉一下,那个就是SlidingMenu 这几天查了很多资料,各种方法都试了,但是一直都没有成功,最后在一 ...
- jsp取得绝对路径的方法(避免请求转发的方式导致路径错误)
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+re ...
- Python学习路程-常用设计模式学习
本节内容 设计模式介绍 设计模式分类 设计模式6大原则 1.设计模式介绍 设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复 ...
- python sqlite 插入的数据含有变量,结果不一致
def insert(): conn = sqlite3.connect("sqlite.db") print "open database passed" t ...
- UE4 中Struct Emum 类型的定义方式 笔记
UE4 基础,但是不经常用总是忘记,做个笔记加深记忆: 图方便就随便贴一个项目中的STRUCT和 Enum 的.h 文件 Note:虽然USTRUCT可以定义函数,但是不能加UFUNCTION 标签喔 ...