题意:

  你经营者一直棒球队。在接下来的g+10天中有g(3<=g<=200)场比赛,其中每天最多一场比赛。你已经分析出你的n(5<=n<=100)个投手中每个人对阵所有m个对手的胜率(一个n*m矩阵),要求给出作战计划(即每天使用哪个投手),使得总胜场数的期望值最大。注意,一个投手在上场一次后至少要休息4天。

分析:

  如果这题直接记录前4天中每天上场的投手编号1~n,时间和空间都无法承受。但是,不记录又不行。因为规定一个投手在上场一次后至少要休息4天,也就是说记录前4天的作战计划是必要的,但是我们可以简化这个编号的范围。在这里用到了贪心的思想,对于第i天,我们只会选择当天能力值前5的投手出战。所以记录的时候,只需记录你选的是当天排名第几的投手,然后判断选择不同于前4天的投手DP即可。

  感觉自己的贪心还是不够好啊~~

代码如下:(好多维,有点恶心,听说不用滚动会疯狂RE,然后我就滚动了。但还是不造为啥依然RE了好多遍TAT)

 #include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;
#define Maxn 110
#define Maxm 40
#define Maxg 250
#define Maxd 6 int p[Maxg][Maxg],d[Maxg];
int f[][Maxd][Maxd][Maxd][Maxd];
int b[Maxg][Maxg];
int n,m,g; struct node
{
int id,x;
}t[Maxg]; bool cmp(node x,node y) {return x.x>y.x;} int mymax(int x,int y) {return x>y?x:y;} void init()
{
scanf("%d%d%d",&n,&m,&g);
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
scanf("%d",&p[i][j]);
for(int i=;i<=g+;i++) scanf("%d",&d[i]);
memset(b,,sizeof(b));
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++) t[j].id=j,t[j].x=p[i][j];
sort(t+,t++n,cmp);
for(int j=;j<=;j++) b[i][j]=t[j].id;
}
} void dp()
{
memset(f,-,sizeof(f));
f[][][][][]=;
int np=,ans=;
int wj=-,wk=-,wl=-,wq=-;
for(int i=;i<=g+;i++)
{
if(d[i]==) continue;
ans=;
memset(f[-np],-,sizeof(f[-np]));
for(int j=;j<=;j++)
for(int k=;k<=;k++)
for(int l=;l<=;l++)
for(int q=;q<=;q++) if(f[np][j][k][l][q]!=-)
{
for(int id=;id<=;id++)
{
int now=d[i];
if((i-wj<=&&b[now][id]==b[d[wj]][j])||(i-wk<=&&b[now][id]==b[d[wk]][k])||
(i-wl<=&&b[now][id]==b[d[wl]][l])||(i-wq<=&&b[now][id]==b[d[wq]][q])) continue;
f[-np][k][l][q][id]=
mymax(f[-np][k][l][q][id],f[np][j][k][l][q]+p[now][b[now][id]]);
ans=mymax(ans,f[-np][k][l][q][id]);
}
}
wj=wk;wk=wl;wl=wq;wq=i;
np=-np;
} printf("%.2lf\n",ans*1.0/);
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
init();
dp();
}
return ;
}

uva1379

2016-03-06 15:42:06

【UVA1379】Pitcher Rotation (贪心+DP)的更多相关文章

  1. UVA 1379 - Pitcher Rotation(DP + 贪心)

    题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=4125" rel="nofo ...

  2. 【BZOJ-3174】拯救小矮人 贪心 + DP

    3174: [Tjoi2013]拯救小矮人 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 686  Solved: 357[Submit][Status ...

  3. BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP

    BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀 ...

  4. 洛谷P4823 拯救小矮人 [TJOI2013] 贪心+dp

    正解:贪心+dp 解题报告: 传送门! 我以前好像碰到过这题的说,,,有可能是做过类似的题qwq? 首先考虑这种显然是dp?就f[i][j]:决策到了地i个人,跑了j个的最大高度,不断更新j的上限就得 ...

  5. 【bzoj5073】[Lydsy1710月赛]小A的咒语 后缀数组+倍增RMQ+贪心+dp

    题目描述 给出 $A$ 串和 $B$ 串,从 $A$ 串中选出至多 $x$ 个互不重合的段,使得它们按照原顺序拼接后能够得到 $B$ 串.求是否可行.多组数据. $T\le 10$ ,$|A|,|B| ...

  6. 【bzoj3174】[Tjoi2013]拯救小矮人 贪心+dp

    题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人,我们知道他从脚 ...

  7. hdu 1257 最少拦截系统【贪心 || DP——LIS】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1257 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  8. 贪心+DP【洛谷P4823】 [TJOI2013]拯救小矮人

    P4823 [TJOI2013]拯救小矮人 题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以 ...

  9. 贪心+dp

    贪心+dp 好多题都是这个思想, 可以说是非常重要了 思想一: 在不确定序列无法dp的情况下, 我们不妨先假设序列已经选定, 而利用贪心使序列达到最优解, 从而先进行贪心排序, 在进行dp选出序列 思 ...

  10. 【题解】CF1056F Write the Contest(三分+贪心+DP)

    [题解]CF1056F Write the Contest(三分+贪心+DP) 最优化问题的三个解决方法都套在一个题里了,真牛逼 最优解应该是怎样的,一定存在一种最优解是先完成了耗时长的任务再干别的( ...

随机推荐

  1. CentOS6.4下使用默认的文档查看器打开PDF文档乱码的解决方案

     最近在CentOS6.4下使用其默认的文档查看器打开PDF文档时出现乱码的方块,有两种方法可以解决.    方法一:修改/etc/fonts/conf.d/49-sansserif.conf文件,如 ...

  2. Linux下查看系统配置

    CPU 1. lscpu:显示cpu架构信息 [xxx@localhost ~]$ lscpu Architecture: x86_64 CPU op-mode(s): -bit, -bit Byte ...

  3. iOS UIKit:CollectionView之设计 (1)

    collection view(UICollectionView对象)使用灵活和可扩展的布局来描述有序的数据项,其一般情况下以网格的形式来展示内容,但并非一定如此. 1 基础 为了将数据展示在屏幕中, ...

  4. java web 中的转发和重定向

    假设应用程序的 contextPath 为 /ctx,在 http://localhost:8080/ctx/a/b 资源中,我们转发和重定向到 http://localhost:8080/ctx/x ...

  5. github上建站和使用markdown写文章

    积累了那么久,终于成功搭建了github上的个人网站.虽然方法有点巧妙.不是还是建成了 同时学会用markdown写基本的文章.感觉还可以.附带我的github上的静态页面网站的网址:http://z ...

  6. php 表单的活用

    一般表单都是用过POST 方式对数据进行隐秘的传输用, 可以偶尔你也会发现这样的用法,表单不止能够进行隐秘的传输.还能够进行URL的传输,并且是同时进行的 提交页面,在action 后面加了URL后缀 ...

  7. [页面辅助] 最新的 PageValidate 类 (转载)

    代码 using System; using System.Data; using System.Configuration; using System.Web; using System.Text. ...

  8. AndroidStudio1.4 manifest 中注册Activity时的错误提示解决办法

    问题截图如下: 解决办法截图如下: 1: File->setting->Editor->Language Injections到如下界面 2:双击右侧选中的Item进入编辑界面 3: ...

  9. oracle 定位热块和热链的方法

    定位热链的方法 declare        v_num number;begin        for i in 1..1000000        loop                sele ...

  10. CI 笔记 数据库

    demo: 1.  建立数据库,driver, 字段 name,telphone,idcard,car,content 2. 建立model,Driver_model.php文件, 建立add方法, ...