当前位置: 首页 > 编程日记 > 正文

NOIP模拟题——B

【题目描述】
我们要从n种食物选m个出来,安排一个顺序吃掉它(们),每种食物有个美味值ai,然后我们有k个规则,每个规则有 xi, yi 和 ci三个数,如果吃完第xi种食物接下来马上吃第yi种食物,第j种食物的美味值会增加ci。每种食物至多吃一个,求美味值最大的和是多少?
【输入格式】
第一行有三个数n,m,k,k代表有k个规则(0<=k<=n*(n-1))。
第二行有n个数字代表每个食物的美味值。
接下去有k行,每行三个数xi,yi,ci。保证没有任意两个规则的xi和yi同时相同。
【输出格式】
一行一个数代表答案
【sample input1】
2 2 1
1 1
2 1 1
【sample output1】
3
【sample input 2】
4 3 2
1 2 3 4
2 1 5
3 4 2
【sample output 2】
12
【数据范围】
30% m<=n<=5 ,0<=ci,ai<=1e5
100% m<=n<=18,0<=ci,ai<=1e9

由于数据小,找的多,所以考虑状压DP。f[i][j]表示i状态时最后一个数为j的最大值,若没有吃完则每次找还未吃掉的和吃掉的(看做是当前状态最后一个吃掉的),若吃多了就continue,否则(找完m个了)找dp[i][j]的最大值。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cmath>
 5 using namespace std;
 6 const long long maxn=20;
 7 long long dp[(1<<maxn)][maxn];
 8 long long v[maxn];
 9 long long pp[maxn][maxn];
10 long long n,m,k;
11 long long max(long long x,long long y)
12 {
13     if(x<y)return y;
14     return x;
15 }
16 long long _count(long long x)
17 {
18     long long an=0;
19     while(x)
20     {            
21         if(x&1)an++;
22         x>>=1;
23     }
24     return an;
25 }
26 int main()
27 {
28     freopen("b.in","r",stdin);
29     freopen("b.out","w",stdout);
30     scanf("%I64d%I64d%I64d",&n,&m,&k);
31     for(int i=0;i<=n-1;i++)
32     scanf("%I64d",&v[i]);
33     for(int i=1;i<=k;i++)
34     {
35         int x,y;long long z;
36         scanf("%d%d%I64d",&x,&y,&z);
37         pp[x-1][y-1]=z;
38     }
39     long long ans=0;
40     for(int i=0;i<=n-1;i++)
41     dp[(1<<i)][i]=v[i];
42     for(int i=0;i<(1<<n);i++)
43     {
44         int qw=_count(i);
45         if(qw>m)continue;
46         if(qw==m)
47         {
48             for(int j=0;j<=n-1;j++)
49             ans=max(ans,dp[i][j]);
50             continue;        
51         }
52         else
53         {
54             for(int j=0;j<=n-1;j++)//枚举没有吃的
55             {
56                 if(((1<<j)&i)==0)//没有吃
57                 {
58                     for(int k=0;k<=n-1;k++)//枚举最后吃的点
59                     if(((1<<k)&i))//吃过 
60                     dp[i|(1<<j)][j]=max(dp[i][k]+pp[k][j]+v[j],dp[i|(1<<j)][j]);
61                 } 
62             }
63             
64         }
65     }
66     printf("%I64d",ans);
67     return 0;
68 }

转载于:https://www.cnblogs.com/937337156Zhang/p/6051322.html

相关文章:

Maven使用常用命令

> mvn clean删除target文件夹> mvn clean test编译测试代码&#xff0c;默认被放到target/test-classes文件夹下面> mvn clean compile编译主代码&#xff0c;并放到target/classes文件夹下> mvn clean package打包代码&#xff0c;我们可以看到target文件下生成了…

04- CoreData轻量级版本的迁移

CoreData版本的迁移 一 轻量级的数据迁移 例如添加新的实体&#xff0c;新的实体属性。 轻量级版本迁移方案非常简单&#xff0c;大多数迁移工作都是由系统完成的&#xff0c;只需要告诉系统迁移方式即可。在持久化存储协调器(PSC)初始化对应的持久化存储(NSPersistentStore…

通da信TCP长连接数据算法分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分析通da信TCP长连接内部分数据的算法。”作为一款老牌的炒股软件&#xff0c;通da信里面的数据是相当的丰富&#xff0c;免费的也很丰富&#xff0c;准确性也很好&#xff0c;例如&#xff0c;这种股票之间关联的信息。通da信一…

产品经理怎么样用图表传达数据信息(多图)

上文有点仓促了&#xff0c;结尾没有写好。补上&#xff1a; 对劣质成本分析的时候应该注意&#xff1a; 1、在进行劣质成本分析的时候&#xff0c;要注意区分成本和必要的浪费。要注意一个关系&#xff0c;对必要浪费的控制会导致其他成本的上升。例如前文说到四小时送一次货&…

'This NSPersistentStoreCoordinator has no persistent stores 报错

可能是你改变coredata的属性项之后再运行的话在模拟器中会出现这个问题。找上面说的&#xff0c;找到mac下的模拟器中的程序路径&#xff0c;然后删掉其sqlite文件再运行就好了&#xff01;&#xff01;&#xff01;

tcp断开连接,4次握手,为什么wireshark 只能抓到3个包?

用wireshark 抓包&#xff0c;看看tcp 断开连接的过程. 以前书上说tcp断开连接&#xff0c;4次握手&#xff0c;可我为什么wireshark 只能抓到3个包&#xff1f; 百度一下&#xff0c;别人也有类似的疑问。 【求助】书上和网上的资料说&#xff0c;TCP拆除连接需要四次握手。但…

如何在python开发的GUI界面程序中恰当地使用PyExecJS

点击上方↑↑↑蓝字[协议分析与还原]关注我们“解决一闪而过的黑框的小技巧。”在使用python开发过程中&#xff0c;不可避免地&#xff0c;会开发带界面的应用&#xff0c;也会经常使用js来完成一些功能&#xff0c;比如&#xff0c;我使用python开发个了一个小应用&#xff1…

switch和case的理解

下面是复习java基础知识的时候&#xff0c;发现的一些点&#xff0c;总结下&#xff0c;备忘 int a345;switch (a) {case 23:System.out.println("23"); // break;case 345://条件符合&#xff0c;下面的case条件不会在判断&#xff0c;直接执行&#xff1b;System…

05-自己创建mapmodel自定义迁移方式

自动创建Mapping 如果模型的改变很大或者不支持轻量级数据迁移的条件&#xff0c;则我们需要进行自定义迁移。 使用映射模型 适用于更加复杂的数据的迁移 NSMappingModel 类似于数据模型 NSEntityMapping 告知迁移过程如何在目标数据存储中处理源实体的映射。 映射类型决…

Linux内核之内存管理(4)--缺页处理程序

本文主要解说缺页处理程序&#xff0c;凝视足够具体&#xff0c;不再解释。 //以下函数将一页内存页面映射到指定线性地址处&#xff0c;它返回页面的物理地址 //把一物理内存页面映射到线性地址空间指定处或者说把线性地址空间指定地址address处的页面映射到主内存区页面page上…

WebSocket协议分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 解析websocket数据格式。”好久不见&#xff0c;一晃一年又过去了&#xff0c;祝大家新年好运。今天&#xff0c;给大家分析一个常见的协议——WebSocket&#xff0c;这是一个标准协议&#xff0c;虽然没有HTTP历史悠久&#xff…

《postfix邮件服务下mailq、postmap、postqueue 、 postsuper等用法》

1、Mailq 功能说明&#xff1a;显示待寄邮件的清单。 语  法&#xff1a;mailq [-q] 补充说明&#xff1a;mailq可列出待寄邮件的清单&#xff0c;包括邮件ID&#xff0c;邮件大小&#xff0c;邮件保存时间&#xff0c;寄信人&#xff0c;收信人&#xff0c;以及邮件无法寄出…

[deviceone开发]-一个很炫的手势动画示例

一、简介 这是iOS下的效果&#xff0c;android下完全一致。通过do_GestureView组件和do_Animation组件&#xff0c;deviceone能很容易实现复杂的跨平台纯原生动画效果,这个示例就是通过手势控制图片上下动画滑动实现开合效果&#xff0c;还支持声音效果。 二、效果图 三、相关下…

iOS lldb调试

LLDB 初始 LLDB 是一个有着 REPL 的特性和 C ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部&#xff0c;存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它&#xff0c;你可以查看变量的值&#xff0c;执行自定的指令&#xff0c;并且按照你所认为合适的…

万物之中,希望至美

一觉醒来&#xff0c;虎年就这么来了。感谢各位朋友过去的一年与我同在。在新的一年到来之际&#xff0c;我首先做个检讨&#xff0c;过去的一年&#xff0c;我们这个公众号&#xff0c;更新不够频繁&#xff0c;属于三天打鱼两天晒网型公众号&#xff0c;没有为大家带来足够丰…

[转]VS2015编译的程序在其他机器上缺少msvcp120.dll

http://www.lai18.com/content/1159618.html 1、 今天分享一个自己在开发过程中遇到的困难。用VS2015开发了一个windows客户端&#xff08;win32项目&#xff09;&#xff0c;在自己的机器上运行很流畅。当你得意的把releas版本进行打包&#xff0c;并进行发布后&#xff0c;问…

Discuz!的cookie机制

最近在做Discuz!的插件&#xff0c;需要用到cookie&#xff0c;一直觉得奇怪的一个问题&#xff0c;Discuz!大量使用了cookie&#xff0c;但是我在编写插件的时候如果不加入session_start函数cookie就无法使用&#xff0c;按理说Discuz!使用了这么多cookie它的核心应该有调用se…

iOS infoplist 权限设置

<dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> <key>NSBluetoothPeripheralUsageDescription</key> <string>需要使用您的蓝牙</string> <key>NSCalendarsUsageDes…

python使用socket实现协议TCP长连接框架

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 使用python实现协议中常见的TCP长连接框架。”分析多了协议就会发现&#xff0c;很多的应用&#xff0c;特别是游戏类和IM类应用&#xff0c;它们的协议会使用长连接的方式&#xff0c;来保持客户端与服务器的联系&#xff0c;这…

哈夫曼编码与解码

这是我的第一篇博客&#xff0c;希望大神们批评指正。 首先介绍以下什么是哈夫曼树&#xff08;来自百度百科&#xff09; 哈夫曼树─即最优二叉树&#xff0c;带权路径长度最小的二叉树&#xff0c;经常应用于数据压缩。 在计算机信息处理中&#xff0c;“哈夫曼编码”是一种一…

012-python基础-数据运算

1、算数运算&#xff1a; 2、比较运算 3、赋值运算 4、逻辑运算 5、成员运算&#xff1a; 6、身份运算&#xff1a; 7、位运算&#xff1a; 8、运算符优先级&#xff1a; 转载于:https://www.cnblogs.com/chhphjcpy/p/6064572.html

优化XCode的编译速度

1.将Debug Information Format改为DWARF 在工程对应Target的Build Settings中&#xff0c;找到Debug Information Format这一项&#xff0c;将Debug时的DWARF with dSYM file改为DWARF。 这一项设置的是是否将调试信息加入到可执行文件中&#xff0c;改为DWARF后&#xff0c;如…

给windows装个Mac黑苹果虚拟机

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ windows下安装使用苹果Mac虚拟机。”平常的生活工作中&#xff0c;我大部分时候使用Windows&#xff0c;偶尔用用Mac。实在是用不惯Mac&#xff0c;但有的时候&#xff0c;有些工作还是需要在Mac上搞&#xff0c;不得不用&#x…

Ajax基础讲解 1

随着web的不断发展&#xff0c;Ajax的运用越来越普及&#xff0c;但是对很多同学来说Ajax稍微有些难懂&#xff0c;今天呢就简单给大家讲解一下Ajax的一些基础入门的知识&#xff0c;希望可以帮到刚学习Ajax的同学。 第一步&#xff1a;首先就是服务器的搭建&#xff0c;关于服…

在虚拟机linux环境下编译windows版adb fastboot

原文出自&#xff1a;http://blog.chinaunix.net/uid-20546441-id-1746200.html我根据虚拟机编译遇到的问题进行一些添加【前提条件】Linux Android源码完整虚拟机磁盘空间100G左右&#xff08;60G用来存放代码和编译后的文件&#xff09;swap 30G左右&#xff0c;若太小会导致…

PC端微信小程序wxapkg解密

sh点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 解密PC端wxapkg文件。”用过微信pc版的应该都知道&#xff0c;PC上也可以使用微信小程序。这个小程序用起来和手机端差不多&#xff0c;不过&#xff0c;在分析时&#xff0c;确是有差别的——PC上的wxapkg文件是加密的。无论如…

cron 定时器简单入门

cron:计划任务&#xff0c;是任务在约定的时间执行已经计划好的工作&#xff0c;根据配置文件约定的时间来执行特定的任务。 编写测试类继承 IJob &#xff0c;实现Execute 此方法就是用于定时的任务 配置定时时间&#xff1a; 先创建windows服务&#xff0c;服务创建详情 Inst…

PHP5.5.13 + Apache2.4.7安装配置流程详解

---恢复内容开始--- 自学PHP的这段时间里&#xff0c;真是倍感辛酸&#xff0c;相信广大的菜鸟们应该很我感同身受吧&#xff0c;在查阅了网上和众多数资料后&#xff0c;总结出来想当比较全面的安装方法&#xff0c;拿出来与广大的编程爱好者一起分享哈。 首先到官网上下载相关…

cocos2dx小游戏数据签名算法破解

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 快速破解小游戏常见的数据签名算法。”最近在分析各种小游戏的协议&#xff0c;本文以《我不是无双》这款小游戏为样例介绍这类小游戏的分析方法。01—抓包在分析开始&#xff0c;首先明确分析的目的是学习这款游戏的网络协议算法…

laravel5 MAC is invalid

如果本机的环境更换过,项目中用来加密Crypt组件中的参数会变更. 如果出现这个问题,得更换数据库中加密后的变量 stackoverflow上找到的解决方法都是 composer dump-autoload composer clear-cache 之后再清空浏览器缓存 其实最简单的解决方法是将数据库中的所有数据重新encrpt一…