博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces 580D. Kefa and Dishes(状压dp)
阅读量:3715 次
发布时间:2019-05-21

本文共 740 字,大约阅读时间需要 2 分钟。

题目链接:


题目大意:

给出n个物品,选出m个,如果有两个物品存在一条有向边,那么获得这条边的边权,每个点有一个点权,问如何选取能获得最多的权值。


题目分析:

  • 因为数据量比较小,所以采用的是状态压缩.
  • 定义dp[s][i]表示在状态s(记录某个物品选或没选)下第i个物品作为最后一个选取的物品的最大值,那么转移很简单,就是如果存在有向边,那么就加点权与边权,否则就只加点权。

AC代码:

#include 
#include
#include
#include
using namespace std;const int MAX = 1<<19;typedef long long LL;LL dp[MAX][20];int n,m,k;int a[20];int mp[20][20];int main ( ){ while ( ~scanf ( "%d%d%d" , &n , &m , &k ) ) { memset ( mp , 0 , sizeof ( mp ) ); for ( int i = 0 ; i < n ; i ++ ) scanf ( "%d" , &a[i] ); while ( k-- ) { int x,y,z; scanf ( "%d%d%d" , &x , &y , &z ); x--,y--; mp[x][y] = z; } int total = 1<

转载地址:http://xqvjn.baihongyu.com/

你可能感兴趣的文章
【写一个操作系统】2—VMware创建软盘映像
查看>>
STM32—SPI读写FLASH
查看>>
【写一个操作系统】3—汇编语言学习及Makefile入门
查看>>
const关键字用法
查看>>
extern关键字用法
查看>>
红外遥控小车
查看>>
FTP(vsftp)服务器的搭建配置以及访问控制
查看>>
python实现的简单点对点(p2p)聊天
查看>>
nwjs node-webkit 桌面app自定义窗体事件 nwjs托盘tray的实现
查看>>
后端使用pyecharts画图并输出为图片保存
查看>>
nodejs日志读取 日志查找 日志刷新
查看>>
GB2312汉字拼音对照表
查看>>
手机 用户界面和多媒体 版面有价值问题整理 j2medev com 0406更新
查看>>
SP 梦网masterSP模式下的sp生存
查看>>
dotNET ThreadPool 对象中没有足够的自由线程来完成操作 的现象和解决办法
查看>>
转 FTP搜索引擎的设计与实现(优化版)
查看>>
C++游戏引擎开发
查看>>
opencv 检测直线 圆 矩形
查看>>
Modbus测试工具ModbusPoll与Modbus Slave使用方法
查看>>
SQLite使用小结
查看>>