D. Kefa and Dishes(状压)
\(这次总算没有写砸........\)
\(设f[i][j]为上一次吃的i物品状态为j的最大收益\)
\(那么我们就暴力枚举所有状态i,然后在当前状态找出一个没吃的食物j,再去找一个吃过的食物q\)
\]
\(其中val[j]是食物j的收益,vis[q][j]是先吃q再吃j的收益\)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f[20][1<<20],vis[20][20],val[20],n,m,k;
bool isok(int i)
{
	ll ans=0;
	while(i)
	{
		if(i&1)	ans++;
		i>>=1;
	}
	if(ans==m)	return true;
	else	return false;
}
int main()
{
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>val[i];
		f[i][1<<(i-1)]=val[i];
	}
	for(int i=1;i<=k;i++)
	{
		ll l,r,w;
		cin>>l>>r>>w;
		vis[l][r]=w;//先吃l再吃r获得w能量
	}
	for(int i=0;i<(1<<n);i++)//枚举所有状态
	for(int j=1;j<=n;j++)//枚举这一次吃的什么
	{
		int w=(1<<(j-1));
		if(w&i)	continue;//已经吃过了
		for(int q=1;q<=n;q++)
		{
			if((1<<(q-1))&i)//吃过
				f[j][i+w]=max(f[j][i+w],f[q][i]+val[j]+vis[q][j]);
		}
	}
	ll ans=0;
	for(int i=0;i<(1<<n);i++)
	if(isok(i))
	{
		for(int j=1;j<=n;j++)
			ans=max(ans,f[j][i]);
	}
	cout<<ans;
}
D. Kefa and Dishes(状压)的更多相关文章
- Codeforces Round #321 (Div. 2) D. Kefa and Dishes 状压dp
		题目链接: 题目 D. Kefa and Dishes time limit per test:2 seconds memory limit per test:256 megabytes 问题描述 W ... 
- CF580D Kefa and Dishes 状压dp
		When Kefa came to the restaurant and sat at a table, the waiter immediately brought him the menu. Th ... 
- Codeforces ----- Kefa and Dishes [状压dp]
		题目传送门:580D 题目大意:给你n道菜以及每道菜一个权值,k个条件,即第y道菜在第x道后马上吃有z的附加值,求从中取m道菜的最大权值 看到这道题,我们会想到去枚举,但是很显然这是会超时的,再一看数 ... 
- codeforces 580D Kefa and Dishes(状压dp)
		题意:给定n个菜,每个菜都有一个价值,给定k个规则,每个规则描述吃菜的顺序:i j w,按照先吃i接着吃j,可以多增加w的价值.问如果吃m个菜,最大价值是多大.其中n<=18 思路:一看n这么小 ... 
- Codeforces Round #321 (Div. 2) Kefa and Dishes 状压+spfa
		原题链接:http://codeforces.com/contest/580/problem/D 题意: 给你一些一个有向图,求不超过m步的情况下,能获得的最大权值和是多少,点不能重复走. 题解: 令 ... 
- CF580D Kefa and Dishes 【状压dp】By cellur925
		题目传送门 友情链接:new2zydalao%%% 一篇优秀的状压文章 题目大意:$n$个菜有$k$个规则,如果kefa在吃完第$xi$个菜之后吃了第$yi$个菜(保证$xi$.$yi$不相等), ... 
- Codeforces Round #321 (Div. 2) D. Kefa and Dishes(状压dp)
		http://codeforces.com/contest/580/problem/D 题意: 有个人去餐厅吃饭,现在有n个菜,但是他只需要m个菜,每个菜只吃一份,每份菜都有一个欢乐值.除此之外,还有 ... 
- codeforces 580D:Kefa and Dishes
		Description When Kefa came to the restaurant and sat at a table, the waiter immediately brought him ... 
- 【62测试】【状压dp】【dfs序】【线段树】
		第一题: 给出一个长度不超过100只包含'B'和'R'的字符串,将其无限重复下去. 比如,BBRB则会形成 BBRBBBRBBBRB 现在给出一个区间[l,r]询问该区间内有多少个字符'B'(区间下标 ... 
随机推荐
- go 中的WaitGroup
			wait_group sync.WaitGroup 类型是并发安全的,也是开箱就能用的. 该类型有三个指针方法,即:Add,Done和Wait. sync.WaitGroup是一个结构体类型.其中一个 ... 
- Linux C++ 网络编程学习系列(5)——多路IO之epoll边沿触发
			多路IO之epoll边沿触发+非阻塞 源码地址:https://github.com/whuwzp/linuxc/tree/master/epoll_ET_LT_NOBLOCK_example 源码说 ... 
- Java类锁和对象锁实践和内部私有锁关联
			Java类锁和对象锁实践 感谢[jiehao]同学的投稿,投稿可将文章发送到tengfei@ifeve.com 类锁和对象锁是否会冲突?对象锁和私有锁是否会冲突?通过实例来进行说明. 一.相关约定 为 ... 
- Redis之quicklist源码分析
			一.quicklist简介 Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边). 一个列表最多可以包含 232 - 1 个元素 (4294967 ... 
- xshell使用记录
			1.rz---上传文件 2.ls----列出文件 3.chmod +x webbench_pro -----赋予执行权限 4../webbench_pro----当前目录执行程序 
- Labview 机器视觉IMAQ GetFileInfo函数详解
			------------恢复内容开始------------ IMAQ GetFileInfo作用是获取图片文件的信息,包括Calibration(校准).文件类型.水平垂直分辨率.文件数据类型.图像 ... 
- 选择IT行业的自我心得,希望能帮助到各位!(二)
			在前面说道的一,希望大家能喜欢,这也只是自己的一种经历,每个人都有年轻的时候,谁的年级都有自以为是,谁的年轻都有风华正茂,谁的年轻都让自己的内涵给我们自己摔了一个狠狠的道理,人外有人天外有天.我记得当 ... 
- python这门语言为什么要起这个名字
			我只是一只可爱的小虫 前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:Liz喵 PS:如有需要Python学习资料的小 ... 
- 使用GML的八方向自动寻路
			使用GML的八方向自动寻路 本教程适合无基础人员使用. 提示 本教程中仅使用了最简单的方法,并且有一些错误和不规范之处.请谅解一下,在评论区提出,我会修改.古人曰"教学相长",希望 ... 
- 统计字符串中每种字符出现的评率(HashMap中getOrDefault(K, V)方法的使用)
			为了统计字符串中每种字符出现的频率,使用HashMap这种数据结构.其中,字符作为Key,出现的频率作为Value. 基本算法为: 1. 将字符串分成字符数组 2. (1)如果HashMap中的Key ... 
