dp[S][i]表示已经吃掉的食物集合是S且刚吃的是第i个食物的最大满意度 。。没什么好说的 1#include<cstdio>2#include<algorithm>3usingnamespacestd;45intval[18],pairs[18][18];6longlongd[1<<18][18];78intgetCnt(ints){9intcnt=0;10for(inti=0; i<18; ++i){11if(s>>i&1) ++cnt;12}...
Kefa and Dishes CodeForces - 580D 位运算,dp kefa进入了一家餐厅,这家餐厅中有n个菜(0<n≤18),kefa对第i个菜的满意度为ai(0≤ai≤10^9),并且对于这n个菜有k个规则,如果kefa在吃完第xi个菜之后吃了第yi个菜(保证xi、yi不相等),那么会额外获得ci(0≤ci≤10^9)的满意度。kefa要吃m道任意的菜(...
Kefa knows that thei-th dish gives himaiunits of satisfaction. But some dishes do not go well together and some dishes go very well together. Kefa set to himselfkrules of eating food of the following type — if he eats dishxexactly before dishy(there should be no other dishes betweenxan...
AC代码: #pragma GCC optimize("O2")#pragma GCC optimize("O3")#include<bits/stdc++.h>usingnamespacestd;#define TLE (double)clock() / CLOCKS_PER_SEC <= 0.95#define int long long#define double long doubletypedeflonglongll;typedefunsignedlonglongull;typedefpair<int,int>pii;constintN=20+5,M...
状压dp Codeforces580D Kefa and Dishes 题意:有n种菜,现在选m种菜来吃,还有很多条好处,如果在吃y的前一道菜是x的话,那么就可以获得满意度。每一种菜都有一个满意度。 思路:...只能说Codeforces的测评机实在是太好了,n=18,O(n^2*2^n)复杂度的记忆化搜索代码都能在500ms跑出来,我自己本地跑了3秒多...
Codeforces - 1264C - Beautiful Mirrors with queries - 概率期望dp 2019-12-18 20:52 −一道挺难的概率期望dp,花了很长时间才学会div2的E怎么做,但这道题是另一种设法。 https://codeforces.com/contest/1264/problem/C 要设为 $dp_i$ 表示第 $i$ 个格子期望经过多少次,所以 $dp_{n+1}=1$。
dp + 状态压缩 - Codeforces 580D Kefa and Dishes 简介:Kefa and Dishes Problem's Link Mean: 菜单上有n道菜,需要点m道。每道菜的美味值为ai。 有k个规则,每个规则:在吃完第xi道菜后接着吃yi可以多获得vi的美味值。 Kefa and Dishes Problem's Link...
Codeforces 580D Kefa and Dishes(状态压缩DP) 题目链接:http://codeforces.com/problemset/problem/580/D 题目大意: 有n盘菜每个菜都有一个满意度,k个规则,每个规则由x y c组成,表示如果再y之前吃x那么满意度会额外增加c, 现在凯迪想吃m盘菜,并且满意度最大,请求出满意度。
}while(i>='0'&&i<='9') { ans=(ans<<1)+(ans<<3)+i-'0'; i=getchar(); }returnans*f; } lol dp[19][1<<18]; lol a[19],b[19][19]; lol n,m,k;intmain() { lol ans=0;in(n);in(m);in(k);for(lol i=1;i<=n;i++)in(a[i]);for(lol i=1;i<=k;i++) ...
codeforces 580D. Kefa and Dishes(状压dp) 题目链接: codeforces 580D 题目大意: 给出n个物品,选出m个,如果有两个物品存在一条有向边,那么获得这条边的边权,每个点有一个点权,问如何选取能获得最多的权值。 题目分析: 因为数据量比较小,所以采用的是状态压缩....