LOJ 1119
来源:互联网 发布:沙沙网络怎么没有了 编辑:程序博客网 时间:2024/05/21 18:34
题目链接:http://lightoj.com/volume_showproblem.php?problem=1119
——————————————————————————————————————
题目描述:
好多活,如果一个活在另一个活之前干完,就需要增加费用。
求费用的最小值
——————————————————————————————————————
题目思路:
原来这就是状态压缩dp。。
用位运算+dp做的
——————————————————————————————————————
题目细节:
产生n个1的方法:
m = 1;m = ((m<<n)-1);——————————————————————————————————————
源代码:
#include <iostream>#include<stdio.h>using namespace std;#define MAX 17000#define fmin(a,b) ((a)>(b)? (b):(a))int m = 0,n = 0;int p[16][16];long long int dp[MAX];int judge(int i,int j){ int k = 0,p = 0,t = 0; for(p = 1;p<=n;p++) { t = 1 & j; if(t) k++; j = j>>1; } if(k == i) return 1; else return 0;}long long int con(int q,int j){ int i = 0,k = 0,t = 1; int sum = 0; for(i = 0;i<n;i++) { t = 1<<i; if((t&j) && i!=q) sum += p[n-q][n-i]; } for(i = 1;i<n-q;i++) k = (k<<1)+1; k = k<<1; for(i = 0;i<q;i++) k = (k<<1)+1; k = k&j; return dp[k] + sum + p[n-q][n-q];}int main(){ int t = 0; int i = 0,j = 0,q = 0,k = 0; scanf("%d",&t); for(k = 1;k<=t;k++) { scanf("%d",&n); for(i = 1;i<=n;i++) for(j = 1;j<=n;j++) scanf("%d",&p[i][j]); dp[0] = 0; m = 1; m = ((m<<n)-1); //队友提供了产生n个1的思路 for(i = 1;i<=n;i++) for(j = 1;j<=m;j++) if(judge(i,j)) { long long int min = (unsigned long long int)(~0)>>1; if(j == 6) j = 6; for(q = 0;q<n;q++) if((1<<q)&j) min = fmin(con(q,j),min); dp[j] = min; //printf("%d %lld\n",j,dp[j]); } printf("Case %d: %lld\n",k,dp[m]); } return 0;}
- LOJ 1119
- LOJ 1060
- loj 1271
- loj 1337
- LOJ 1070
- Loj #114
- loj 1224 - DNA Prefix
- LOJ 1307 Counting Triangles
- loj 1063(求割点个数)
- loj 1009(dfs)
- loj 1046(bfs)
- loj 1055(bfs)
- loj 1185(bfs)
- loj 1168(Tarjan应用)
- loj 1004(dp)
- loj 1017(dp)
- loj 1032(数位dp)
- loj 1036(dp)
- 动态规划-----背包问题-----01背包,完全背包,多重背包
- hdu 2108
- PHP删除数组元素的具体函数介绍: count 与 array_splice
- POJ 2226 二分图 最小点覆盖
- Java获取随机数(工具类)
- LOJ 1119
- 黑马程序员——对于懒汉式的思考
- 位图和位块传输(1)BitBlt与PatBlt
- Linux ssh,telnet服务配置
- VS2005在Release模式下进行调试的设置
- mysql在ubuntu下的 安装流程、配置和其它问题
- [Android学习笔记[使用Fragments取代tabActivity开发网易新闻客户端框架
- #pragma data_seg()
- Android Makfile 中的函数