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, ...
随机推荐
- BaiduMap_SDK_DEMO_3.0.0_for_Xamarin.Android_by_imknown
2.4.2 已稳定, 同一时候已经放置到分支/Release 2.4.2了. 3.0.0 已开发完毕, 可是不推荐大家用于项目中, 请观望或者自己进一步调试. 个人感觉尽管3.0.0简化了开发, 可是 ...
- String的split
对于 http://10.13.30.22/svn/SVNRepository/UnChecked/Test 想要分割他就要用: String subContent[]=modelInfo.get ...
- 蓝桥杯软件学院webserver,android
- 前端编程提高之旅(六)----backbone实现todoMVC
乐帝当年学习backbone时.最開始是看官网todoMVC的实现.后来了解到requireJS便于管理JS代码.就对官网代码做了requireJS管理.但此时乐帝感觉此时的t ...
- java List<Map> 排序问题
Collections.sort(order_from_list, new Comparator<Map<Object, Object>>() { public int com ...
- ubuntu 搭建svn服务器
1.安装Subversion sudo apt-get install subversion 2.创建资源库 cd /home/username/ svnserve -d -r /home/usern ...
- C/S与B/S谁与争锋之我见
看到网上有些人在讨论C/S架构和B/S架构以及它们的发展趋势,后起之秀B/S是否真将取代C/S而存在?在发表我的观点之前,我们先来一起来回顾下C/S以及B/S. 一C/S 1.C/S概念 C/S是Cl ...
- windows phone (21) Grid元素的Background和Clip
原文:windows phone (21) Grid元素的Background和Clip Grid是唯一可以在内部定制单元格的panel类,我们可以在grid中定制单元格,然后通过grid.row和g ...
- 时间复杂度为O(nlogn)的LIS算法
时间复杂度为 n*logn的LIS算法是用一个stack维护一个最长递增子序列 如果存在 x < y 且 a[x] > a[y],那么我们可以用a[y]去替换a[x] 因为a[y]比较小 ...
- Foursquare 8.0 :聪明人给互联网公司上的流量转化课
今年 5 月上线的 Swarm 虽然应用制作精良,但不免让人怀疑是 Foursquare一次失败的互联网公司服务越界和用户忠诚度试水.但非常快这群聪明人让我们发现事情并没有这么简单:他们给互联网公司们 ...