热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发心得:成为SGU475智能筏工的策略与技巧

本文由编程笔记#小编为大家整理,主要介绍了Be a Smart Raftsman SGU475相关的知识,希望对你有一定的参考价值。 传送门题目大意有m+1个点,0是起点,m是终点,i-1到i有一条边
本文由编程笔记#小编为大家整理,主要介绍了Be a Smart Raftsman SGU475相关的知识,希望对你有一定的参考价值。


传送门

题目大意

有m+1个点,0是起点,m是终点,i-1到i有一条边,有一个船由0驶往m,不能返回,它在载重小于等于ci时通过第i条边消耗的时间为di否则为Di,现在有n个人,每个人体重为wi,上船或下船消耗时间为si,如果自己走则通过每一条边消耗的实际均为ti,要求船上必须一直有人,求所有人到终点消耗的时间。

分析

首先我们不难想到状压dp,使得msk记录每个人是否在船上,所以不难想到用dp[i][msk]表示走过i条边现在在船上的人是msk所需要的最短时间,发现我们状态需枚举i和msk,复杂度m*2n,转移需要枚举新msk,复杂度2n,所以总复杂度为O(m*22n),显然是不行的,所以我们考虑优化。我们发现对于每一个人的上下船关系是独立的,与其他人无关,所以我们可以考虑每次对于一个状态只改变一个人的状态(即只让一个人上船或下船),之后在通过改变的新状态更新下一个状态,这样便可以在数次更新之后得到和之前相同的结果,我们发现这是的转移复杂度便降到了n,所以最终的复杂度变为O(nm*2n)。

代码


#include<iostream>
#include

#include

#include
<string>
#include

#include

#include

#include

#include

#include

#include

#include
<set>
#include

#include

using namespace std;
int w[11000],t[11000],s[11000],c[11000],d[11000],D[11000];
int dp[1100][1030],all,M[1030],T[1030];
int main(){
int n,m,i,j,k;
scanf(
"%d%d",&n,&m);
all
=(1<1
;
for(i=1;i<=n;i++)
scanf(
"%d%d%d",&w[i],&t[i],&s[i]);
for(i=1;i<=m;i++)
scanf(
"%d%d%d",&c[i],&D[i],&d[i]);
memset(M,
0,sizeof(M));
memset(T,
0,sizeof(T));
for(i=0;i<=all;i++)
for(j=0;j)
if(i&(1<<j)){
M[i]
+=w[j+1];
}
else T[i]=max(T[i],t[j+1]);
memset(dp,
0x3f,sizeof(dp));
dp[
0][0]=0;
for(i=0;i)
for(j=0;j<=all;j++)
dp[
0][j^(1<0][j^(1<0][j]+s[i+1]);
for(i=1;i<=m;i++){
dp[i][
0]=0x3f3f3f3f;
for(j=1;j<=all;j++)
if(dp[i-1][j]<0x3f3f3f3f)
if(M[j]>c[i])dp[i][j]=dp[i-1][j]+max(D[i],T[j]);
else dp[i][j]=dp[i-1][j]+max(d[i],T[j]);
for(j=0;j)
for(k=0;k<=all;k++)
dp[i][k
^(1<1<1]);
}
printf(
"%d
",dp[m][0]);
return 0;
}


推荐阅读
  • 每日精选Codeforces训练题:1119E(贪心算法)、821C(栈模拟)和645D(拓扑排序)
    题目涉及三种不同类型的算法问题:1119E(贪心算法)、821C(栈模拟)和645D(拓扑排序)。其中,1119E的问题背景是有n种不同长度的棍子,长度分别为2^0, 2^1, …, 2^(n-1),每种棍子的数量为a[i]。任务是计算可以组成的三角形数量。根据三角形的性质,任意两边之和必须大于第三边。该问题可以通过贪心算法高效解决,通过合理选择棍子组合来最大化三角形的数量。 ... [详细]
  • 题目链接:POJ 2777。问题描述:给定一个区域,需要进行多次涂色操作,并在每次操作后查询某个区间内的不同颜色数量。解决方案:由于题目中颜色种类不超过30种,可以利用线段树的懒惰更新策略来高效处理这些操作。通过懒惰标记,避免了不必要的节点更新,从而显著提高了算法的效率。此外,该方法还能有效应对大规模数据输入,确保在合理的时间内完成所有操作。 ... [详细]
  • 寻找最长无重复字符的子字符串 ... [详细]
  • HDU1176:免费馅饼问题的动态规划解法分析
    题目“免费馅饼”通过动态规划方法进行了解析。该问题的时间限制为 Java 2000ms 和其他语言 1000ms,内存限制为 Java 65536K 和其他语言 32768K。本文详细探讨了如何利用动态规划算法高效求解此问题,并对算法的时间复杂度和空间复杂度进行了深入分析。此外,还提供了具体的实现步骤和代码示例,帮助读者更好地理解和应用这一方法。 ... [详细]
  • 本文详细解析了九度编程平台上的斐波那契数列高效算法挑战(题目编号:1387)。该挑战要求在1秒的时间限制和32兆的内存限制下,设计出高效的斐波那契数列计算方法。通过多种算法的对比和性能分析,本文提供了优化方案,帮助参赛者在限定资源条件下实现高效计算。 ... [详细]
  • Java集合框架特性详解与开发实践笔记
    Java集合框架特性详解与开发实践笔记 ... [详细]
  • 在多堆石子游戏中,通过分析Nim博弈策略,探讨了如何在限定时间和内存条件下实现最优解。本文详细研究了石子游戏中的数学原理和算法优化方法,旨在为参与者提供有效的策略指导。具体而言,文章讨论了不同堆数下的Nim值计算及其应用,帮助玩家在复杂的博弈环境中取得优势。 ... [详细]
  • 在SWUSTOJ #1063中,题目要求对带权重的有向图进行算法计算与分析。假设图G使用邻接矩阵存储,任务是计算图中的最大权值和最小权值,并确定对应的有向边。输入数据的第一行包含一个整数n,表示图中节点的数量。随后的输入将提供图的边及其权重信息。通过该算法,可以有效地找出图中的关键路径和最短路径,为图论问题的解决提供重要参考。 ... [详细]
  • 本文全面解析了 gRPC 的基础知识与高级应用,从 helloworld.proto 文件入手,详细阐述了如何定义服务接口。例如,`Greeter` 服务中的 `SayHello` 方法,该方法在客户端和服务器端的消息交互中起到了关键作用。通过实例代码,读者可以深入了解 gRPC 的工作原理及其在实际项目中的应用。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 本文探讨了在形状类族中应用纯虚函数的设计模式及其解析方法。通过定义一个基类 `Shape`,其中包含一个纯虚函数 `area()`,实现了多态性和代码的灵活性。该设计使得派生类能够根据具体的形状计算面积,从而提高了代码的可扩展性和复用性。示例代码展示了如何利用纯虚函数实现这一机制。 ... [详细]
  • 在HDU 1166敌军布阵问题中,通过运用线段树数据结构,可以高效地计算指定区间的敌军数量。该算法不仅能够在限定的时间和内存条件下快速求解,还能够灵活应对动态变化的战场局势,为实时决策提供支持。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 如何利用正则表达式(regexp)实现高效的模式匹配?本文探讨了正则表达式在编程中的应用,并分析了一个示例程序中存在的问题。通过具体的代码示例,指出该程序在定义和使用正则表达式时的不当之处,旨在帮助读者更好地理解和应用正则表达式技术。 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
author-avatar
用户wuhqqnrd0m
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有