传送门

题目大意

有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<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
int w[],t[],s[],c[],d[],D[];
int dp[][],all,M[],T[];
int main(){
int n,m,i,j,k;
scanf("%d%d",&n,&m);
all=(<<n)-;
for(i=;i<=n;i++)
scanf("%d%d%d",&w[i],&t[i],&s[i]);
for(i=;i<=m;i++)
scanf("%d%d%d",&c[i],&D[i],&d[i]);
memset(M,,sizeof(M));
memset(T,,sizeof(T));
for(i=;i<=all;i++)
for(j=;j<n;j++)
if(i&(<<j)){
M[i]+=w[j+];
}else T[i]=max(T[i],t[j+]);
memset(dp,0x3f,sizeof(dp));
dp[][]=;
for(i=;i<n;i++)
for(j=;j<=all;j++)
dp[][j^(<<i)]=min(dp[][j^(<<i)],dp[][j]+s[i+]);
for(i=;i<=m;i++){
dp[i][]=0x3f3f3f3f;
for(j=;j<=all;j++)
if(dp[i-][j]<0x3f3f3f3f)
if(M[j]>c[i])dp[i][j]=dp[i-][j]+max(D[i],T[j]);
else dp[i][j]=dp[i-][j]+max(d[i],T[j]);
for(j=;j<n;j++)
for(k=;k<=all;k++)
dp[i][k^(<<j)]=min(dp[i][k^(<<j)],dp[i][k]+s[j+]);
}
printf("%d\n",dp[m][]);
return ;
}

Be a Smart Raftsman SGU475的更多相关文章

  1. Smart Tag——DevExpress WPF初探

    Smart Tag是一个设计时扩展,所有标准控件均自带这个功能,当然也包括 DevExpress WPF Controls .可以快速设置控件的值或者绑定最重要的属性.它还可以帮助你完成一些重复的工作 ...

  2. International Conference for Smart Health 2015 Call for Papers

    Advancing Informatics for healthcare and healthcare applications has become an international researc ...

  3. Call for Papers International Conference for Smart Health (ICSH) 2014

    Call for PapersInternational Conference for Smart Health (ICSH) 2014 Beijing, China July 10-11, 2014 ...

  4. 手工给Meteor增加smart package的方法

    windows下无法装mrt(Meteor的包管理工具).不过还好smart package本身也就只是一个文件夹而已,不需要在Meteor中注册什么东西.所以直接把smart package扔到me ...

  5. [c++] Smart Pointers

    内存管理方面的知识 基础实例: #include <iostream> #include <stack> #include <memory> using names ...

  6. 瞄准SMART目标

    瞄准SMART目标 SMART代表具体的/可度量的/可实现的/相关的和时间可控的. 1.具体的  (一个目标任务应该是具体的/事物的具体化) 2.可度量的  (如何知道你何时完成?确贴的数字,度量具体 ...

  7. Azure CDN Smart Routing 功能正式上线

    经过Azure中国CDN产品团队的不懈努力,融合CDN服务的一个重要功能 Smart Routing目前已经正式上线.在接下来的一段时间该功能将逐步开放给所有客户.本文主要对Smart Routing ...

  8. 思考方式--SMART原则

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 万事开头于你目标的设定,如果开始走错了,那么后面的路将会更加的错误,甚至于更加的努力 ...

  9. Smart原则

    遵循smart原则,必须是具体的.可衡量的.可达到的.与岗位职责相关的.有明确达成期限的.

随机推荐

  1. 《Effective C++》——条款08:别让异常逃离析构函数

    考虑如下代码: class Widget{ public: ... ~Widget(){...}//假设这个可能吐出一个异常 }; void doSomething() { std::vector&l ...

  2. 14_ Component 游戏开发组件模式

    # component 不同作用的程序需要保持互相隔离 我们不想ai 物理 渲染 声音 等等功能 耦合在一起,像下面这样 ``` //bad if (collidingWithFloor() & ...

  3. mysql出现mysql server has gone away错误的解决办法

    应用程序(比如PHP)长时间的执行批量的MYSQL语句.执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段.比如,图片数据的处理.都容易引起MySQLserver has ...

  4. BZOJ - 4196 软件包管理器 (树链剖分+dfs序+线段树)

    题目链接 设白色结点为未安装的软件,黑色结点为已安装的软件,则: 安装软件i:输出结点i到根的路径上的白色结点的数量,并把结点i到根的路径染成黑色.复杂度$O(nlog^2n)$ 卸载软件i:输出结点 ...

  5. sklearn实践_普通线性回归

    import pandas as pd import numpy as np import matplotlib.pyplot as plt data = pd.read_csv(r"C:\ ...

  6. Mycat 在vscode中的开发配置

    mycat是国产目前最被追捧的一款分布式数据库集群软件,有一些公司对数据库和应用都有自己的集群方案,但是更多的是一些面对庞大的数据量,而束手无策. 对于这种问题,我想百分之80遇到的是数据库的瓶颈,所 ...

  7. C#异步编程(四)混合模式线程同步

    之前讨论了基元用户模式和内核模式线程同步构造.其他所有线程同步构造都基于它们,而且一般都合并了用户模式和内核模式构造,我们称为混合线程同步构造.没有线程竞争时,混合构造提供了基元用户模式构造所具有的性 ...

  8. Linux查找/扫描局域网打印机IP

    假设在 192.168.10.* 有一台网络打印机,但是我们不知道它的地址.一种笨方法就是在浏览器中依次输入 192.168.10.1 到 192.168.10.254,看是否出现管理页面. 另一种思 ...

  9. selenium+headless chrome安装使用

    pip install selenium 因为phantomJS将停止维护,所以建议使用headless chromeChromeDriver is a separate executable tha ...

  10. pt-query-digest工具的功能介绍了:

    Ok,可以查看 pt-query-digest工具的功能介绍了: [root@472322 percona-toolkit-2.2.5]# pt-query-digest --help pt-quer ...