【动态规划】mr354-坐车看球
【题目大意】
两个球队的支持者要一起坐车去看球,他们已经排成了一列。我们要让他们分乘若干辆巴士,同一辆巴士上的人必须在队伍中是连续的。为了在车上不起冲突,希望两队的支持者人数尽量相等,差至多是D。有一个例外,就是一辆车上的人全部都是一个球队的支持者。问要将这N个人全部送至球场,至少要几辆巴士。第一行是整数N和D,1≤N≤2500,1≤D≤N。接下来的N行,按排队的顺序,描述每个人支持的球队,用H或J表示。
输出至少要几辆巴士。
样例输入
14 3
H
J
H
H
H
J
H
J
H
H
H
H
H
H
样例输出
2
【思路】
记录下到第i个人为止,支持两队的人的个数,接下来预处理[i,j]之间的人能否坐在一辆车上,如果它们能坐在一辆车上,必定满足以下三个条件中的一个:
(1)[i,j]均支持H队,即H[j]-H[i-1]==j-i+1;
(2)[i,j]均支持J队,即J[j]-J[i-1]==j-i+1;
(3)[i,j]支持H队和J队的人数差小于等于D,即|( H[j]-H[i-1])-( J[j]-J[i-1])|≤D。
预处理结束之后,依次判断区间[i,j],car[j]表示到第j个人为止最少需要多少辆车。如果[i,j]区间内的人能公用一辆车,则car[j]=min(car[j],car[i-1]+1)。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int MAXN=+;
int n,d;
int can[MAXN][MAXN];
int H[MAXN],J[MAXN];
int car[MAXN]; int main()
{
freopen("mr354.in0","r",stdin);
freopen("mr354.ou0","w",stdout);
scanf("%d%d",&n,&d);
memset(H,,sizeof(H));
memset(J,,sizeof(J));
memset(can,,sizeof(can));
for (int i=;i<=n;i++)
{
getchar();
char c;
scanf("%c",&c);
H[i]=H[i-];
J[i]=J[i-];
if (c=='H') H[i]++; else J[i]++;
car[i]=i;
} for (int i=;i<=n;i++)
for (int j=i;j<=n;j++)
if (H[j]-H[i-]==j-i+ || J[j]-J[i-]==j-i+ || abs((J[j]-J[i-])-(H[j]-H[i-]))<=d)
can[i][j]=; for (int i=;i<=n;i++)
for (int j=;j<=i;j++)
if (can[j][i])
car[i]=min(car[i],car[j-]+); cout<<car[n]<<endl;
return ;
}
【动态规划】mr354-坐车看球的更多相关文章
- 看球的巴士——线性dp
[题目描述] 两个球队的支持者要一起坐车去看球,他们已经排成了一列.我们要让他们分乘若干辆巴士,同一辆巴士上的人必须在队伍中是连续的.为了在车上不起冲突,希望两队的支持者人数尽量相等,差至多是D.有一 ...
- 【洛谷2113】看球泡妹子 DP背包
看球泡妹子 题目背景 2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情. 题目描述 本届世界杯共有\(N\)支球队,\(M\)场比赛.男球迷小明喜欢看 ...
- [洛谷P2113] 看球泡妹子
洛谷题目链接:看球泡妹子 题目背景 2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情. 题目描述 本届世界杯共有N支球队,M场比赛.男球迷小明喜欢看比 ...
- 背包DP【洛谷P2113】 看球泡妹子
P2113 看球泡妹子 题目背景 2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情. 题目描述 本届世界杯共有N支球队,M场比赛.男球迷小明喜欢看比赛 ...
- 『看球笔记』20140208利物浦VS阿森纳,十字重剑与蜜蜂飞舞
红圈位置42%对58%的控球率,是不是觉得比分很不符?我们卖个关子,最后再说这个. 十字重剑 第一次任意球防守,俩后卫盯俩后卫,负责斯科特尔的是科斯切尔尼,而默特萨克盯图雷. ...
- 『看球笔记』20131230切尔西vs利物浦,赛后复盘聊聊球
2013-12-30 第十九轮英超联赛 切尔西vs利物浦 看着这张板凳合照… 有木有一种心里哇凉哇凉的感觉. 赛后whoscored的平均位置图 左边车子,右边我军 阿格回 ...
- luogu P2113 看球泡妹子
2333 这么水的蓝题 f[i][j] 表示看了i场比赛,小♀红的什么东西为j时小♂明的什么值 强行压维蛤蛤 剩下的转移很简单(注意i的循环顺序从后往前,01背包) (具体见代码) #include& ...
- 6月份值得一看的 Java 技术干货!
6月过完了,这一年都 TM 过了一半了,大家都回想下自己这大半年,你都收获了什么??技术有提升吗?对象搞定了吗? 说多了都是泪,唯有 WIFI.空调.西瓜.足球能够解忧.. 话说中国队怎么还不上场?哈 ...
- 为了好好看球,学霸们用深度学习重建整个比赛3D全息图
http://mp.ofweek.com/vr/a745673021206 周四晚上11点,万众瞩目的世界杯终于开踢了,虽然意大利.荷兰.智利.中国(手动滑稽)等强队没能进入本届世界杯,但C罗梅西谁主 ...
随机推荐
- F题 hdu 1431 素数回文
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431 素数回文 Time Limit: 2000/1000 MS (Java/Others) M ...
- Python中的subprocess模块
Subprocess干嘛用的? subprocess模块是python从2.4版本开始引入的模块.主要用来取代 一些旧的模块方法,如os.system.os.spawn*.os.popen*.comm ...
- linux下进行base64编码解码
1.编码 2.解码
- vue中的图片加载与显示默认图片
HTML: <div class="content-show-img"> <div class="show-img"> <img ...
- 经典卷积网络模型 — LeNet模型笔记
LeNet-5包含于输入层在内的8层深度卷积神经网络.其中卷积层可以使得原信号特征增强,并且降低噪音.而池化层利用图像相关性原理,对图像进行子采样,可以减少参数个数,减少模型的过拟合程度,同时也可以保 ...
- 内核添加USB模块
Device Drivers->SCSI device support->SCSI disk support Device Drivers->USB support->Supp ...
- 《java并发编程实战》读书笔记4--基础构建模块,java中的同步容器类&并发容器类&同步工具类,消费者模式
上一章说道委托是创建线程安全类的一个最有效策略,只需让现有的线程安全的类管理所有的状态即可.那么这章便说的是怎么利用java平台类库的并发基础构建模块呢? 5.1 同步容器类 包括Vector和Has ...
- 基于rest_framework和redis实现购物车的操作,结算,支付
前奏: 首先,要在主机中安装redis,windows中安装,下载一个镜像,直接进行下一步的安装,安装成功后,在cmd中输入redis-cli 安装python的依赖库: redis 和 ...
- 云平台学习--GitLab
今天和师父还有孙老师一起,两位大神给我讲了下全世界最先进的云平台架构(Tigzx). 废话不多说,直接说代码的GitLab 第一步: 访问路径:http://git.dlanqi.com:30503, ...
- vue-music 关于Search(搜索页面)-- 搜索结果优化
搜索结果 列表点击跳转到相应的歌手详情页或者 歌曲页面,通过子路由跳转,和singer 组件一样 在suggest.vue 组件判断如果点击的是歌手,则new 一个歌手对象,通过这个对象的id 属性值 ...