合并傻子//区间dp
背景
但是,合并傻子是要掉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
输入
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的更多相关文章
- tyvj 1062 合并傻子 区间dp,典型模型石子归并
P1062 合并傻子 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 从前有一堆傻子,钟某人要合并他们~但是,合并傻子是要掉RP的...... 描述 在一个园 ...
- 洛谷P1880 石子合并(区间DP)(环形DP)
To 洛谷.1880 石子合并 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1 ...
- 直线石子合并(区间DP)
石子合并 时间限制:1000 ms | 内存限制:65535 KB 描述有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费 ...
- CH5301 石子合并【区间dp】
5301 石子合并 0x50「动态规划」例题 描述 设有N堆沙子排成一排,其编号为1,2,3,…,N(N<=300).每堆沙子有一定的数量,可以用一个整数来描述,现在要将这N堆沙子合并成为一堆, ...
- zjnu 1181 石子合并(区间DP)
Description 在操场上沿一直线排列着 n堆石子. 现要将石子有次序地合并成一堆.规定每次仅仅能选相邻的两堆石子合并成新的一堆, 并将新的一堆石子数记为该次合并的得分.同意在第一次合并前对调一 ...
- nyoj 737 石子合并(区间DP)
737-石子合并(一) 内存限制:64MB 时间限制:1000ms 特判: No通过数:28 提交数:35 难度:3 题目描述: 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为 ...
- 石子合并2——区间DP【洛谷P1880题解】
[区间dp让人头痛……还是要多写些题目练手,抽空写篇博客总结一下] 这题区间dp入门题,理解区间dp或者练手都很妙 ——题目链接—— (或者直接看下面) 题面 在一个圆形操场的四周摆放N堆石子,现要将 ...
- 石子合并问题 /// 区间DP oj2025
Description 在一个圆形操场的四周摆放着n堆石子.现要将石子有次序地合并成一堆. 规定每次只能选相邻的两堆石子合并成新的一堆,并将新得的这堆石子数记为该次合并的得分. 试设计一个算法,计算出 ...
- P1880 [NOI1995]石子合并(区间DP)
题目链接:https://www.luogu.org/problemnew/show/P1880 题目大意:中文题目 具体思路:和上一篇的思路是差不多的,也是对于每一个小的区间进行处理,然后再归并到大 ...
随机推荐
- 14种网页jQuery和css3特效插件代码演示
1.网页table增删样式代码 演示和下载地址 2.jQuery左右滑动幻灯片插件 演示和下载地址 3.jQuery文字轮播焦点图 演示和下载地址 4.网页文字焦点图切换 演示和下载地址 5.jQue ...
- CentOS 5.8 升级php版本
一:我们都知道系统的yum源安装出来的php版本不是5.1的就是5.3 那就是说 有些程序不支持那么低的版本的呢 那我们该怎么办呢 接下来 简单的说下php的版本升级 编译升级太慢了 这里我们选择 ...
- 如何将Log4Net 日志保存到mongodb数据库之实践
log4net的大名早有耳闻,一直没真正用过,这次开发APP项目准备在服务端使用log4net. 日志的数据量较大,频繁的写数据库容易影响系统整体性能,所以独立将日志写到mongodb数据库是不错的选 ...
- 启动另外一个activity,并返回结果
欢迎大家光临我的小店:http://clkk.taobao.com 大致步骤: 1.启动另外一个Activity,这里称子Activity: 2.子Activity通过setResult方法设置返回结 ...
- Linq中延迟查询和立即查询
//立即查询 public static void NowExecute() { var results = new int[]{5,4,3,2,1,6,7,8,9,0 }; int i = 0; v ...
- WPF-控件-层级控件-Menu-嵌套结构
<?xml version="1.0" encoding="utf-8" ?> <Data xmlns=""> &l ...
- 从零开始学ios开发(七):Delegate,Action Sheet, Alert
Action Sheet和Alert是2种特殊的控件(暂且称之为控件吧,其实不是控件真正的控件,而是ios中的2个类,这2个类定义了2种不同类型的用于和用户交互的弹出框),Action Sheet是从 ...
- 从零开始学ios开发(十九):Application Settings and User Defaults(上)
在iphone和ipad中,有一个东西大家一定很熟悉,那个东西就是Settings. 这次要学习的东西说白了很简单,就是学习如何在Settings中对一个app的某些属性进行设置,反过来,在app中更 ...
- macos port总结
http://stackoverflow.com/questions/733951/unable-to-download-the-source-code-of-open-source-projects ...
- ASP.NET 运行机制续(完结)
上一篇说到applicationInstance会执行一些列的事件.下面是我在msdn上找到有关asp.net程序生命周期相关的描述及图片 声明周期的起始 ASP.NET 应用程序的生命周期以浏览器向 ...