HDU 5550 Game Rooms (dp)

LabVIEW面向对象编程:操作者框架入门实战 本文是LabVIEW面向对象编程中操作者框架的入门实战指南。针对传统“面条式代码”在复杂项目中的维护难题,文章通过创建操作者、定义消息与处理函数、在主VI中调用等步骤,详细演示了如何利用操作者框架构建模块化、易扩展的应用程序架构,有效管理并行任务。 阅读详情

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5550

题目:一共n层楼,每层楼都要建一个娱乐室,共有两种(球馆、游泳馆)可以选择,且n层楼中至少有1个球馆和游泳馆。现每层楼有Ti个球类爱好者,Pi个游泳爱好者,他们都要去各自的娱乐室娱乐,求一个建造方案,使得他们走的总路程的最小。(假设A在3楼,要去游泳。若游泳馆在3楼,则A走的路程为0;若游泳馆在2楼或4楼,则路程为1,;若在1楼或5楼,则路程为2.以此类推)。

思路:令dp(i, j)表示已经安排了前i层的人的最小花费,j为0或1,表示娱乐室的类别。我们让某一段连续楼层(从k开始)一直到i全为娱乐室j。易知,第k-1层和第i+1层均为j^1。

           那么dp(i, j) = min{ dp(k, j^1) + dist(k+1, i) }, 其中dist(k+1, i)表示安排第k+1层到第i层人的最小花费,因为k+1到i层的娱乐室都一样,所以可以在常数时间内算出。总复杂度为O(n²)。

          dist(k+1, j)的算法如下


#include<cstdio>
#include<cstring>
#include<vector>
#include<iostream>
#include<set>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = 4000 + 5;
const ll INF = 1e15 + 10;
int T[maxn], P[maxn], n;
ll sumT[maxn], sumP[maxn], calT[maxn], calP[maxn];
ll dp[maxn][2];

ll toLeft(int L, int R, ll *sum, ll *cal) {
  return (cal[R] - cal[L-1]) - (L-1) * (sum[R] - sum[L-1]);
}

ll toRight(int L, int R, ll *sum, ll *cal) {
  return (R+1)*(sum[R]-sum[L-1]) - (cal[R] - cal[L-1]);
}

ll dist(int L, int R, int p) { // p为0代表L——R区间中全是球馆,p为1代表L——R区间中全是游泳馆
  
  if(L == 1 && R == n) return INF; //n层楼全是一种是不合法的
  
  else if(L == 1) { //只能去右边(即楼上)
    if(p == 1)
      return toRight(L, R, sumT, calT);
    return toRight(L, R, sumP, calP);
  }
  
  else if(R == n) { //只能去左边(即楼下)
    if(p == 1)
      return toLeft(L, R, sumT, calT);
    return toLeft(L, R, sumP, calP);
  }
  
  else { //去楼上楼下皆可,因此区间左半部分去楼下,右半部分去楼上
    int x = (L + R) >> 1;
    if(p == 1)
      return toLeft(L, x, sumT, calT) + toRight(x+1, R, sumT, calT);
    return toLeft(L, x, sumP, calP) + toRight(x+1, R, sumP, calP);
  }
  
}

int main() {
  int test, kase = 0;
  scanf("%d", &test);
  while(test--) {
    scanf("%d", &n);
    for(int i = 1; i <= n; i++) {
      scanf("%d%d", &T[i], &P[i]);
      sumT[i] = sumT[i-1] + T[i];
      sumP[i] = sumP[i-1] + P[i];
      calT[i] = calT[i-1] + (ll)i*T[i];
      calP[i] = calP[i-1] + (ll)i*P[i];
    }
    dp[0][0] = dp[0][1] = 0;
    for(int i = 1; i <= n; i++)
      for(int j = 0; j <= 1; j++) {
        dp[i][j] = INF;
        for(int k = 0; k < i; k++)
          dp[i][j] = min(dp[i][j], dp[k][j^1] + dist(k+1, i, j));
      }
    printf("Case #%d: %lld\n", ++kase, min(dp[n][0], dp[n][1]));
  }
  return 0;
}


          

SAP SmartForms字体 :从OTF缓存溢出到完美解决 精准诊断:遇到错误,首先区分是图片过大还是字体嵌入导致。删除图片测试是最快的判别方法。字体上传规范始终从SE73入口上传用于表单打印的字体。强烈建议应用SAP Note 1301018,确保上传时勾选“不替换其他字体”,避免系统自动替换引发的意外问题。如需为同一字体族上传粗体、斜体等变体,请在SE73初始屏幕上勾选对应的属性框(如BOLD),然后分别上传对应的字体文件(如上传过程中,系统会提示输入RTF控制序列信息,这是确保打印预览正常显示的关键步骤,必须正确填写。方案选型快速止血:采用方案一( 阅读详情

相关推荐

CRISPR筛选全流程指南:从文库构建到数据分析实战

功能基因组学研究需要高效解析基因型与表型的关联,高通量筛选技术是其中的关键工具。基于CRISPR系统的筛选方法通过大规模sgRNA文库扰动基因功能,结合慢病毒递送和测序分析,能够系统鉴定影响细胞增殖、耐药、病毒感染的候选基因。与RNAi或化学小分子筛选相比,CRISPR筛选具有覆盖全基因组、脱靶率低、信号清晰等优势,已广泛应用于药物靶点发现、合成致死和免疫治疗机制研究。本文围绕实验设计与操作中的核心要点展开,涵盖文库扩增、病毒滴度控制、MOI把握、筛选模式选择以及基于MAGeCK的sgRNA丰度分析,并针对

weixin_31188927的博客 277

hdu5550(计数DP+前缀和)

题意:每层楼有ai个人打羽毛球,有bi个人游泳,每层楼只能建造一个羽毛球场或者游泳馆,如果当前楼层没有羽毛求场,这ai个人就要到最近有羽毛球场的楼层打羽毛球,每个人产生的代价为楼层差,游泳的类似,求最小代价 这个貌似并没有用到什么很特殊的技巧可是就是莫名地难想。。不造为什么。。 首先由于楼层上下的情况都会对当前楼层产生影响,所以不能一层一层地往上考虑。。 那就只能一段一段考虑了。。对一段区间...

qkoqhh 378

基于STM32的半导体制冷片温度控制

制冷片温度控制,温控范围15℃~45℃,本人菜鸡一枚,大佬绕路。 #include "stm32f10x_gpio.h" #include "relay.h" void relay_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//Ê...

大白兔的博客 9014

HDU 5550 (DP)

题目链接:点击打开链接 题意:有n层楼,每层有两类人,假设是0,1,然后为每一层楼设置一个01属性使得 所有人走到自己属性的楼层的距离和最小。 容易想到的是dp[i][0/1]表示这一层属性是0/1的情况下1-i层的最小值,但是有个问题就是 另一种属性不知道应该去那一层,所以状态转变一下。因为层的属性肯定是连续的0或者 1拼接成的,可以设dp[i][0/1]表示这一层属性是0/1的情

morejarphone~ 654

水下井口装置及钻杆建模

内容:海上油气资源开采的过程中,通常会由海上钻井平台下入钻杆连接到海底井口装置。OrcaFlex软件可进行各种海洋工程结构动态分析,通过各项数据的输入,能够很方便地进行水下井口装置及钻杆建模。直接使用软件New Line及new vessel功能,再设置模型的各项参数(几何属性、弯曲刚度、轴线刚度、扭转刚度、泊松比等)即可建成井口装置及钻杆模型。 设置管线的几何属性:主要包括管线的内外径、壁厚、...

s0302017的博客 1144

HAL库移植实战:解决‘HAL_StatusTypeDef‘未定义报错的3个关键步骤

本文针对STM32开发中从标准库向HAL库移植时常见的'HAL_StatusTypeDef'未定义报错,提供了三个关键解决步骤:首先确保正确包含头文件入口,其次检查并配置模块使能宏,最后注意避免与标准库的同名结构体混用。文章通过实战案例解析了HAL库的模块化设计理念,帮助开发者高效解决混合编程中的编译问题。

book8的博客 207

The 2015 China Collegiate Programming Contest K Game Rooms hdu 5550

Game Rooms Time Limit: 4000/4000 MS (Java/Others)Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 305Accepted Submission(s): 84 Problem Description Your company has just c...

anmob303090的博客 321

openclaw + ollama本地模型 + 飞书平台 windows平台部署教程

本教程将指导您在 Windows 10/11 环境下,通过 Ollama 运行本地模型,并结合 OpenClaw 接入飞书,搭建一个完全本地化的 AI 助手。

专注于技术研发行业技术主要有AI人工智能视觉识别、物联网技术、电商平台、app原生技术、微信小程序、鸿蒙语言开发、办公企业oa、ERP等,致力于做东半球最优秀的程序员 2172

【HDU5550 2015 CCPC 南阳国赛K】【DP 脑洞 好题】 Game Rooms 每层楼一属性,所有人各得其所 数轴映射+同属性区间段整体更新

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; void fre(){freopen("c://test//input.in","r",stdin);freopen("c:

snowy_smile的博客 1786

骑砍Ⅱ霸主MOD开发(16)-FaceKey&BannerKey

摘要:本文介绍了FaceKey人物模型和BannerKey旗帜模型的生成流程。FaceKey通过序列化参数生成人物模型,包括头部(脸部、嘴、睫毛、眼睛)、眉毛、头发、身体和躯干等组件,每个部分通过特定标签和骨骼绑定实现。BannerKey则通过解析参数生成旗帜模型,包括模型、贴图和颜色等元素。两种模型都采用参数化设计和XML配置文件实现模型生成与定制。

骑砍战团&霸主MOD开发 2285

如何使用VNC对openEuler系统进行远程图形化操作

本文详细介绍了在openEuler系统中配置VNC远程图形化操作的方法。主要内容包括:1)服务端配置:安装GNOME图形界面和TigerVNC服务,创建VNC用户并设置密码,配置VNC服务启动脚本;2)客户端连接:使用VNC Viewer等工具连接服务器;3)常见问题解决方法。通过5901端口建立连接后,用户可远程操作openEuler图形界面,适用于需要图形化管理的场景。

2501_93651177的博客 313

HDU - 5550 Game Rooms 【DP+前缀和】

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5550 题意 一撞大楼有N层楼,然后每层楼都有一部分人喜欢打羽毛球,一部分人喜欢打乒乓球 但是每层楼只能选择建一个羽毛球馆或者建一个乒乓球馆 那么每个人到它喜欢的球馆的距离就是一个权值 求出怎么规划 使得所有人到它喜欢的球馆的距离之和最小 思路 ...

banshen0201的博客 211

Ultralytics YOLOv8 英伟达™ Jetson®处理器部署

英伟达™(NVIDIA®)Jetson 是一系列嵌入式计算板卡,旨在为边缘设备带来加速的 AI(人工智能)计算。这些小巧而功能强大的设备围绕英伟达™(NVIDIA®)的GPU架构打造,能够直接在设备上运行复杂的人工智能算法和深度学习模型,而无需依赖云计算资源。Jetson 板卡通常用于机器人、自动驾驶汽车、工业自动化和其他需要在本地以低延迟和高效率执行人工智能推理的应用中。此外,这些板卡基于 ARM64 架构,与传统 GPU 计算设备相比运行功耗更低。英伟达™(NVIDIA®)JetPack SDK。

机器人控制与仿真应用 3875

hdu5550 Game Rooms dp

hdu5550 Game Rooms dp 调了一下午的bug终于过了。。。思路是没错的,但是由于用了刷表法思考,所以只考虑刷表之后的状态,没有注意刷表前的最初状态,于是调了一下午的bug终于找出来了。。。 dp[i][j][k] 表示 前i个,最后一个k的位置为j ( k取0,1,j<i ) 的总花费。 转移有两个,即第i+1个位置为0或者1: dp[i+1][j][k]=min...

weixin_30632883的博客 111

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

HDU 5550 Game Rooms(DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5550 转载地址:http://blog.youkuaiyun.com/snowy_smile/article/details/49618219 题意: T(100)组数据;对于每组数据,有n([2,4000])层楼。对于第i层楼,有女生num[0][i]个,男生num[1][i]个。(1_ 分析: 首先

weishengmingerfendou的专栏 773

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

HDU 5550 Game Rooms(dp)

唉上古遗留问题,去年河南现场赛最后没出的那个dp唉上古遗留问题,去年河南现场赛最后没出的那个dp 其实我自己的思路,感觉是在标解的路上,但是有一个关键点没注意到其实我自己的思路,感觉是在标解的路上,但是有一个关键点没注意到 其实这题关键点就是考虑断层的地方,如果第i层是1,可以假设i+1层是2其实这题关键点就是考虑断层的地方,如果第i层是1,可以假设i+1层是2 为什么这么假设呢,因为必定有断

Miracle_ma的专栏 593

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

HDU - 5550 Game Rooms——dp

https://blog.youkuaiyun.com/weilehuozhe/article/details/49509401?locationNum=14&amp;fps=1 #include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; using namesp...

hao_zong_yin的博客 392

HDU 5550 Game Rooms (dp+前缀和预处理)

Problem Description Your company has just constructed a new skyscraper, but you just noticed a terrible problem: there is only space to put one game room on each floor! The game rooms have not been fu

退役的铜牌狗 482

HDU 5550 Game Rooms (ccpc2015 K)(dp)

题意:输入t组数据。每组数据输入n,并且输入n对数,表示这一层有a个男生,b个女生,每一层可以修建一个宿舍,只能男生住或者女生住,求可以让这些人走的层数最少。 分析:首先需要保存前i层的男或女到达0的点距离和dsum,保存前i层男或女的个数sum。这样通过这两个数组求得一个区间内的男或女到达任一点的距离时间复杂度O(1). 设dp[s][i]表示计算到第i个且将其放在该段的最后一个,这一段全为...

weixin_30322405的博客 253

hdu5550Game Rooms

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5550 题意:有n层楼,每层有p[i]个人喜欢网球t[i]个人喜欢游泳,每层楼只能建一个娱乐场所,没有场所的人要去其他楼,求建好娱乐场所后所有人到离他最近的喜欢的娱乐场所的总和最小。 分析:设dp[i][j][0/1]表示第i层建0/1,j 代码: #include #include #includ

Fsss 679

hdu 5550 Game Rooms

其实感觉这个思路也是蛮不错的,至少我这种水平也可以想到, http://www.cnblogs.com/–560/p/5070223.html但是实在是略麻烦,所以还是学习了下面这种同属性区间段整体更新的方法!而且不需要特殊处理全0情况,非常方便~~ http://blog.youkuaiyun.com/snowy_smile/article/details/49618219#include<bits/st

yp_2013的博客 741

hdu5550 Game Rooms (动态规划)

表示制杖,参考了一下别人的题解,做完发现自己整个人都不好了,竟然没有发现这么弱的dp方程,(我不知怎么的,一开始居然想了一个n^3的dp方程) 设dp[i][s]表示计算到第i个且将其放在该段的最后一个,这一段全为s(0和1分别表示两种运动) 那么dp方程就是dp[i][s] = min{dp[j][s^1] + valueSum(j+1, i)},  j valueSum(i, j)表示

允雨琉的博客 1289

hdu5550 Game Rooms

Time Limit: 4000/4000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 130    Accepted Submission(s): 39 Problem Description Your company has just construc

新月 1314

Game Rooms HDU - 5550

Your company has just constructed a new skyscraper, but you just noticed a terrible problem: there is only space to put one game room on each floor! The game rooms have not been furnished yet, so you ...

zstu_zy的博客 307

DP HDU 5550

Game Rooms Time Limit: 4000/4000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 814    Accepted Submission(s): 257 Problem Description Your company has

LinzhiQQQ的博客 467
上一篇: POJ 2482 Stars in Your Window (扫描线+线段树+离散化)
下一篇: HDU 5545 The Battle of Guandu (最短路Dijkstra)
Interstellar_
博客等级 码龄10年 8粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值