首页 > TAG信息列表 > ZJOI2005
题解-[ZJOI2005]沼泽鳄鱼
题解-[ZJOI2005]沼泽鳄鱼 前置知识: 邻接矩阵 矩阵乘法 矩阵快速幂 [ZJOI2005]沼泽鳄鱼 未完待续【ZJOI2005】午餐
题面 https://www.luogu.org/problem/P2577 题解 #include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;struct node{ int a,b; bool operator < (const node &rhs) const { return b>rhs.b; }}P2577 [ZJOI2005]午餐[DP]
题目描述 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂。这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭。由于每个人的口味(以及胃口)不同,所以他们要吃的菜各有不同,打饭所要花费的时间是因人而异的。另外每个人吃饭的速度也不尽相同,所以吃饭花费P2577 [ZJOI2005]午餐
贪心可得吃饭时间长的优先在前面打饭得到的解更优 证明过程: 假设第i个人打饭时间为a[i].da,第i个人吃饭的时间为a[i].cf,第j个人同理 假设a[i].cf>a[j].cf **所以就有两种情况: 1.第i个人在第j个人的前面,此时设最后一个人吃完饭的时间为t1 t1=max(a[i].cf+a[i].da,a[j].da+a[ZJOI2005]午餐 [动态规划]
P2577 [ZJOI2005]午餐 每个人有排队和吃饭花费的时间 将人分为两队排队 求所有人最早吃完时间 可以想到吃饭吃的越久的人越早排队越优 所以从大到小排序 开始想到f[k][i][j]前k个人排队时1号窗口排队花费时间i 2号窗口花费时间j最早吃完时间 但会爆空间 继而经过一系列思考f[i][j]P2577 [ZJOI2005]午餐
神仙dp题。 先做一个贪心的排序:吃得慢的先去打饭。即按b从大到小排序。 接下来再做dp: 我们可以这么定义状态:\(dp[i][j][k]\)表示前\(i\)个人,第一队的人打饭用了\(j\)时间,第二队的人打饭用了\(k\)时间,再吃完饭的最少时间。 但是这样开的数组是\(200 \times 40000 \times 40000\),铁定P2579 [ZJOI2005]沼泽鳄鱼
https://www.luogu.org/problemnew/show/P2579 1、注意正确把握周期时间点,从A[1]乘到A[11]再乘A[0] 2、矩阵乘法没有交换律,得先预处理Q=A[1]*A[2]*......*A[11]*A[0],再用算出Q^[K/12],对于剩下的,从A[1]开始乘完K%12个 #include<bits/stdc++.h>#define LL long longusing namespace