「美团 CodeM 初赛 Round B」送外卖2

内存限制:32 MiB
时间限制:200 ms

题目描述

一 张 n 个 点 m 条 有 向 边 的 图 上 , 有 q 个 配 送 需 求 , 需 求 的 描 述 形 式 为 (si,ti,li,ri), 即需要从点 si 送到 ti, 在时刻 li 之后( 包括 li ) 可以在 si 领取货物, 需要在时刻 ri 之前( 包括 ri) 送达 ti, 每个任务只需完成一次。
图上的每一条边均有边权, 权值代表通过这条边消耗的时间。 在时刻 0 有一个工作人员在点 1 上, 求他最多能完成多少个配送任务。
在整个过程中, 可以认为领货跟交货都是不消耗时间的, 时间只花费在路程上。 当然在一个点逗留也是允许的。

输入格式

第一行, 三个正整数 n,m,q(2≤n≤20,1≤m≤400,1≤q≤10)
接下来 m 行, 每行三个正整数 ui,vi,ci(1≤ui,vi≤n,1≤ci≤20000)表示有一条从ui 到 vi 耗时为 ci 的有向边。
接下来 q 行, 每行四个正整数 si,ti,li,ri(1≤si,ti≤n,1≤li≤ri≤10^6), 描述一个配送任务。

输出格式

一个整数,表示最多能完成的任务数量。

样例

样例输入

5 4 3
1 2 1
2 3 1
3 4 1
4 5 1
1 2 3 4
2 3 1 2
3 4 3 4

样例输出

2

样例解释

工作人员可以在时刻 1 到达点 2 ,领取第二个货物后在时刻 2 到达点 3 后交货,逗留到时刻 4 ,领取第三个货物,在时刻 4 到达点 4 并交货。

解题报告

每个货物的装填无非是三种:
1. 没拿
2. 拿在手上
3. 送到了
那么就简单了,写一个状压DP,压三位,表示三个状。我们肯定走最短路径,那么就先刷一趟最短路,然后分类讨论,就可以了。

代码如下

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 25
using namespace std;
int Ans,n,m,q,Three[MAXN],All,dst[MAXN][MAXN],INF;
struct xcw{int S,T,l,r;}a[MAXN];
int f[MAXN][60005*3];
void work(){memset(f,63,sizeof(f));INF=f[0][0];f[1][0]=0;for(int k=0;k<All;k++)for(int i=1;i<=n;i++)for(int j=1;j<=q;j++){int t=k%Three[j+1]/Three[j];if(t==0) if(f[i][k]+dst[i][a[j].S]<=a[j].r) f[a[j].S][k+Three[j]]=min(f[a[j].S][k+Three[j]],max(a[j].l,f[i][k]+dst[i][a[j].S]));if(t==1) if(f[i][k]+dst[i][a[j].T]<=a[j].r) f[a[j].T][k+Three[j]]=min(f[a[j].T][k+Three[j]],           f[i][k]+dst[i][a[j].T] );}
}
int main(){
//  freopen("prob.in","r",stdin);
//  freopen("prob.out","w",stdout);scanf("%d%d%d",&n,&m,&q);memset(dst,63,sizeof(dst));for(int i=1;i<=n;i++) dst[i][i]=0;for(int i=1;i<=m;i++){int x,y,w;scanf("%d%d%d",&x,&y,&w);dst[x][y]=min(dst[x][y],w);}for(int i=1;i<=q;i++) scanf("%d%d%d%d",&a[i].S,&a[i].T,&a[i].l,&a[i].r);for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) dst[i][j]=min(dst[i][j],dst[i][k]+dst[k][j]);Three[1]=1;for(int i=2;i<=q+1;i++) Three[i]=Three[i-1]*3;All=Three[q+1];work();for(int k=0;k<All;k++)for(int i=1;i<=n;i++)if(f[i][k]<INF){int Now=0;for(int j=1;j<=q;j++) Now+=((k%Three[j+1]/Three[j])==2);Ans=max(Ans,Now);}printf("%d\n",Ans);return 0;
}

转载于:https://www.cnblogs.com/XSamsara/p/9059393.html

LibreOJ #6177. 「美团 CodeM 初赛 Round B」送外卖2【状压DP】相关推荐

  1. 「美团 CodeM 初赛 Round B」送外卖2

    题目描述: 一张n个点m条有向边的图上,有q个配送需求,需求的描述形式为(si,ti,li,ri),即需要从点si送到ti,在时刻li之后(包括li)可以在si领取货物,需要在时刻ri之前(包括ri) ...

  2. 【LOJ6178】 「美团 CodeM 初赛 Round B」景区路线规划 期望概率DP

    题目链接 LOJ 题解 考虑进行Dp,我们设 f[i][j] f [ i ] [ j ] f[i][j]表示到达节点 i i i消耗了j" role="presentation&q ...

  3. #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队

    #6164. 「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 ...

  4. Codeforces Round #585 (Div. 2) E. Marbles 状压dp + 逆序对

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑数列最终的状态一定是相同颜色在一起,所以我们发现他的颜色是有顺序的!显然可以用状压dpdpdp来枚举颜色的顺序,但是又有问题了,你怎么确定当前这个 ...

  5. [美团 CodeM 初赛 Round A]最长树链

    题目大意: 给你一棵带点权的树,找出一个最长的树链满足链上点权的最大公因数不为1. 思路: 暴力DP. 对于每个点,记录一下以这个点为一个端点的所有链的最大公因数及长度. 然后暴力转移一下,时间复杂度 ...

  6. Educational Codeforces Round 13 E. Another Sith Tournament 状压dp

    E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...

  7. Codeforces Beta Round #8 C. Looking for Order 状压dp

    题目链接: http://codeforces.com/problemset/problem/8/C C. Looking for Order time limit per test:4 second ...

  8. 美团北京,今日起无人驾驶送外卖

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 自动驾驶落地,载物快于载人已是共识. 在这个领域,最具场景优势和最不容忽视的玩家--美团,最近就有一系列动向. 比如,刚融资100亿美元,用 ...

  9. LibreOJ 6514. 「雅礼集训 2018 Day10」文明【虚树+LCA】

    6514. 「雅礼集训 2018 Day10」文明 [题目描述] 传送门 [题解] 考虑笨蛋的写法,可以用LCA求出1号和其他点的中点,然后DFS搜索Size大小即可,但是,复杂度显然要炸,但是我们会 ...

最新文章

  1. matlab同窗口显示图片,[求助]关于GUI的问题,如何在同一窗口里显示四副图片...........
  2. C语言在有序的数组是否存在固定点(附完整源码)
  3. 概率分布:PMF与PDF
  4. emacs c语言 自动补全,Emacs 与 C/C++ 代码自动补全
  5. apm java_非Java专家的APM:什么泄漏?
  6. 第11章 路由器OSPF动态路由配置
  7. 织梦在线艺术字体转换生成平台网站源码
  8. python 列表 元祖 字典 集合_python中列表、元祖、字典和集合
  9. 如何查看电脑上是否安装有IIS服务
  10. 我应该做哪个行业的销售
  11. Savage(扩展欧几里得)
  12. php地名转换成拼音,php汉字转拼音_php中怎么将中文转换拼音
  13. MacOS Mojave 更换开机登录界面壁纸
  14. MATLAB代码:电-气-热综合能源系统耦合优化调度 关键词:综合能源系统 优化调度 电气热耦合 主要内容:代码主要做的是一个考虑电网、热网以及气网耦合调度的综合能源系统优化调度模型
  15. 利用神经网络预测链家网上海租房价格(Python)
  16. 审慎 合宜与慈善三种学派的分类与核心思想
  17. 男士必须收藏:男士健身方案
  18. Manacher算法的基础应用:小A的回文串
  19. 75个顶级开源安全应用(1)
  20. 芯片CP/FT测试的基本概念理解

热门文章

  1. 不同粒径大小的金纳米粒子|单分散小粒径金纳米颗粒|黄色纳米颗金粒粒径2nm
  2. 机房搬迁AIX系统调研指令模板
  3. 分形——谢尔宾斯基三角形
  4. 面向嵌入式开发的C++中间件库
  5. cart购物车php文件,php购物车实现方法,php购物车实现
  6. 深度GHOST XP快速装机版V6.5
  7. 报童问题求解最大利润_仿真实例009:汽车天线仿真(双向混合求解)
  8. 制作chm文件搜索时总提示找不到主题的问题
  9. C盘免费扩容【已解决】
  10. 国外数据库风云五十载:老骥伏枥,新秀辈出