UESTC 1608 暑假集训
来源:互联网 发布:陈华伟 知乎 编辑:程序博客网 时间:2024/06/03 15:10
题目链接:http://acm.uestc.edu.cn/#/problem/show/1608
状压DP+记忆化搜索
算法复杂度:小于O(2^n*n*n)
用s记录当前的状态,s的第i位如果等于1表示该位队员还没选,如果等于0则表示该位队员已选
初始化:
转移看代码
#include <bits/stdc++.h>using namespace std;int n, dp[1<<21], val[22][22][22];int dfs(int s){ if(dp[s]!=-1) return dp[s]; int i,j,k; for(i=0; i<n-2; i++){ if(s&(1<<i)) break; } for(j=i+1;j<n-1;j++){ if(s&(1<<j)) for(k=j+1;k<n;k++) if(s&(1<<k)) dp[s]=max(dp[s],dfs(s^(1<<i)^(1<<j)^(1<<k))+val[i][j][k]); } return dp[s];}int main(){ while(~scanf("%d",&n)) { for(int i=1; i<=n*(n-1)*(n-2)/6; i++){ int a,b,c,d; scanf("%d %d %d %d", &a,&b,&c,&d); val[a-1][b-1][c-1]=d; } memset(dp,-1,sizeof(dp)); dp[0]=0; int ans = dfs((1<<n)-1); printf("%d\n", ans); } return 0;}
阅读全文
1 0
- UESTC 1608 暑假集训
- 暑假集训
- 暑假集训
- 暑假集训
- 暑假集训
- 暑假集训要求
- 暑假集训计划
- 暑假集训第二场
- 省赛到暑假集训小结
- CSUST2013:暑假集训
- 暑假集训总结
- 暑假集训(bellman)
- 记暑假集训!
- ACM暑假集训(0)
- neu暑假集训
- ACM暑假集训方法
- CCNU_2014_ACM暑假集训总结
- 暑假集训总结
- Animals and Puzzle codeforces 713D 二维 rmq+二分+dp(算模板了)
- 百度贴吧终于支持修改昵称
- NYOJ:35-表达式求值
- Soot:从头创建一个类
- (1614 [Usaco2007 Jan]Telephone Lines架设电话线)
- UESTC 1608 暑假集训
- 为什么linux select函数的第一个参数总应该是fdmax + 1 ?
- 【HTML5学习笔记】17:CSS选择器 下
- C++学习摘要记录(1)
- NYOJ:37-回文字符串
- composer
- 访问者模式--要风得风,要雨得雨(行为模式11)
- Git安装
- NYOJ:36-最长公共子序列