题目大意:

一条数轴上有 n 个 MM 在哭,需要tcboy去安慰,tcboy 一开始站在第k个MM身边,每个MM 哭都会减掉tcboy的RP。

确定安慰MM的顺序使得RP扣得最少。求 min(Rp_cost); (安慰不要时间。。。)

其实就是经典的关灯问题: 一条数轴上有很多灯,需要全部关掉,每盏灯的每分钟的耗电量不一样,确定关灯顺序 使得耗电最少。(关灯不要时间。)

解题过程:

1.首先想到 如果人经过了一盏灯,那么必定把它关掉,否则答案不会更优。

2.其次想到 关掉一个区间的最后一盏灯后 人的位置 必定是 在在各个区间的最左端或者最右端。因为如果是站在中间的位置x,那么区间的两头肯定也走过了,既然两头都走过了,再走两头之前 x必定也走过了,根据1,这样肯定不会最优。

3.定义F[i][j][0] 为关掉区间[i,j]的所有灯,且人站在 i 的时候 的最小花费。F[i][j][1] 为关掉区间[i,j]的所有灯,且人站在 j的时候 的最小花费。 time为相应所需要的时间;

先看F[i][j][0] (F[i][j][1]的方法类似 ),必定是由 F[i+1][j][0] 或者F[i+1][j][1]转移过来。

那么F[i][j][0]=

min{F[i+1][j][0]+cost[i]*(time[i+1][j][0]+dist[i][i+1]) , F[i+1][j][1]+cost[i]*(time[i+1][j][1]+dist[i][j])};

但是如何 求出 time数组呢? 用类似F的方法转移? 一开始这样写 只过了 4个点,想了好久才明白 这里陷入了一个误区,

如果time用类似F的方法转移,那么time[i][j][0] 得到的 其实 是 关掉区间[i,j]的所有灯,且人站在 i 的时候 的最短时间,是和F[i][j][0] 不对应的, 因为时间最短不代表 cost 最小。然后我就换了一种方法。

4. 现在想想 这种方法修改一下其实应该也可以做(我还没写过):time[i][j][0]应该由F[i][j][0]决定,如果F[i][j][0]是从F[i+1][j][0]转移过来的,那么time[i][j][0]也从time[i+1][j][0]转移过来,否则从time[i+1][j][1]转移过来。

5.网络上的标准解法(我后来改成这样了):

定义F[i][j][0] 为关掉区间[i,j]的所有灯,且人站在 i 的时候,[1,n]的灯最少已经花费了多少。

之前的做法 在求区间[i,j]的时候 是不考虑[1,i-1]和 [i+1,n]的灯的花费的,现在要算。

sum[i,j]表示 区间[i,j]的灯的单位花费和。实现的时候可以用前缀和优化。

那么方程就变成:

F[i][j][0]=

min{F[i+1][j][0]+dist[i][i+1]*(sum[1,i]+sum[j+1,n]) , F[i+1][j][1]+dist[i][j]*(sum[1,i]+sum[j+1,n]) };

F[i][j][1]同理;

ans=min{F[1][n][0],F[1][n][1]};

MM 不哭 (tyvj 1097)的更多相关文章

  1. tyvj1097 mm不哭

    背景 Bless all rp++.. 描述 在一个数轴上,有n个MM(绝非恐龙!)在哭泣(5555~一直哭). tcboy也在这个数轴上,并恰好看到了这一幕,由于每个MM哭都会让tcboy损失一定的 ...

  2. 集训DP复习整理

    DP复习 集训%你赛2:测绘(审题DP) 经过2000+个小时的努力终于把这道题做出来的蒟蒻通 分析: 这道题我一直没做出来的原因就是因为我太蒟了题面看不懂,题面读懂了,其实不是特别难. 题目翻译: ...

  3. TYVJ博弈论

    一些比较水的博弈论...(为什么都没有用到那什么SG呢....) TYVJ 1140  飘飘乎居士拯救MM 题解: 歌德巴赫猜想 #include <cmath> #include < ...

  4. 【BZOJ】1097: [POI2007]旅游景点atr(spfa+状压dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1097 首先还是我很sb....想到了分层图想不到怎么串起来,,,以为用拓扑序搞转移,,后来感到不行. ...

  5. [设计模式]解释器(Interpreter)之大胆向MM示爱吧

    为方便读者,本文已添加至索引: 设计模式 学习笔记索引 写在前面 “我刚写了个小程序,需要你来参与下.”我把MM叫到我的电脑旁,“来把下面这条命令打进去,这是个练习打(Pian)符(ni)号(de)的 ...

  6. tyvj 1342 教主泡嫦娥 环上DP

    342 教主泡嫦娥 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 2012年12月21日下午3点14分35秒,全世界各国的总统以及领导人都已经汇聚在中国的方 ...

  7. BZOJ 1097: [POI2007]旅游景点atr( 最短路 + 状压dp )

    先最短路预处理, 然后状压就行了 -------------------------------------------------------------------------- #include ...

  8. tyvj P1403 关押罪犯 题解

    P1403 [NOIP2010]关押罪犯 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述    S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他 ...

  9. Hihocoder 之 #1097 : 最小生成树一·Prim算法 (用vector二维 模拟邻接表,进行prim()生成树算法, *【模板】)

    #1097 : 最小生成树一·Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可 ...

随机推荐

  1. iOS开发之如何修改Mac截屏保存路径

    如何修改Mac截屏保存路径   MAC OS X系统默认的截图路径是桌面文件夹,默认的截图格式是 PNG 图片格式,如何自定义设置呢? 截图保存路径 打开终端(Terminal)并输入如下命令: de ...

  2. ID和Name的区别

    HTML元素的ID和Name属性的区别一直认为ID和NAME是一样的,两个又可以一起出现,甚是疑惑.今天BAIDU了一下,才发现里面大有文章.发出来研究研究:最classical的答案:ID就像是一个 ...

  3. [CSS] vertical-align

    原文地址: http://www.zhangxinxu.com/wordpress/2010/05/%E6%88%91%E5%AF%B9css-vertical-align%E7%9A%84%E4%B ...

  4. phalcon: 视图集成(内嵌模板)

    当一个网站把不同的模板分割成:头部,中间区域,底部时,我们就需要在不同的[中间区域]页面引入相同的头部跟底部.引入有2种方法, 一种是:在controller中调用: $this->view-& ...

  5. China Brain Project: Basic Neuroscience, Brain Diseases, and Brain-Inspired Computing

    日前,中国科学院神经科学研究所.中国科学院脑科学与智能技术卓越创新中心.香港科技大学生命科学部和分子神经科学国家重点实验室.中国科技大学自动化研究所在 Cell 上联合发表了一篇概述论文<Chi ...

  6. 【CodeVS 1004】四子连棋

    http://blog.csdn.net/u013598409/article/details/43924465 相比于一年半前,代码的掌控能力强了许多. #include <cstdio> ...

  7. struts2文件下载相关信息

    struts.xml文件配置: <span style="font-size:16px;"><?xml version="1.0" encod ...

  8. [Spring] spring-session + JedisPool 实现 session 共享

    1.至少导入四个jar包: jedis spring-session spring-data-redis commons-pool2 2.bean配置 <?xml version="1 ...

  9. getsockname和getpeername

    int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen);  // 获取与某个套接字关联的本地协议地址 i ...

  10. IO流 总结一

    字符流: FileReader FileWriter BufferedReader BufferedWriter readLine(); 字节流: FileInputReader FileOutput ...