UVALive 6469 Deranged Exams (排列:力绝对是无辜的高中知识啊)
标题手段 :
给你个n([1,17])表达n无论从数据结构。然后n个对这些术语的定义,让你对这些术语和定义对号入座(相当于进行连线,A术语连A术语的定义)。然后一个
k([0,n])。问你至少前k个术语定义相应错的总共同拥有多少种。
起先我也不怎么会,忘完了,后来看别人的题解。可能我语文真的不怎么好,不是非常能理解。然后问的别人...然后xxx给我说我有写个题解的必要了 so...
就是高中排列组合,至少前k个连错的方案总共同拥有多少种。由于假设直接依照题意来,一般都非常麻烦。全部就反正来,用【总数 - 至多有k个正确的方案数】
然后嘛。一般都是有重的,比方第二个例子 n=7 k=3的时候,就是至多有三个连对。
当我们选一个的时候是C(3,1)*A(6,6) 由于选1的时候 后面是乱排的 所以可能出现2 也对。这样和 选2 的时候 1 也对是反复的 如此的还有 3 2, 2 3。1 3。3 1
就相当于C(3,2)*A(5,5)的情况。 所以用C(3,1)*A(6,6)-C(3,2)*A(5,5) 可是,由于是 1 2 和2 1 是等效的,所以C(3,3)没有反复,减去C(3,2)时同一时候多减了C(3,3)因此要加上 对其它k 依次类推
code:
//#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long LL;
LL c[20][20];
LL a[20],ans;
int n,k;
void init()
{
a[0]=a[1]=1;
c[1][0]=c[1][1]=1;
for(int i=2;i<=17;i++)
{
a[i]=a[i-1]*i;
c[i][i]=1;
c[i][0]=1;
for(int j=1;j<i;j++)
c[i][j]=c[i-1][j]+c[i-1][j-1];///C(n,m)=C(n-1,m)+C(n-1,m-1)
}
}
int main()
{
int p,pp;
init();
scanf("%d",&p);
while(p--)
{
scanf("%d%d%d",&pp,&n,&k);
LL ans=a[n];
for(int i=1;i<=k;i++)
{
if(i&1)
ans-=c[k][i]*a[n-i];
else
ans+=c[k][i]*a[n-i];
}
printf("%d %lld\n",pp,ans);
}
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
UVALive 6469 Deranged Exams (排列:力绝对是无辜的高中知识啊)的更多相关文章
- UVaLive 7360 Run Step (排列组合,枚举)
题意:给定一个数 n ,表示一共有 n 步,然后你可以迈一步也可以迈两步,但是左腿和右腿的一步和两步数要一样,并且两步数不小于一步数,问你有多少种方式. 析:虽然是排列组合,但还是不会做.....水啊 ...
- UVa 12712 && UVaLive 6653 Pattern Locker (排列组合)
题意:给定 一个n * n 的宫格,就是图案解锁,然后问你在区间 [l, r] 内的所有的个数进行组合,有多少种. 析:本来以为是数位DP,后来仔细一想是排列组合,因为怎么组合都行,不用考虑实际要考虑 ...
- 排列组合的实现(js描述)
组合的实现 排列组合描述和公式 犹记得高中数学,组合表示C(m, n),意思为从集合m,选出n个数生成一项,总共有多少个项的可能?组合是无序的,排列是有序的.所以排列的项数量多于组合 排列A(n,m) ...
- leetcode 刷题(数组篇)26题 删除有序数组中的重复值 (双指针)
题目描述 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额 ...
- [ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果
这里我借鉴了,上周比较火的一个前端文章,人家用js去写的,地址 自己用wpf也写了一个,但是它的 粒子比较,然后连线算法真的很差,他创建了一个加入鼠标点的集合,2个集合进行比较,并且粒子会向鼠标靠近 ...
- Python3内置函数——reversed() = 翻转我的世界
认识reversed单词 reversed 英[rɪ'vɜ:st] 美[rɪ'vɜst] adj. 颠倒的:相反的:(判决等)撤销的 v. 颠倒(reverse的过去式和过去分词):翻转 help(r ...
- TeamWork#1,Week 5,Suggestions for Team Project
我们团队联系到了我们六班的直系学长,并向他咨询了软件工程基础这门课的团队项目相关的问题.他们团队的名字命名为Z-XML,团队中的几个学长也都是我平时所熟识的.虽然学长已经大四,忙着考研工作等各种事务, ...
- [LeetCode] 31. Next Permutation ☆☆☆
Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...
- 圣思源Java视频36节练习源码分享(自己的190+行代码对比老师的39行代码)
题目: * 随机生成50个数字(整数),每个数字范围是[10,50],统计每个数字出现的次数 * 以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来, * 如果某个数字出现次数为0, ...
随机推荐
- Vagrant - 百度百科
http://wapbaike.baidu.com/view/9201587.htm?ssid=0&from=844b&uid=3151E6C0905477A13653132D762B ...
- curl的封装
首先要搭建一个httpserver,这里採用tomcat6为例: 过程:新建一个Servlet,并使用tomcat的默认port号8080监听,最后写一个jsp来測试能否够訪问该server 1)新建 ...
- [leetcode]3 Sum closest
问题叙述性说明: Given an array S of n integers, find three integers in S such that the sum is closest to a ...
- Spring IOC及AOP学习总结
一.Spring IOC体系学习总结: Spring中有两个容器体系,一类是BeanFactory.还有一类是ApplicationContext.BeanFactory提供了基础的容器功能.Appl ...
- 数据库连接技术之OLE DB
之前的博客介绍了ODBC和JDBC.这次简单的介绍一下OLE DB.ODBC的总结不知道是没贴到博客上还是不在这个博客上,我再找找,没有的话我再补充到时候.好了.開始吧. 回想 之前呢介绍过了ODBC ...
- Android 动态显示和隐藏软键盘
** * 动态设置软盘的显示和隐藏 * @author JPH */ public class MainActivity extends Activity implements OnClickList ...
- An Overview of Complex Event Processing
An Overview of Complex Event Processing 复杂事件处理技术概览(一) 翻译前言:我在理解复杂事件处理(CEP)方面一直有这样的困惑--为什么这种计算模式是有效的, ...
- C# 32位程序访问64位系统注册表
原文:C# 32位程序访问64位系统注册表 我的上一篇文章已经阐述了“32位程序和64位程序在64位平台上读\写注册表的区别”,那么接下来将要回答上篇所留下来的一个问题:32位程序如何访问64位系统注 ...
- 远程连接到vultr vps的mysql服务器
实验环境 vultr centos 6.7 x64 1. 首先要打开远程 vps的3306端口用于 mysql的连接 修改/etc/sysconfig/iptables 文件,添加3306端口的支持 ...
- jquey :eq(1)
$("#div_Goods .datagrid-row .numberbox:eq(1)") $("#div_Goods .datagrid-row .numberbox ...