[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 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...
随机推荐
- codevs——T1860 最大数||洛谷——P1107 最大整数
http://codevs.cn/problem/1860/ || https://www.luogu.org/problem/show?pid=1107#sub 题目描述 Description 设 ...
- 【Java TCP/IP Socket】深入剖析socket——TCP套接字的生命周期
建立TCP连接 新的Socket实例创建后,就立即能用于发送和接收数据.也就是说,当Socket实例返回时,它已经连接到了一个远程终端,并通过协议的底层实现完成了TCP消息或握手信息的交换. ...
- 新建JRapid项目(idea创建maven多模块项目)
1.第一步,新建项目(Create New Project) 2.parent项目,不勾选“Crate from archetype”,直接单击“Next”. 3.groupid填写com.codin ...
- spring工具类获取bean
import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebAppl ...
- Oracle 12c agent install for linux
安装Agent代理 在EM11g时,agent安装是通过在被监制主机端下载agent代理并安装,在EM12c版本号上,能够在EM12c服务端.通过"推送"的方式把agent代理在远 ...
- Linux驱动基础开发
Linux 内核配置机制(make menuconfig.Kconfig.makefile)讲解 前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方 ...
- 上传jar包至maven私服
1.maven环境变量配置(新建系统变量,编辑Path) 2.修改maven的setting文件 2.1 私服的用户配置 2.2 私服镜像配置 2.3 (我也不知道是啥) <profile> ...
- 【Discuz】ucenter通讯失败与Discuz的头像无法显示
假设是Discuz论坛的一些小样式图片.仅仅须要升级一下Discuz论坛的论坛或者,直接把整个网站的css的首域名替换一下.比方将127.0.0.1:8080/..开头的东西全改成127.0.0.1: ...
- Windows-速度优化的几个方面
One. Win+R - > cmd- > msconfig 禁用不需要的启动项! Two. 关闭一些视觉选项 Three. 设置应用启动快捷键
- linux 输入子系统(4) intput_dev 接口描述
Name struct input_dev - represents an input device Synopsis struct input_dev { const char * name; // ...