令$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. 洛谷1429 平面最近点对(KDTree)

    qwq(明明可以直接分治过掉的) 但是还是当作联系了 首先,对于这种点的题,很显然的套路,我们要维护一个子树\(mx[i],mn[i]\)分别表示每个维度的最大值和最小值 (这里有一个要注意的东西!就 ...

  2. HTML5元素背景知识

    目录 HTML5元素背景知识 语义与呈现分离 元素选用原则 少亦可为多 别误用元素 具体为佳,一以贯之 对用户不要想当然 元素说明体例 ol元素 元素速览 文档和元数据元素 文档和元数据元素 文本元素 ...

  3. 2020.3.28-ICPC训练联盟周赛,选用试题:UCF Local Programming Contest 2016

    A.Majestic 10 签到题. #include<iostream> #include<cstdio> #include<cstring> #include& ...

  4. Stream中的Pipeline理解

    使用Stream已经快3年了,但是从未真正深入研究过Stream的底层实现. 今天开始把最近学到的Stream原理记录一下. 本篇文章简单描述一下自己对pipeline的理解. 基于下面一段代码: p ...

  5. BUAA_2020_软件工程_软件案例分析作业

    项目 内容 这个作业属于那个课程 班级博客 这个作业的要求在哪里 作业要求 我在这个课程的目标是 学习掌握软件工程的相关知识 这个作业在哪个具体方面帮我实现目标 通过对具体软件案例的分析学习软件工程 ...

  6. 大闸蟹的OO第二单元总结

    OO的第二单元是讲多线程的协作与控制,三次作业分别为FAFS电梯,ALS电梯和三部需要协作的电梯.三次作业由浅入深,让我们逐渐理解多线程的工作原理和运行状况. 第一次作业: 第一次作业是傻瓜电梯,也就 ...

  7. 2021.7.15考试总结[NOIP模拟16]

    ZJ模拟D2就是NB.. T1 Star Way To Heaven 谁能想到这竟是个最小生成树呢?(T1挂分100的高人JYF就在我身边 把上边界和下边界看成一个点和星星跑最小生成树,从上边界开始跑 ...

  8. 有了 HTTP 协议,为什么还需要 Websocket?

    WebSocket 是一种基于 TCP 连接上进行全双工通信的协议,相对于 HTTP 这种非持久的协议来说,WebSocket 是一个持久化网络通信的协议. 它不仅可以实现客户端请求服务器,同时可以允 ...

  9. Docker 18.03导入导出

    docker中分容器和镜像,简单可以理解为容器是运行中的实例,镜像是运行实例所需的静态文件. 导入导出既可以对容器做操作,也可以对镜像做操作.区别在于镜像可以随时导出,容器必须要停止之后才可以导出,否 ...

  10. SpringBoot中使用@ConfigurationProperties提示:Configuration Annotation Processor not found in classpath

    问题 Springboot1.5以上版本,在使用 @ConfigurationProperties注解的时候会提示Spring Boot Configuration Annotation Proces ...