博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法竞赛训练指南2.1 计数方法
阅读量:5036 次
发布时间:2019-06-12

本文共 1032 字,大约阅读时间需要 3 分钟。

1.  O(n)方法求C(n,m)

    利用公式C(n,k+1)=C(n,k)*(n-k)/(k+1)

    模板:

#include 
#include
using namespace std;typedef unsigned long long LL;const int maxn=100005;LL n,m;LL C(){ if(m==0||n==m) return 1; if(m>n-m) m=n-m; LL ans,temp=1; for(LL i=1;i<=m;i++) { ans=temp*(n-i+1)/i; temp=ans; } return ans;}int main(){ ios::sync_with_stdio(false); int T; cin>>T; while(T--) { cin>>n>>m; cout<
<

2.  有重复元素的全排列,有k个元素,其中第i个元素有ni个,求全排列的个数

    见白书的细致讲解,书上面说的更清楚。

3.  可重复的选取的组合,有n个不同的元素,每个元素可以选多次,一共选k个元素,有多少种方法。

    想法:设第i个元素选xi个,问题就转化为了x1+x2+x3+...+xn=k的非负整数解有多少个,就相当于把k个元素分为n组,那么只需要再这些元素中插入n-1个板,然后再n-1+k当中找这n-1块板,那么结果就是C(n+k-1,n-1)=C(n-1+k,k);

4.  单色三角形:给定n个点,且没有三色共线,每两个点之间都用黑色或者红色的线段连接,求3条边同色的三角形数。

    想法:求同色的可以先求不同色的,每个非单色的三角形中,恰好有两个顶点连接两条异色边,而且有一个公共点的两条异色边总是唯一对应一个非单色三角形,因此如果第i个点连接了ai条红边,n-1-ai条黑边,则这些边属于ai*(n-1-ai)个非单色的三角形,每个非单色的三角形选了两次故还需要除以2,这样同色的也就求出来了。

 

    

转载于:https://www.cnblogs.com/jkzr/p/9621278.html

你可能感兴趣的文章
分享Java web 开发必游之路
查看>>
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题(转载)
查看>>
Bean的Scope
查看>>
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>
elasticsearch的安装
查看>>
__next__()
查看>>
爬取:中国大学排名
查看>>
聊天室(C++客户端+Pyhton服务器)_1.框架搭设
查看>>
UpdatePanel 内控件 更新“外的”控件【转】
查看>>
mybatis中&gt;=和&lt;=的实现方式
查看>>
Python面向对象03/继承
查看>>
java序列化和反序列化
查看>>
绝对定位
查看>>
flink源码编译(windows环境)
查看>>
dpkg 删除 百度网盘 程序
查看>>
服务器nginx安装
查看>>
std::nothrow
查看>>
rest-framework 分页器
查看>>
JQuery(一)安装&选择器 样式篇
查看>>