P1062 合并傻子
时间: 1000ms / 空间: 131072KiB / Java类名: Main

背景

从前有一堆傻子,钟某人要合并他们~
但是,合并傻子是要掉RP的......

描述

在一个园形操场的四周站着N个傻子,现要将傻子有次序地合并成一堆.规定每次只能选相邻的2个傻子合并成新的一个傻子,并将新的一个傻子的RP数,记为该次合并的RP数。
(合并方法与NOI1999石子合并(本题库的沙子合并)相同,请大家参考上题合并方法)
将N个傻子合并成1个的最小RP数为RPn和最大RP数为RPx.
钟某人要合并他们,钟某人现在的RP为m,但是他要小心....
if m>RPx then 钟某人能很轻松的合并他们,并说出 ‘It is easy’
else if m<RPn 钟某人很担心,因为他必然由此变成一个沙茶,这时他要说:‘I am..Sha...X’(以便提升RP)
else   钟某人仍然担心自己可能成为一个沙茶,所以他要金蝉脱壳说:‘I will go to play WarIII’

输入格式

数据的第1行试正整数n和m(1≤N≤100,m在longint范围之内)表示有N个傻子.第2行有N个数,分别表示合并每个傻子的所掉的RP数

输出格式

输出文件仅一行包含一个句子表示钟某人说的话。

测试样例1

输入

4 -9999 
4 4 5 9

输出

I am..Sha...X

备注

傻子+傻子=?
 

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define inf 0x7fffffff
using namespace std;
int a,sum[],n;
int f1[][],f2[][];
long int m;
int dpn(int l,int r)//min
{
if(f1[l][r]!=-)return f1[l][r];
if(l==r)return ;
int ans=inf;
for(int i=l;i<r;i++)
ans=min(ans,dpn(l,i)+dpn(i+,r));
return f1[l][r]=(ans+sum[r]-sum[l-]);
}
int dpx(int l,int r)//max
{
if(f2[l][r]!=-)return f2[l][r];
if(l==r)return ;
int ans=-;
for(int i=l;i<r;i++)
ans=max(ans,dpx(l,i)+dpx(i+,r));
return f2[l][r]=(ans+sum[r]-sum[l-]);
}
int main()
{
cin>>n>>m;
memset(f1,-,sizeof(f1));
memset(f2,-,sizeof(f2));
for(int i=;i<=n;i++)
{
cin>>a;
sum[i]=sum[i-]+a;
}
if(m<dpn(,n))puts("I am..Sha...X");
else if(m>dpx(,n))puts("It is easy");
else puts("I will go to play WarIII");
return ;
}

第一次忘了开俩数组或者来清零搞一搞导致输出一直很奇怪。后来改开俩数组秒过。

区间dp

用f(i,j)表示将 i 到 j 一段合并所需要的最小代价,枚举中间的断点K转移

sum[i]表示前i个沙子的质量和,那么(l,r)的质量就是sum[r]-sum[l-1]

即f(i,j)=min{f(i,k)+f(k+1,j)}

同理最大代价只需将函数换为max即可。

//看了题解强烈要求改题目啊刚开始以为这些傻子是站成圆形的差点作大死!数据表明傻子们是站成一排的哎喂……

//附黄学长的帅气解析(沙子合并)http://hzwer.com/575.html

合并傻子//区间dp的更多相关文章

  1. tyvj 1062 合并傻子 区间dp,典型模型石子归并

    P1062 合并傻子 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 从前有一堆傻子,钟某人要合并他们~但是,合并傻子是要掉RP的...... 描述 在一个园 ...

  2. 洛谷P1880 石子合并(区间DP)(环形DP)

    To 洛谷.1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1 ...

  3. 直线石子合并(区间DP)

    石子合并 时间限制:1000 ms  |  内存限制:65535 KB 描述有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费 ...

  4. CH5301 石子合并【区间dp】

    5301 石子合并 0x50「动态规划」例题 描述 设有N堆沙子排成一排,其编号为1,2,3,…,N(N<=300).每堆沙子有一定的数量,可以用一个整数来描述,现在要将这N堆沙子合并成为一堆, ...

  5. zjnu 1181 石子合并(区间DP)

    Description 在操场上沿一直线排列着 n堆石子. 现要将石子有次序地合并成一堆.规定每次仅仅能选相邻的两堆石子合并成新的一堆, 并将新的一堆石子数记为该次合并的得分.同意在第一次合并前对调一 ...

  6. nyoj 737 石子合并(区间DP)

    737-石子合并(一) 内存限制:64MB 时间限制:1000ms 特判: No通过数:28 提交数:35 难度:3 题目描述:     有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为 ...

  7. 石子合并2——区间DP【洛谷P1880题解】

    [区间dp让人头痛……还是要多写些题目练手,抽空写篇博客总结一下] 这题区间dp入门题,理解区间dp或者练手都很妙 ——题目链接—— (或者直接看下面) 题面 在一个圆形操场的四周摆放N堆石子,现要将 ...

  8. 石子合并问题 /// 区间DP oj2025

    Description 在一个圆形操场的四周摆放着n堆石子.现要将石子有次序地合并成一堆. 规定每次只能选相邻的两堆石子合并成新的一堆,并将新得的这堆石子数记为该次合并的得分. 试设计一个算法,计算出 ...

  9. P1880 [NOI1995]石子合并(区间DP)

    题目链接:https://www.luogu.org/problemnew/show/P1880 题目大意:中文题目 具体思路:和上一篇的思路是差不多的,也是对于每一个小的区间进行处理,然后再归并到大 ...

随机推荐

  1. JQ中的html()、text()、val()的用法

    <input type="text" val=""> 用val(); <sapn>你好</sapn>  用text() &l ...

  2. Tomcat启动超时

    当启动tomcat时候出现 Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the s ...

  3. 【Qt】Qt之进程间通信(Windows消息)【转】

    简述 通过上一节的了解,我们可以看出进程通信的方式很多,今天分享下如何利用Windows消息机制来进行不同进程间的通信. 简述 效果 发送消息 自定义类型与接收窗体 发送数据 接收消息 设置标题 重写 ...

  4. VS2005 VS2008编译的程序在Win7下以管理员身份运行的设置

    在VS2005或者VS2008 里面,直接项目右键---属性---连接器---清单文件---uac执行级别   选择requireAdministrator  重新编译 这样你的程序直接运行就拥有管理 ...

  5. 我开发了一个产品--Markdown Notes

    大家好,我开发了一个工具类软件产品--Markdown Notes,中文名是Markdown笔记.想写一篇有关它的文章,目的就是为了推广.推广.推广:) BTW:本文就是用这个工具所写的.

  6. PHP连接SQL Server(sqlsrv)

    配置好php环境后,下载如下依赖包,解压目录选择php的ext目录,并在php.ini中加上(我的php版本为5.6) extension=php_pdo_sqlsrv_56_ts.dll exten ...

  7. PHP获取和操作配置文件php.ini的几个函数

    当无法修改php.ini配置文件怎么办,莫担心. php有一套设置和获取配置信息的函数. 1.ini_get()获取配置参数,ini_set()设置配置参数 <?php

  8. Laravel 5 基础(三)- 向视图传送数据(续)

    我们不仅仅可以向视图传送一个数据,同样我们可以传送Array public function about() { return view('pages.about')->with([ 'firs ...

  9. Laravel 5 基础(三)- 向视图传送数据

    我们在Routes.php中新建一个路由 Route::get('about', 'PagesController@about'); 在浏览器中浏览会获得一个错误,错误信息仅仅是一个提示信息,缺少细节 ...

  10. javascript 数组排序之 sort()

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...