分析

由于每个选手的得分独立,考虑按照选手的最高得分降序排序

如果当前枚举到选手\(i\),首先记录\(o_i\)表示在选手\(i\)之前最小得分不低于选手\(i\)的最高得分

(必选,等于必选当且仅当编号比选手\(i\)的原编号小)

然后再枚举从这些必选的当中选择的数量\(j\),那么统计的答案即为\(C_{o_i}^{j}\times C_{i-1-o_i}^{t-j-1}\)

注意枚举的\(k\)也有限制条件


代码

#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
const int N = 51;
typedef long long lll;
struct rec {
int rk, mn, mx;
} b[N];
int m, n, a[N], S, T;
lll c[N][N], ans;
inline signed iut() {
rr int ans = 0, f = 1;
rr char c = getchar();
while (!isdigit(c)) f = (c == '-') ? -f : f, c = getchar();
while (isdigit(c)) ans = (ans << 3) + (ans << 1) + (c ^ 48), c = getchar();
return ans * f;
}
inline signed min(int a, int b) { return a < b ? a : b; }
inline signed max(int a, int b) { return a > b ? a : b; }
bool cmp(rec x, rec y) { return x.mx != y.mx ? x.mx > y.mx : x.rk < y.rk; }
signed main() {
freopen("ctsc.in", "r", stdin);
freopen("ctsc.out", "w", stdout);
m = iut(), c[0][0] = 1;
for (rr int i = 1; i <= m; ++i) a[i] = iut();
n = iut();
for (rr int i = 1; i <= n; ++i) c[i][0] = 1;
for (rr int i = 1; i <= n; ++i)
for (rr int j = 1; j <= i; ++j) c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
for (rr int i = 1; i <= n; ++i) {
rr int MN = 0, MX = 0;
for (rr int j = 1; j <= m; ++j) {
rr char c = getchar();
while (c != 'N' && c != 'Y') c = getchar();
if (c == 'N')
continue;
if (a[j] < 0)
MX -= a[j];
else
MN += a[j], MX += a[j];
}
b[i] = (rec){ i, MN, MX };
}
S = iut(), T = iut(), sort(b + 1, b + 1 + n, cmp);
for (rr int i = 1; i <= n; ++i) {
rr int o = 0;
for (rr int j = 1; j < i; ++j)
if (b[j].mn > b[i].mx || (b[j].mn == b[i].mx && b[j].rk < b[i].rk))
++o;
if (o >= S)
continue;//必选超过S人一定不行
for (rr int j = max(T + o - S, 0); j <= min(o, T - 1); ++j) ans += c[o][j] * c[i - 1 - o][T - j - 1];//上界很容易理解,下界因为oi-j>s-t说明我没有的必选超过前s个没有被选择的个数说明不合法
}
return !printf("%lld", ans);
}

#排列组合#C 模拟比赛的更多相关文章

  1. Codeforces Round #558 (Div. 2)C(计算几何,排列组合,模拟)

    #include<bits/stdc++.h>using namespace std;typedef struct{ double k,b;}node;node k[1000007];bo ...

  2. 10.1 csp-s模拟测试(b) X国的军队+排列组合+回文

    T1 X国的军队 贪心,按$b-a$的大小降序排序,然后就贪心吧 #include<iostream> #include<cstdio> #include<algorit ...

  3. csp-s模拟测试10.1(b)X 国的军队,排列组合, 回文题解

    题面:https://www.cnblogs.com/Juve/articles/11615883.html X 国的军队: 好像有O(T*N)的直接贪心做法 其实多带一个log的二分也可以过 先对所 ...

  4. .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)

    今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinatorics组件的使用情况,其实这个组件我5年前就开始用了,非常方便,麻雀虽小五脏俱全.所以一直非常喜欢,才写了几 ...

  5. Day4:T3搜索 T4数学题排列组合

    T3:搜索 很出名的题吧,费解的开关 同T2一样也是一题很考思考的 附上题解再解释吧: 对于每个状态,算法只需要枚举第一行改变哪些灯的状态,只要第一行的状态固定了,接下来的状态改变方法都是唯一的:每一 ...

  6. 自然语言处理(NLP) - 数学基础(1) - 排列组合

    正如我在<自然语言处理(NLP) - 数学基础(1) - 总述>一文中所提到的NLP所关联的概率论(Probability Theory)知识点是如此的多, 饭只能一口一口地吃了, 我们先 ...

  7. 学习sql中的排列组合,在园子里搜着看于是。。。

    学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来: --需求----B, C, F, M and S住在一座房子的不同楼层.--B 不住顶层.C 不住底 ...

  8. 【原创】开源.NET排列组合组件KwCombinatorics使用(三)——笛卡尔积组合

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

  9. 【原创】开源.NET排列组合组件KwCombinatorics使用(二)——排列生成

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

  10. 【原创】开源.NET排列组合组件KwCombinatorics使用(一)—组合生成

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

随机推荐

  1. 搭建Windows环境下的多功能免费SSH客户端

    关于Windows下的SSH客户端工具,可以有许多选择,从开源免费到商业收费的,零零总总. 免费版: Putty就是最简单的SSH客户端,非常轻量级. Electerm是一个开源可免费使用的跨平台SS ...

  2. 记一次 splice 导致 io.Copy 阻塞的排查过程

    记一次 splice 导致 io.Copy 阻塞的排查过程 简而言之,net.TCPConn 的 ReadFrom 零拷贝实现 splice 在 1.21.0 - 1.21.4 删除了 SPLICE_ ...

  3. maven引入本地jar不能打入部署包的问题解决

    引入的三方依赖 jar 包, scope 为 system 的包 maven 默认是不打包进去的,需要加这个配置 在pom.xml文件中找到spring-boot-maven-plugin插件,添加如 ...

  4. django学习第四天----mark_safe的用法,静态文件配置,用指令创建django项目应用注意点,ORM介绍,创建表执行命令,模板渲染补充(组件),inclusion_tag 自定义标签

    补充第三天跟safe差不多的一个方法 templatetags文件夹 自定义的py文件 需要先导入模块 from django.utils.safestring import mark_safe @r ...

  5. DataGear 制作折柱图数据可视化图表

    利用 DataGear  看板的 自定义图表选项 功能,可以很方便地制作折柱图(或者折线-饼图.柱状-饼图)数据可视化图表. 假设有如下CSV数据集,包括名称和两个指标值数据: 名称, 指标0, 指标 ...

  6. 【Azure Redis 缓存】Redis性能指标之Server Load

    Server Load描述 在Redis的官方介绍中,Server Load指标是Redis 服务器忙于处理消息并且非空闲等待消息的周期百分比. 如果此计数器达到 100,则意味着 Redis 服务器 ...

  7. 【Azure 应用服务】应用服务中发布Docker Container,如何添加卷(如Azure File Share)以便永久存储文件

    问题描述 应用服务中发布Docker Container,如何添加卷(如Azure File Share)以便永久存储文件 问题解答 App Service可以通过门户配置Mount Storage, ...

  8. Java 常用类 String的使用---测试

    1 package com.bytezero.stringclass; 2 3 import org.junit.Test; 4 5 /** 6 * 7 * 8 * 9 * @author Bytez ...

  9. Sermant运行流程学习笔记,速来抄作业

    本文分享自华为云社区<Sermant 的整体流程学习梳理>,作者:用友汽车信息科技(上海)有限公司 刘亚洲 Java研发工程师. 一.sermant架构 Sermant整体架构包括Serm ...

  10. 6、zookeeper应用场景-分布式唯一ID

    分布式唯一id案例 原理:使用zookeeper有序节点,节点后会加上有序的id,用这个id来当唯一ID 在过去的单库单表型系统中,通常第可以使用数据库字段自带的auto_ increment属性来自 ...