bzoj1139:[POI2009]Wie
传送门
状压dp,最短路
spfa似乎特别慢
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
void read(int &x) {
char ch; bool ok;
for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;
for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
#define rg register
const int maxn=210,maxm=3010;
int n,m,p,k,cnt,pre[maxm*2],nxt[maxm*2],h[maxn],v[maxm*2],vv[maxm*2],tj[maxn],f[maxn][1<<13],tot,ans=1e9;bool vis[maxn];
void add(int x,int y,int z,int zz)
{
pre[++cnt]=y,nxt[cnt]=h[x],h[x]=cnt,v[cnt]=z,vv[cnt]=zz;
pre[++cnt]=x,nxt[cnt]=h[y],h[y]=cnt,v[cnt]=z,vv[cnt]=zz;
}
queue<int>q;
void spfa(int x)
{
q.push(x);
while(!q.empty())
{
int y=q.front();q.pop();vis[y]=0;
for(rg int i=h[y];i;i=nxt[i])
for(rg int j=0;j<tot;j++)
if((j&vv[i])==vv[i]&&f[pre[i]][j|tj[pre[i]]]>f[y][j]+v[i])
{
f[pre[i]][j|tj[pre[i]]]=f[y][j]+v[i];
if(pre[i]==n){ans=min(ans,f[pre[i]][j|tj[pre[i]]]);continue;}
if(!vis[pre[i]])vis[pre[i]]=1,q.push(pre[i]);
}
}
}
int main()
{
read(n),read(m),read(p),read(k);
memset(f,63,sizeof f);
for(rg int i=1,q,t;i<=k;i++)
{
read(q),read(t);
for(rg int j=1,x;j<=t;j++)read(x),tj[q]|=1<<(x-1);
}
for(rg int i=1,x,y,z,t,w;i<=m;i++)
{
read(x),read(y),read(z),read(t),w=0;
for(rg int j=1,v;j<=t;j++)read(v),w|=1<<(v-1);
add(x,y,z,w);
}
tot=1<<p,f[1][tj[1]]=0;
spfa(1);if(1==n)ans=0;
printf("%d\n",ans>=1e9?-1:ans);
}
bzoj1139:[POI2009]Wie的更多相关文章
- 1139: [POI2009]Wie
1139: [POI2009]Wie https://www.lydsy.com/JudgeOnline/problem.php?id=1139 分析: Dijkstra.状压最短路,dis[i][j ...
- [POI2009]Wie
题目 BZOJ 虽然是解压题但也学到了简洁的码风 做法 \(dijkstra\)跑动规 My complete code #include<bits/stdc++.h> #include& ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ 1115: [POI2009]石子游戏Kam
1115: [POI2009]石子游戏Kam Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 883 Solved: 545[Submit][Stat ...
- BZOJ 4384: [POI2015]Trzy wieże
4384: [POI2015]Trzy wieże Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 217 Solved: 61[Submit][St ...
- BZOJ 1142: [POI2009]Tab
1142: [POI2009]Tab Time Limit: 40 Sec Memory Limit: 162 MBSubmit: 213 Solved: 80[Submit][Status][D ...
- 【BZOJ】【1115】【POI2009】石子游戏KAM
博弈论 这个题……一看就觉得很捉急啊= =肿么办? 灵光一现:差分一下~ 那么我们看一下差分以后,从第 i 堆中拿走 k 个石子变成了:a[i]-=k; a[i+1]+=k; 嗯这就转化成了阶梯博弈! ...
- bzoj 1133: [POI2009]Kon dp
1133: [POI2009]Kon Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 242 Solved: 81[Submit][Status][D ...
- bzoj 1138: [POI2009]Baj 最短回文路 dp优化
1138: [POI2009]Baj 最短回文路 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 161 Solved: 48[Submit][Sta ...
随机推荐
- RSA加密:利用模数和指数生成公钥加密
引子 目前做一款金融产品,由于涉及到资金安全,采用动态公钥的方式,即客户端每次登录服务端返回一个不同的XML串,由公钥的模数和指数构成,我需要用这个串生成公钥加密相关信息.服务端返回的XML串形如: ...
- SAM初步
SAM(Suffix Automaton),后缀自动机. SAM是种十分神奇的数据结构,我认为他的主要神奇之处,在于最大限度的利用了分类思想. SAM上有两种边,代表两种转移方式. 一种是树边,一种是 ...
- ssh整合 小例子
实现了用户的查插删改操作. 原理:struts负责接收.分发请求.spring采用面向接口编程的思想整合整体框架,负责连接数据库.hibernate负责操作数据库语言. 思路: 1.配置struts的 ...
- linux系统配置之PATH环境变量的设置(centos)
Centos系统下修改环境变量PATH路径的方法 电脑脑中必不可少的就是操作系统.而Linux的发展非常迅速,有赶超微软的趋势.这里介绍Linux的知识,让你学好应用Linux系统.比如要把/etc/ ...
- .NET CORE2.0后台管理系统(一)配置API
一:引用关系图 要写一个项目首先离不开的就是一个清晰的流程图,当然我这里很简单. 上诉完成后打开api下的Startup.cs文件,因为我是配置好了所在我直接上传代码然后介绍一下: using Sys ...
- 基于aspect实现AOP——xml配置的其他操作
将上方配置中的前置通知,可换成环绕通知
- C++之引用&的详解
C++中的引用: 引用引入了对象的一个同义词.定义引用的表示方法与定义指针相似,只是用&代替了*.引用(reference)是c++对c语言的重要扩充.引用就是某一变量(目标)的一个别名,对引 ...
- C++基础--完善Socket C/S ,实现客户端,服务器端断开重连
// WindowsSocketServer.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"#include <iostream> ...
- SIM卡(单卡)配置
SIM卡相关配置 1.GPIO90--->BPI8 GPIO91--->BPI9 GPIO92--->BPI10 2.ProjectConfig.mk:MTK_PROTOCOL1_R ...
- phpstudy打不开localhost(Apache)
1.先打开httpd.conf文件,打开httpd-vhosts.conf "Include conf/extra/httpd-vhosts.conf"的注释,启动服务时优先加载此 ...