NYOJ-1070诡异的电梯【Ⅰ】
这道题是个dp,主要考虑两种情况,刚开始我把状态转移方程写成了dp[i] = min(dp[i-1] + a, dp[i + 1] +b); 后来想想当推到dp[i]的时候,那个dp[i + 1]还没有推出来,所以这种方式推导出来不对,后来又看到dp[i] = min(dp[i-2]的所有情况最小值,dp[i-3]的所有情况值),其中dp[i]表示前 i 层的最小花费总和, dp[i-2]比较好理解,因为不能连着停,所以最近的那个就是dp[i - 2], dp[i - 3]意思就是停在dp[i - 2]的下一层的时候,这两种就是所有的情况了,其中dp[i-3]的时候情况稍多谢,主要中间隔了两层
dp[i - 3]时:
1. dp[i-2]和dp[i-1]层都向上或者都向下走
2. dp[i-2]向下走,dp[i-1]层 向上走
3.dp[i-2]向上走,dp[i-1]向上走
取他们当中最小的情况就是答案,代码如下:
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int dp[];
int flo[];//保存各个楼层有多少人需要停
int main()
{
int kase = ;
int T;
scanf("%d", &T);
while (T--)
{
memset(dp, , sizeof(dp));
memset(flo, , sizeof(flo));
int n, m, a, b;
scanf("%d %d %d %d", &n, &m, &a, &b);
for (int i = ; i < m; i++)
{
int t;
scanf("%d", &t);
flo[t]++;
}
int minn;
for (int i = ; i <= n; i++)
{
//dp[i-2]中的情况,中间那一层向下或者向上,取最小
minn = min(flo[i - ] * a, flo[i - ] * b) + dp[i - ];
//dp[i-3]中情况,两个都向上走或者两个都向下走
int t1 = min(flo[i - ] * a + flo[i - ] * a, flo[i - ] * b + flo[i - ] * b);
//dp[i-3]中的情况,上面的向上走,下面的向下走和下面的向上走,上面的向下走
int t2 = min(flo[i - ] * b + flo[i - ] * a, flo[i - ] * a + flo[i - ] * b);
//取最小
int t3 = min(t1, t2) + dp[i - ];
dp[i] = min(minn, t3);
}
printf("Case %d: %d\n", ++kase, dp[n]);
} return ;
}
NYOJ-1070诡异的电梯【Ⅰ】的更多相关文章
- NYIST 1070 诡异的电梯【Ⅰ】
诡异的电梯[Ⅰ]时间限制:1000 ms | 内存限制:65535 KB难度:3 描述新的宿舍楼有 N(1≤N≤100000) 层 and M(1≤M≤100000)个学生. 在新的宿舍楼里, 为了节 ...
- NYOJ 诡异的电梯 && nyoj 1204 魔法少女
诡异的电梯[Ⅰ] 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 新的宿舍楼有 N(1≤N≤100000) 层 and M(1≤M≤100000)个学生. 在新的宿舍楼里 ...
- XTUOJ 1206 Dormitory's Elevator
Dormitory's Elevator Time Limit : 1000 MS Memory Limit : 65536 KB Problem Description The new dorm ...
- 软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]
软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] 说明结对编程的优点和缺点. 结对编程的优点如下: 在独立设计.实现代码的过程中不 ...
- 你电梯没了—OO第二单元作业思考
写在前面 这三次电梯调度作业,主要是学习多线程并行操作,对于各个线程的时间轴的把握,互相的配合与影响,通过使用锁来解决访问冲突等方面. 个人在学会Thread相关操作之外,写出来一些奇怪结构的诡异操作 ...
- NYOJ 1007
在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...
- NYOJ 998
这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ...
- 你还可以再诡异点吗——SQL日志文件不断增长
前言 今天算是遇到了一个罕见的案例. SQL日志文件不断增长的各种实例不用多说,园子里有很多牛人有过介绍,如果我再阐述这些陈谷子芝麻,想必已会被无数次吐槽. 但这次我碰到的问题确实比较诡异,其解决方式 ...
- Delphi编程时候诡异地出现ORA-00937错误,记录解决它的思路和方法
首先需要说明,这个问题的出现需要几个前提:使用微软的Oracle驱动(使用Oracle自己的驱动不会出现这个问题).使用绑定变量法,使用Format等方式拼接SQL也不会出现这个问题,还有一些诡异的规 ...
随机推荐
- C++ 性能剖析 (四):Inheritance 对性能的影响
(这个editor今天有毛病,把我的format全搞乱了,抱歉!) Inheritance 是OOP 的一个重要特征.虽然业界有许多同行不喜欢inheritance,但是正确地使用inheritanc ...
- CentOS 7 之Helloworld with c
其实我也不知道是为了啥, 到了现在这种年纪还想学习Linux下的C语言编程.因为我一直就傻傻地认为机会是垂青有准备的人,也一直呆呆地认为活到老学到老.现在Android这么火,各种终端如雨后春笋,而这 ...
- Java学习----运算符与表达式
一.运算符 1.算术运算符 + - * / % ++ -- public class Test7 { public static void main(String[] args) { ...
- TCP回射客户程序:main函数
创建套接字,装填网际网套接字地址结构 创建一个TCP套接字,用服务器的IP地址和端口号装填一个网际网套接字地址结构 我们可从命令行参数取得服务器的IP地址 从头文件unp.h取得服务器的众所周知端口号 ...
- PHP之路——MySql查询语句
1,select查询的基本结构 select 字段 from 表 where 过滤条件 group by 分组条件 having 过滤的第二条件 order by 排序条件 limit 限定结果条件; ...
- GIS
def GIS(): global C global FeaWeights for wid in WordDic.keys(): FeaWeights[wid] = {} for classid in ...
- ISO14443标准详细介绍
这篇文章从各方面详细介绍了ISO/IEC14443标准.第一部分:物理特性1.范围ISO/IEC14443的这一部分规定了邻近卡(PICC)的物理特性.它应用于在耦合设备附近操作的ID-1型识别卡.I ...
- java安全HTTPS工具类
import java.io.FileInputStream; import java.security.KeyStore; import java.security.SecureRandom; im ...
- 【HDOJ】4956 Poor Hanamichi
基本数学题一道,看错位数,当成大数减做了,而且还把方向看反了.所求为最接近l的值. #include <cstdio> int f(__int64 x) { int i, sum; i = ...
- Qt入门(7)——QApplication类
QApplication类管理图形用户界面应用程序的控制流和主要设置.它包含主事件循环,在其中来自窗口系统和其它资源的所有事件被处理和调度.也用于处理应用程序的初始化和结束,并且提供对话管理.它也处理 ...