4742: [Usaco2016 Dec]Team Building

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 21  Solved: 16
[Submit][Status][Discuss]

Description

Every year, Farmer John brings his NN cows to compete for "best in show" at the state fair. His arch
-rival, Farmer Paul, brings his MM cows to compete as well (1≤N≤1000,1≤M≤1000).Each of the N+MN+
M cows at the event receive an individual integer score. However, the final competition this year wi
ll be determined based on teams of KK cows (1≤K≤10), as follows: Farmer John and Farmer Paul both 
select teams of KK of their respective cows to compete. The cows on these two teams are then paired 
off: the highest-scoring cow on FJ's team is paired with the highest-scoring cow on FP's team, the s
econd-highest-scoring cow on FJ's team is paired with the second-highest-scoring cow on FP's team, a
nd so on. FJ wins if in each of these pairs, his cow has the higher score.Please help FJ count the n
umber of different ways he and FP can choose their teams such that FJ will win the contest. That is,
 each distinct pair (set of KK cows for FJ, set of KK cows for FP) where FJ wins should be counted. 
Print your answer modulo 1,000,000,009.
每年农夫约翰都会带着他的N只牛去集会上参加“你是最棒哒“的比赛。他的对手农夫保罗也带了M只牛去参加比赛
(1 ≤ N ≤ 1000, 1 ≤ M ≤ 1000)。每只牛都有自己的分数。两人会选择K只牛组成队伍(1 ≤ K ≤ 10),两队
牛在按分数大小排序后一一配对,并且约翰打败保罗当且仅当对于每一对牛,约翰的牛分数都比保罗的高。请帮助
约翰计算约翰打败保罗的方案数 mod 1000000009。两种方案不同,当且仅当约翰或保罗选择的牛的集合与另一种
方案不同。
 

Input

The first line of input contains N, M, and K. The value of K will be no larger than N or M.
The next line contains the N scores of FJ's cows.
The final line contains the M scores of FP's cows.
 

Output

Print the number of ways FJ and FP can pick teams such that FJ wins, modulo 1,000,000,009.
 

Sample Input

10 10 3
1 2 2 6 6 7 8 9 14 17
1 3 8 10 10 16 16 18 19 19

Sample Output

382

HINT

 

Source

[Submit][Status][Discuss]

看到网上还没有人写题解,来抢百度的沙发好了(不知道抢的抢不上)。

就是一道水水的动态规划了:首先得给两个序列分别排个序,$f[i][j][k]$表示使用FJ的前i头牛,以及FP的前j头牛,组出k头牛的战斗序列的方案数。$f[i][j][k]$向$f[i+1][j][k]$和$f[i][j+1][k]$转移,分别代表不选择FJ的第i头牛以及不选择FP的第j头牛,$f[i][j][k]$向$f[i+1][j+1][k+1]$转移当且仅当FJ的第i+1头牛能胜过FP的第j+1头牛。发现$f[i+1][j][k]$和$f[i][j+1][k]$向$f[i+1][j+1][k]$都有转移,而事实上这两次转移的方案是一样的,简言之,算重了,咋办,减掉就好,所以$f[i+1][j+1][k]-=f[i][j][k]$。

 #include <cstdio>
#include <algorithm> inline int nextChar(void) {
const int siz = ; static char buf[siz];
static char *hd = buf + siz;
static char *tl = buf + siz; if (hd == tl)
fread(hd = buf, , siz, stdin); return *hd++;
} inline int nextInt(void) {
register int ret = ;
register int neg = false;
register int bit = nextChar(); for (; bit < ; bit = nextChar())
if (bit == '-')neg ^= true; for (; bit > ; bit = nextChar())
ret = ret * + bit - ; return neg ? -ret : ret;
} const int siz = ;
const int mod = ; int n, m, d; int a[siz];
int b[siz]; int f[siz][siz][]; inline void add(int &a, int b)
{
a += b; if (a >= mod)
a -= mod; if (a < )
a += mod;
} signed main(void)
{
n = nextInt();
m = nextInt();
d = nextInt(); for (int i = ; i <= n; ++i)
a[i] = nextInt(); for (int i = ; i <= m; ++i)
b[i] = nextInt(); std::sort(a + , a + + n);
std::sort(b + , b + + m); f[][][] = ; for (int i = ; i <= n; ++i)
for (int j = ; j <= m; ++j)
for (int k = ; k <= d; ++k)
if (f[i][j][k])
{
add(f[i + ][j][k], f[i][j][k]);
add(f[i][j + ][k], f[i][j][k]);
add(f[i + ][j + ][k], -f[i][j][k]); if (a[i + ] > b[j + ])
add(f[i + ][j + ][k + ], f[i][j][k]);
} printf("%d\n", f[n][m][d]);
}

@Author: YouSiki

BZOJ 4742: [Usaco2016 Dec]Team Building的更多相关文章

  1. BZOJ4742 : [Usaco2016 Dec]Team Building

    如果我们将两个人拥有的牛混在一起,并按照战斗力从小到大排序,同时把第一个人选的牛看成$)$,第二个人选的牛看成$($的话,那么我们会发现一个合法的方案对应了一个长度为$2k$的括号序列. 于是DP即可 ...

  2. bzoj 4747: [Usaco2016 Dec]Counting Haybales

    23333,在扒了一天题解之后发现我竟然还能秒题,虽然这是个pj的sb题... (排个序,然后upper_bound和lower_bound一用就行了(是不是有O(1)的查询方法啊??貌似要离散啊,一 ...

  3. BZOJ 4576: [Usaco2016 Open]262144

    Description 一个序列,每次可以将两个相同的数合成一个数,价值+1,求最后最大价值 \(n \leqslant 262144\) Sol DP. 这道题是 BZOJ 4580: [Usaco ...

  4. CF1316E Team Building

    CF1316E [Team Building] 状压dp,感觉比D简单 \(f[i][s]\),表示考虑前\(i\)个人,状态为\(s\)(\(s\)的第\(j-1\)个二进制位表示队员的第\(j\) ...

  5. BZOJ 1626: [Usaco2007 Dec]Building Roads 修建道路( MST )

    计算距离时平方爆了int结果就WA了一次...... ------------------------------------------------------------------------- ...

  6. bzoj 1626: [Usaco2007 Dec]Building Roads 修建道路 -- 最小生成树

    1626: [Usaco2007 Dec]Building Roads 修建道路 Time Limit: 5 Sec  Memory Limit: 64 MB Description Farmer J ...

  7. BZOJ 1626 [Usaco2007 Dec]Building Roads 修建道路:kruskal(最小生成树)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1626 题意: 有n个农场,坐标为(x[i],y[i]). 有m条原先就修好的路,连接农场( ...

  8. BZOJ——1626: [Usaco2007 Dec]Building Roads 修建道路

    http://www.lydsy.com/JudgeOnline/problem.php?id=1626 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1 ...

  9. bzoj 1626: [Usaco2007 Dec]Building Roads 修建道路【最小生成树】

    先把已有的边并查集了,然后MST即可 记得开double #include<iostream> #include<cstdio> #include<algorithm&g ...

随机推荐

  1. SpringBootService,一个基于spring boot搭建的SOA服务框架

    SpringBootService,这是一个spring boot微服务的框架,包括redis,mq,restful,定时器,mybatis.易扩容.易维护的架构. 项目说明 该项目使用maven进行 ...

  2. datagrid与webAPI的数据交互(ef mvc )

    datagride自带分页工具,当使用分页工具的时候,初始化datagride或者带数据提交到API里面时,会以Json对象的形式将数据传递到API控制器里面,当没有过滤条件或者请求参数.和提交参数的 ...

  3. Canvas设置width与height 的问题!

    最近因为工作需要,所以就学了一下Html中的Canvas标签. 当我看了一下教程后,自己写了一个hello world的时候,麻烦事就出现了.看下面代码: <!DOCTYPE html> ...

  4. Project server 2016 “没有为此项目配置网站”错误处理

    问题: 没有为此项目配置网站. There is no site configured for this project 解决办法: 依次点击设置>PWA设置>连接到sharepoint网 ...

  5. iOS空心圆下载进度指示器控件

    self.layer = [CAShapeLayer layer]; self.layer.frame = CGRectMake(, , , ); self.layer.position = self ...

  6. React Native 之 组件化开发

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  7. 使用gulp解决RequireJS项目前端缓存问题(一)

    1.前言 前端缓存一直是个令人头疼的问题,你有可能见过下面博客园首页的资源文件链接: 有没有发现文件名后面有一串不规则的东东,没错,这就是运用缓存机制,我们今天研究的就是这种东西. 先堵为快,猛戳链接 ...

  8. SQL分隔字符串

    创建函数: )) --@str:目标字符串 --@spliter:分隔符 RETURNS @tb TABLE(ch NVARCHAR(max)) AS BEGIN DECLARE @Num INT,@ ...

  9. oracel数据导出导入

    一.导出模式(三种模式)及命令格式 1. 全库模式 exp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\文件名.log 2. 用户模式(一般情况下采用此模式) ...

  10. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...