【动态规划】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罗梅西谁主 ...
随机推荐
- 【bug】vue-cli 3.0报错的解决办法
先上bug图片 bug说明:初装vue_cli3.0写了个组件,运行错误,显示如图, 代码提示:[Vue warn]: You are using the runtime-only build of ...
- javascript执行上下文学习一
原文: http://web.jobbole.com/84044/ http://blog.csdn.net/github_34514750/article/details/52901781 1.三种 ...
- ButterKnife用法详解
http://www.cnblogs.com/zhaoyanjun/p/6016341.html 本文出自[赵彦军的博客] 前言 ButterKnife 简介 ButterKnife是一个专注于And ...
- CentOS7安装MySQL5.7以及修改密码
CentOS7安装mysql [root@bd005 ~]# wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch. ...
- js 实时显示字数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MySQL多线程复制故障(slave_pending_jobs_size_max)
MySQL多线程复制故障(slave_pending_jobs_size_max) http://www.xuchanggang.cn/archives/1079.html
- pandas+sqlalchemy 保存数据到mysql
import pandas as pd from sqlalchemy import create_engine data3={"lsit1":[1,2],"lsit2& ...
- UVALive 7040 Color
题目链接:LA-7040 题意为用m种颜色给n个格子染色.问正好使用k种颜色的方案有多少. 首先很容易想到的是\( k * (k-1)^{n-1}\),这个算出来的是使用小于等于k种颜色给n个方格染色 ...
- 关闭自动弹出照片自动弹出iTunes以及关闭手机照片流
关闭自动弹出照片自动弹出iTunes以及关闭手机照片流 如何阻止iPhone连接Mac后自动弹出照片? 时间:2015/6/18 17:07:15来源:本站原创作者:Chenjh我要评论 很多新 iP ...
- Linq to SQL 小结
前天开始看这方面的资料,虽然看了网上对比 sql和linq的速度,万条数据可能要慢1/4左右的数度,但是介于的方便,还是学了 首先看看linq的基本语法: FROM XX IN DATASOURCE ...