令$f[i][j]$表示第$i$个时刻走到点$j$的最小时间,暴力的$dp$复杂度为$o(tm)$
如果没有限制,由于$w\le 5$,记录前5个时刻的状态即可求出当前状态,用矩阵乘法可优化到$o(n^{3}\log_{2}T)$
当$k\le 10$时,考虑特殊的转移只有10个位置,对于其他位置矩乘转移,这些位置特殊考虑,复杂度$o(n^{3}k\log_{2}T)$
用倍增预处理出矩阵的$2^{i}$次幂,直接用答案进行运算使一次乘法降为$o(n^{2})$,总复杂度即$o((n+k)n^2\log_{2}T)

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define ll long long
4 #define oo 1e15
5 struct mat{
6 ll a[305][305];
7 }a,o,aa,mi[31];
8 struct fe{
9 int t,k,w;
10 }b[205];
11 int n,m,t,k,x,y,z,flag,w[105];
12 ll s[305],ans[305];
13 bool cmp(fe x,fe y){
14 return x.t<y.t;
15 }
16 mat mul(mat &x,mat &y){
17 for(int i=1;i<=5*n;i++)
18 for(int j=1;j<=5*n;j++){
19 o.a[i][j]=-oo;
20 for(int k=1;k<=5*n;k++)o.a[i][j]=max(o.a[i][j],x.a[i][k]+y.a[k][j]);
21 }
22 return o;
23 }
24 void mul(mat &x){
25 memcpy(s,ans,sizeof(s));
26 for(int i=1;i<=5*n;i++){
27 ans[i]=-oo;
28 for(int j=1;j<=5*n;j++)ans[i]=max(ans[i],s[j]+x.a[j][i]);
29 }
30 }
31 void pow(int n){
32 for(int i=0;i<=30;i++)
33 if (n&(1<<i))mul(mi[i]);
34 }
35 int main(){
36 freopen("delicacy.in","r",stdin);
37 freopen("delicacy.out","w",stdout);
38 scanf("%d%d%d%d",&n,&m,&t,&k);
39 for(int i=1;i<=n;i++)scanf("%d",&w[i]);
40 for(int i=1;i<=5*n;i++)
41 for(int j=1;j<=5*n;j++)a.a[i][j]=-oo;
42 for(int i=1;i<=m;i++){
43 scanf("%d%d%d",&x,&y,&z);
44 a.a[(5-z)*n+x][4*n+y]=w[y];
45 }
46 for(int i=n+1;i<=5*n;i++)a.a[i][i-n]=0;
47 aa=a;
48 for(int i=1;i<=k;i++)scanf("%d%d%d",&b[i].t,&b[i].k,&b[i].w);
49 sort(b+1,b+k+1,cmp);
50 mi[0]=a;
51 for(int i=1;i<=30;i++)mi[i]=mul(mi[i-1],mi[i-1]);
52 for(int i=1;i<=5*n;i++)ans[i]=-oo;
53 ans[4*n+1]=0;
54 for(int i=1;i<=k;i++){
55 pow(b[i].t-b[i-1].t-1);
56 a=mi[0];
57 for(int j=1;j<=5*n;j++)a.a[j][4*n+b[i].k]+=b[i].w;
58 mul(a);
59 }
60 pow(t-b[k].t);
61 if (ans[4*n+1]<0)printf("-1\n");
62 else printf("%lld",ans[4*n+1]+w[1]);
63 return 0;
64 }

[loj3339]美食家的更多相关文章

  1. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  2. [BZOJ1691][Usaco2007 Dec]挑剔的美食家

    [BZOJ1691][Usaco2007 Dec]挑剔的美食家 试题描述 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了. ...

  3. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家( 平衡树 )

    按鲜嫩程度排个序, 从大到小处理, 用平衡树维护价值 ---------------------------------------------------------------------- #i ...

  4. BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心

    BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心 题意: 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返 ...

  5. 51nod 挑剔的美食家

    挑剔的美食家    基准时间限制:1 秒 空间限制:131072 KB 分值: 5 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一 ...

  6. Java实现 蓝桥杯VIP 算法提高 聪明的美食家

    算法提高 聪明的美食家 时间限制:1.0s 内存限制:256.0MB 问题描述 如果有人认为吃东西只需要嘴巴,那就错了. 都知道舌头有这么一个特性,"由简入奢易,由奢如简难"(据好 ...

  7. 【NOI2020】美食家(矩阵)

    Description 给定一张有向图,\(n\) 个顶点,\(m\) 条边.第 \(i\) 条边从 \(u_i\) 到 \(v_i\),走完该边的用时为 \(w_i\).每一个点有一个价值 \(c\ ...

  8. [XIN算法应用]NOI2020美食家

    XIN(\(updated 2021.6.4\)) 对于很多很多的题目,发现自己并不会之后,往往会直接冲上一个XIN队算法,然而,这样 \(\huge{\text{鲁莽}}\) 的行为只能获得 TLE ...

  9. BZOJ1691: [Usaco2007 Dec]挑剔的美食家

    传送门: 一句话题解:贪心+treap 好几天前刚学的treap,然后真到了考treap又写不出来,这么辣鸡还搞什么OI 先按$A_i$递减排序,然后把$C_i$也递减排序,然后用一个指针指向$M$序 ...

随机推荐

  1. js--typeof 和 instanceof 判断数据类型的区别及开发中的使用

    前言 日常的开发中,我们经常会遇到判断一个变量的数据类型或者该变量是否为空值的情况,你是如何去选择判断类型的操作符的?本文来总结记录一下我们开发人员必须掌握的关于 typeof 和 instanceo ...

  2. pycharm环境下配置scrap爬虫环境

    [写在开头] 参考文章后面给出了备注信息,是在解决这个问题的时候,查找的比较有亮点的参考文章,如果本文章写的不太清楚的,可以去原文章进行查看.下面列举的四个文章有参考的成分也有验证的成分,解决办法重点 ...

  3. docker内服务访问宿主机服务

    目录 1. 场景 2. 解决 4. 参考 1. 场景 使用windows, wsl2 进行日常开发测试工作. 但是wsl2经常会遇到网络问题.比如今天在测试一个项目,核心功能是将postgres 的数 ...

  4. JBOSS未授权访问漏洞利用

    1. 环境搭建 https://www.cnblogs.com/chengNo1/p/14297387.html 搭建好vulhub平台后 进入对应漏洞目录 cd vulhub/jboss/CVE-2 ...

  5. 如何配置log4Net

    之前曾经用过几次,但是每次都是用完就忘了,下次再用的时候要baidu半天,这次弄通之后直接记下来. 步骤如下. 1. 安装log4Net,直接用NuGet, Install-Package log4N ...

  6. Java:常用的容器小记

    Java:常用的容器小记 对 Java 中的 常用容器,做一个微不足道的小小小小记 容器类概述 常见容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 M ...

  7. Ubuntu 用户管理/权限管理

    Ubuntu 用户管理/权限管理 小小记录一下 Ubuntu 下用户/权限管理常用的一些命令 用户管理 组管理 文件权限 给用户添加 sudo 权限 给用户添加 sudo 权限 首先先给出几个文件 / ...

  8. 详解DNS域名解析系统(域名、域名服务器[根、顶级、授权/权限、本地]、域名解析过程[递归与迭代])

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105583806 学习课程:<2019王道考研计算机网络> 学习目的 ...

  9. Python中根据时间自动创建文件夹

    导语 ​ 电脑桌面文件太多查找起来比较花费时间,并且凌乱的电脑桌面也会影响工作心情,于是利用python根据时间自动建立当日文件夹,这样就可以把桌面上文件按时间进行存放. 代码实现 # _*_codi ...

  10. CentOS8 部署 MySQL8

    前言 有来项目的数据库在此之前使用的是 Docker 部署的,具体可见文章 Docker 安装 MySQL8 ,服务器是阿里云 2C2G 的ECS轻量服务器,可能是配置问题有时不论查什么都要等很长很长 ...