hdu 4144 状态压缩dp
- #include<map>
- #include<set>
- #include<cmath>
- #include<queue>
- #include<cstdio>
- #include<vector>
- #include<string>
- #include<cstdlib>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #define Maxn 52
- #define Maxm 100010
- #define LL __int64
- #define Abs(x) ((x)>0?(x):(-x))
- #define lson(x) (x<<1)
- #define rson(x) (x<<1|1)
- #define inf 0x3f3f3f3f
- #define Mod 1000000007
- using namespace std;
- int dis[Maxn][Maxn],p[Maxn],t[Maxn],ft[Maxn],dp[<<][Maxn][<<],n,m,k;
- LL fast[Maxn];
- void init()
- {
- memset(dis,,sizeof(dis));
- memset(fast,,sizeof(fast));
- memset(dp,,sizeof(dp));
- memset(ft,,sizeof(ft));
- }
- void floyd()
- {
- int i,j,k;
- for(k=;k<=n;k++){
- dis[k][k]=;
- for(i=;i<=n;i++){
- for(j=;j<=n;j++){
- dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
- }
- }
- }
- }
- int check(int p)
- {
- int temp=;
- for(int i=;i<=k;i++) if(fast[i]&(1LL<<p)) temp|=(<<(i-));
- return temp;
- }
- void Min(int &a,int b)
- {
- a=a>b?b:a;
- }
- int solve()
- {
- int i,j,r,ki,kj,fi,fj,N;
- N=(<<k)-;
- dp[][][]=;
- for(ki=;ki<=N;ki++){
- for(fi=;fi<=N;fi++) if((ki&fi)==ki){
- for(i=;i<=n;i++)if(dp[ki][i][fi]<inf){
- for(kj=;kj<=k;kj++) if((ki&(<<(kj-)))==){
- int fast=check(p[kj]);
- Min(dp[ki|(<<(kj-))][p[kj]][fast|fi|(<<(kj-))],dp[ki][i][fi]+dis[i][p[kj]]+(((fast|fi)&(<<(kj-)))?ft[kj]:t[kj]));
- }
- for(j=;j<=n;j++){
- int fast=check(j);
- if((fast&fi)!=fast)
- Min(dp[ki][j][fast|fi],dp[ki][i][fi]+dis[i][j]);
- }
- }
- }
- }
- int ans=inf;
- for(i=;i<=N;i++){
- for(j=;j<=n;j++){
- ans=min(ans,dp[N][j][i]+dis[j][]);
- }
- }
- return ans;
- }
- int main()
- {
- int i,j,u,v,val,x,c,Case=;
- int T;
- scanf("%d",&T);
- while(T--){
- init();
- scanf("%d%d%d",&n,&m,&k);
- for(i=;i<=m;i++){
- scanf("%d%d%d",&u,&v,&val);
- dis[u][v]=dis[v][u]=min(dis[u][v],val);
- }
- for(i=;i<=k;i++){
- scanf("%d%d%d%d",&p[i],&t[i],&ft[i],&c);
- while(c--){
- scanf("%d",&x);
- fast[i]|=(1LL<<x);
- }
- }
- floyd();
- printf("Case #%d: %d\n",++Case,solve());
- }
- return ;
- }
hdu 4144 状态压缩dp的更多相关文章
- HDU 1074 (状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...
- HDU 3341 状态压缩DP+AC自动机
题目大意: 调整基因的顺序,希望使得最后得到的基因包含有最多的匹配串基因,使得所能达到的智商最高 这里很明显要用状态压缩当前AC自动机上点使用了基因的情况所能达到的最优状态 我最开始对于状态的保存是, ...
- hdu 4284 状态压缩dp
题意: 有N 个点的无向图,要去其中 h个地点做事,做事需要先办理护照,之后可以挣一定数量的钱,知道了一开始有的总钱数,和 一些城市之间 道路的花费,问可不可以在 指定的 h 个城 ...
- hdu 2167 状态压缩dp
/* 状态转移方程:dp[i][j]=Max(dp[i][j],dp[i-1][k]+sum[i][j]); */ #include<stdio.h> #include<string ...
- HDU 4856 (状态压缩DP+TSP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4856 题目大意:有一个迷宫.迷宫里有些隧道,每个隧道有起点和终点,在隧道里不耗时.出隧道就耗时,你的 ...
- HDU 4640 状态压缩DP 未写完
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 解题思路: 首先用一个简单的2^n*n的dp可以求出一个人访问一个给定状态的最小花费,因为这i个 ...
- 2016"百度之星" - 初赛(Astar Round2A)1002 / HDU 5691 状态压缩DP
Sitting in Line Problem Description 度度熊是他同时代中最伟大的数学家,一切数字都要听命于他.现在,又到了度度熊和他的数字仆人们玩排排坐游戏的时候了.游戏的规则十 ...
- HDU 5067 (状态压缩DP+TSP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5067 题目大意:蓝翔挖掘机挖石子.把地图上所有石子都运回起点,问最少耗时. 解题思路: 首先得YY出 ...
- hdu 4539(状态压缩dp)
题意:曼哈顿距离是指:|x1-x2|+|y1-y2|,只要知道这个概念题意就懂了. 分析:这道题与前面做的几道题有所不同,因为当前行不仅与前一行有关,而且与前两行有关,所以我们开数组的时候还要记录前两 ...
随机推荐
- 网页上的JS call Unity3d里的function——SendMessage
注意: sendmessage只可以从网页发信息到unity游戏里,但是没有返回值 只可以发布三种类型的data,不可以其他复杂的强类型 发信息的时不会做编译检测 SendMessage Workfl ...
- NAND flash NOR flash SDRAM区别
nand flash:适合大容量数据存储,类似硬盘:nor flash:适合小容量的程序或数据存储,类似小硬盘:sdram:主要用于程序执行时的程序存储.执行或计算,类似内存. 区别:nor flas ...
- EasyMock使用手记
from:http://www.blogjava.net/supercrsky/articles/162766.html Mock 对象能够模拟领域对象的部分行为,并且能够检验运行结果是否和预期的一致 ...
- GIT 中提示 please tell me who you are
如果使用git过程中出现了,please tell me who you are ,需要设置一下使用者的身份. 1.git config user.name "username" ...
- linux 下cocos2dx-3.3.1环境搭建
1.安装依赖 依赖包含: libx11-dev libxmu-dev libglu1-mesa-dev libgl2ps-dev libxi-dev g++ libzip-dev libpng12-d ...
- 【android开发】Android防止内存溢出浅析
近期项目做得差点儿相同了,測试出现了一些问题,当中一个就是内存溢出问题,在三星手机上測试最easy出现内存溢出,在其它手机上,比方华为就没有发生,也是比較郁闷.这个问题在之前的公司,做项目时也遇到过, ...
- android标题栏(titlebar)显示进度条
在后台线程中执行各种操作(网络连接.大数据存储)的时候,我们希望让客户能看到后台有操作在进行,那么既能有效的提示用户,又不占用当前操作空间,最好的方法就是在标题栏有个进度条. [代码] [Java]代 ...
- getFields()和getDeclaredFields()
getFields()获得某个类的所有的公共(public)的字段,包括父类. getDeclaredFields()获得某个类的所有申明的字段,即包括public.private和proteced, ...
- android程序逆向工程
随着智能手机的普及,功能越来越强大.程序也越来多和复杂化.研究一下android系统的逆向工程也是挺有意思的. 目前android逆向工程还处于初级阶段.表现在于: 1.没有完整的动态调试程序.目前由 ...
- Android Widget 小部件(三) 在Activity中加入Widget
package com.stone.ui; import static android.util.Log.d; import android.app.Activity; import android. ...