[USACO 2016Dec] Team Building
[题目链接]
https://www.lydsy.com/JudgeOnline/problem.php?id=4742
[算法]
动态规划
用Fi,j,k表示约翰的前i头牛和保罗的前j头牛匹配 , 共选了k头 , 有多少种方案
转移详见代码
时间复杂度 : O(N ^ 2K)
[代码]
#include<bits/stdc++.h>
using namespace std;
#define MAXN 1010
#define MAXT 12
const int P = 1e9 + ; int n , m , t;
int a[MAXN] , b[MAXN];
int dp[MAXN][MAXN][MAXT]; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
} int main()
{ read(n); read(m); read(t);
for (int i = ; i <= n; i++) read(a[i]);
for (int i = ; i <= m; i++) read(b[i]);
sort(a + , a + n + );
sort(b + , b + m + );
dp[][][] = ;
for (int i = ; i <= n; i++)
{
for (int j = ; j <= m; j++)
{
for (int k = ; k <= t; k++)
{
if (i + j == ) continue;
if (i == ) dp[i][j][k] = dp[i][j - ][k];
else if (j == ) dp[i][j][k] = dp[i - ][j][k];
else dp[i][j][k] = dp[i - ][j][k] + dp[i][j - ][k] - dp[i - ][j - ][k];
dp[i][j][k] = (dp[i][j][k] % P + P) % P;
if (k > && a[i] > b[j]) dp[i][j][k] += dp[i - ][j - ][k - ];
dp[i][j][k] = (dp[i][j][k] % P + P) % P;
}
}
}
printf("%d\n" , dp[n][m][t]); return ; }
[USACO 2016Dec] Team Building的更多相关文章
- BZOJ 4742: [Usaco2016 Dec]Team Building
4742: [Usaco2016 Dec]Team Building Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 21 Solved: 16[Su ...
- CF1316E Team Building
CF1316E [Team Building] 状压dp,感觉比D简单 \(f[i][s]\),表示考虑前\(i\)个人,状态为\(s\)(\(s\)的第\(j-1\)个二进制位表示队员的第\(j\) ...
- Spoj-BIPCSMR16 Team Building
To make competitive programmers of BUBT, authority decide to take regular programming contest. To ma ...
- BZOJ4742 : [Usaco2016 Dec]Team Building
如果我们将两个人拥有的牛混在一起,并按照战斗力从小到大排序,同时把第一个人选的牛看成$)$,第二个人选的牛看成$($的话,那么我们会发现一个合法的方案对应了一个长度为$2k$的括号序列. 于是DP即可 ...
- 1742. Team building(dfs)
1742 最小的是找联通块数 最大的找环 一个环算一个 其它的数各算一个 #include <iostream> #include<cstdio> #include<cs ...
- 简单状压dp的思考 - 最大独立集问题和最大团问题 - 壹
本文参考:CPH ,USACO Guide (大佬请越过,这是初学笔记,不要吐槽内容) 前置知识:位运算基础,动态规划基础 介绍 状态是元素的子集的动态规划算法,可以用位运算来高效的优化. 那么第一道 ...
- [Exchange 2013]创建约会和会议
简介 会议和约会之间的重要区别是,会议有与会者,并且没有约会.约会和会议可以是单实例或属于重复序列,但与会者. 房间或资源中不包括约会,因为它们不需要发送一条消息.在内部,Exchange 使用相同的 ...
- USER STORIES AND USE CASES - DON’T USE BOTH
We’re in Orlando for a working session as part of the Core Team building BABOK V3 and over dinner th ...
- 基于AWS的云服务架构最佳实践
ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...
随机推荐
- T3187 队列练习3 codevs
http://codevs.cn/problem/3187/ 题目描述 Description 比起第一题,本题加了另外一个操作,访问队头元素(编号3,保证访问队头元素时或出队时队不为空),现在给出这 ...
- UVA 11346 Probability
题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 3 10 5 20 1 1 1 2 2 0 输出样例#1: 23.348371% 0.000000% 100.00 ...
- mybatis注解@selectKey对于db2数据库的使用
在新增时返回当前新增的主键. 数据库:DB2 用的是mybatis的@selectKey 代码: @InsertProvider(type = Test.class,method="inse ...
- Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)
package test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleD ...
- mysql大数据量分页查询优化
参考文章:https://www.dexcoder.com/selfly/article/293 Mysql的分页查询十分简单,但是当数据量大的时候一般的分页就吃不消了. 传统分页查询:SELECT ...
- 如何删除xcode启动主页面项目列表
Open Xcode, leave the splash screen up and choose "File", "Open Recent Projects" ...
- 普元OA平台介绍
Primeton Portal提供了访问企业信息资源的统一入口,是一个面向企业的内容管理.信息发布和集成展现平台,提供了单点登录.内容管理.信息发布.应用集成.个性化等功能,能够帮助企业快速搭建一个集 ...
- linux nc,nmap,telnet ,natstat命令
说明 在服务器运维中 通常需要知道 机器端口状态 是否开启 是否被防火墙拦截等.今天我们介绍这三个命令 用来检测端口. nc 命令 / TCP # 安装 yum install -y nc nc 命令 ...
- shell mysql 直接创建表
shell 直接创建表 #!/bin/bash mysql -hdatabases -uroot -p^xxxxasdasdadd <<EOF Create Database If Not ...
- C# step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型
C# 2012 step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型 本章内容 声明一个枚举类型 创建并使用一个枚举类型 声明一个结构类型 创建并使用一个结构类型 解释结 ...