不说了,爆内存好几次,后来醒起状态有重复。。。

状压+TSP

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define LL long long
using namespace std;
//#pragma comment(linker, "/STACK:102400000,102400000")
const int MAX=100005; int pre[20][20];
int dish[20]; LL dp[20][1<<20]; template<class T>
inline T IN(T &num){
num = 0;
char c = getchar(), f = 0;
while(c != '-' && (c < '0' || c > '9')) c = getchar();
if(c == '-') f = 1, c = getchar();
while('0' <= c && c <= '9') num = num * 10 + c - '0', c = getchar();
if(f) num = -num;
return num;
} struct Status{
int l,s;
Status(){};
Status(int ll,int ss){l=ll,s=ss;}
}; int main(){
int n,m,k;
int x,y,c; while(scanf("%d%d%d",&n,&m,&k)!=EOF){
queue<Status>que;
memset(pre,0,sizeof(pre));
memset(dp,-1,sizeof(dp));
for(int i=1;i<=n;i++)
IN(dish[i]);
for(int i=1;i<=k;i++){
IN(x),IN(y),IN(c);
pre[x][y]=c;
}
LL ans=0;
for(int i=1;i<=n;i++){
dp[i][1<<i]=dish[i];
ans=max(ans,(LL)dish[i]);
que.push(Status(i,1<<i));
}
Status tmp; int e;
for(int i=2;i<m;i++){
int sz=que.size();
while(sz--){
tmp=que.front();
que.pop();
for(int j=1;j<=n;j++){
if(tmp.s&(1<<j)){
}
else{
k=tmp.l; e=tmp.s|(1<<j);
if(dp[j][e]==-1) que.push(Status(j,e));
dp[j][e]=max(dp[j][e],dp[k][tmp.s]+pre[k][j]+dish[j]);
}
}
}
}
if(m>=2){
while(!que.empty()){
tmp=que.front();
que.pop();
for(int j=1;j<=n;j++){
if(tmp.s&(1<<j)){
}
else{
k=tmp.l; e=tmp.s|(1<<j);
dp[j][e]=max(dp[j][e],dp[k][tmp.s]+pre[k][j]+dish[j]);
ans=max(ans,dp[j][e]);
}
}
}
}
cout<<ans<<endl; }
return 0;
}

CF #321 (Div. 2) D的更多相关文章

  1. CF #321 (Div. 2) E

    用线段树维护哈希,类似于进位制的一个哈希 a[i]*p^i+a[i-1]*p^i-1... 然后,线段树存在某区间的哈希的值,对于更新,则只需提前计算出整段的哈希值即可. 判断是否相等,由于相隔为d, ...

  2. CF #376 (Div. 2) C. dfs

    1.CF #376 (Div. 2)    C. Socks       dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...

  3. CF #375 (Div. 2) D. bfs

    1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...

  4. CF #374 (Div. 2) D. 贪心,优先队列或set

    1.CF #374 (Div. 2)   D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...

  5. CF #374 (Div. 2) C. Journey dp

    1.CF #374 (Div. 2)    C.  Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...

  6. CF #371 (Div. 2) C、map标记

    1.CF #371 (Div. 2)   C. Sonya and Queries  map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的 ...

  7. CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组

    题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有 ...

  8. CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组(转)

    转载自:http://www.cnblogs.com/icode-girl/p/5744409.html 题目链接:CF #365 (Div. 2) D - Mishka and Interestin ...

  9. CF#138 div 1 A. Bracket Sequence

    [#138 div 1 A. Bracket Sequence] [原题] A. Bracket Sequence time limit per test 2 seconds memory limit ...

随机推荐

  1. [Swift通天遁地]八、媒体与动画-(7)实现多个动画的顺序播放效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  2. ajax 以json 的形式来传递返回参数的实例

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestWcf.aspx.c ...

  3. easyui DatagrId 的实例讲解

    下面是代码实现 @{    ViewBag.Title = "人员查找";    ViewBag.LeftWidth = "200px";    ViewBag ...

  4. html5+css3杂记

    H5C3个人笔记 before&after 1. 必须有content display 2. 场景:不想改变html结构:解决浮动 解决浮动: 2c d h v transition 过渡 1 ...

  5. CSS布局——三栏布局

    说到三栏布局,很多都会提到圣杯布局和双飞翼布局这两个经典的三栏布局方式.于是,我在网上搜了一些相关资料,阅读并跟着代码敲了一遍,发现在处理三栏布局上,他们采用的都是两边栏固定,中间栏自适应的策略.在处 ...

  6. python 求一个文件中每个字符出现的次数

    import pprint import collections filename = input('Input filename') with open(filename) as info: cou ...

  7. 通过python xlsxwriter模块生成EXCEL柱状图、饼图

    xlsxwriter模块不是python自带的,使用pip下载 import xlsxwriter #新建一个excel文件,起名为expense01.xlsx workbook = xlsxwrit ...

  8. ES6 箭头函数this指向问题

    var name = "window"; var person1 = { name: "person1", show1: function() { consol ...

  9. @FunctionalInterface

    >> 函数式接口也称为SAM接口 Single Abstract Method interfaces 接口有且仅有一个抽象方法 允许定义静态方法 允许定义默认方法 允许java.lang. ...

  10. c3p0 连接池配置

    C3P0 可使用properties 配置文件方式,将c3p0.properties放在classpath目录下,如果为WEB应用,放在WEB-INF\classes下 c3p0.properties ...