题目

BZOJ

虽然是解压题但也学到了简洁的码风

做法

\(dijkstra\)跑动规

My complete code

#include<bits/stdc++.h>
#include<vector>
#include<queue>
using namespace std;
typedef int LL;
const LL maxn=1e6+9,inf=0x3f3f3f3f,up=1<<14;
inline LL Read(){
LL x(0),f(1); char c=getchar();
while(c<'0' || c>'9'){ if(c=='-') f=-1; c=getchar(); }
while(c>='0' && c<='9') x=(x<<3)+(x<<1)+c-'0', c=getchar();
return x*f;
}
struct node{
LL to,nxt,d,bit;
}dis[maxn];
LL n,num,m,p,k;
LL head[209],lu[209][up],s[209];
bool visit[209][up];
inline void Add(LL u,LL v,LL t,LL bit){
dis[++num]=(node){v,head[u],t,bit}; head[u]=num;
}
#define mpr(x,y,z) make_pair(make_pair(x,y),z)
typedef pair<LL,LL> pii;
priority_queue<pair<pii,LL>,vector<pair<pii,LL> >,greater<pair<pii,LL> > >que;
inline LL Dij(){
memset(visit,false,sizeof(visit));
memset(lu,inf,sizeof(lu));
lu[1][0]=0;
que.push(mpr(0,1,0));
while(que.size()){
LL d(que.top().first.first), u(que.top().first.second), bit(que.top().second);
que.pop();
if(visit[u][bit]) continue;
visit[u][bit]=true;
if(u==n) return d;
bit|=s[u];
for(LL i=head[u];i;i=dis[i].nxt){
LL v(dis[i].to);
if((bit|dis[i].bit)!=bit) continue;
if(lu[v][bit]>d+dis[i].d){
lu[v][bit]=d+dis[i].d;
que.push(mpr(lu[v][bit],v,bit));
}
}
}return -1;
}
int main(){
n=Read(); m=Read(); p=Read(); k=Read();
for(LL i=1;i<=k;++i){
LL u(Read()),tot(Read());
while(tot--){
LL x(Read());
s[u]|=(1<<x-1);
}
}
while(m--){
LL u(Read()),v(Read()),t(Read()),tot(Read());
LL bit(0);
while(tot--){
LL x(Read());
bit|=(1<<x-1);
}
Add(u,v,t,bit); Add(v,u,t,bit);
}
printf("%d",Dij());
return 0;
}

[POI2009]Wie的更多相关文章

  1. 1139: [POI2009]Wie

    1139: [POI2009]Wie https://www.lydsy.com/JudgeOnline/problem.php?id=1139 分析: Dijkstra.状压最短路,dis[i][j ...

  2. bzoj1139:[POI2009]Wie

    传送门 状压dp,最短路 spfa似乎特别慢 代码: #include<cstdio> #include<iostream> #include<algorithm> ...

  3. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  4. BZOJ 1115: [POI2009]石子游戏Kam

    1115: [POI2009]石子游戏Kam Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 883  Solved: 545[Submit][Stat ...

  5. BZOJ 4384: [POI2015]Trzy wieże

    4384: [POI2015]Trzy wieże Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 217  Solved: 61[Submit][St ...

  6. BZOJ 1142: [POI2009]Tab

    1142: [POI2009]Tab Time Limit: 40 Sec  Memory Limit: 162 MBSubmit: 213  Solved: 80[Submit][Status][D ...

  7. 【BZOJ】【1115】【POI2009】石子游戏KAM

    博弈论 这个题……一看就觉得很捉急啊= =肿么办? 灵光一现:差分一下~ 那么我们看一下差分以后,从第 i 堆中拿走 k 个石子变成了:a[i]-=k; a[i+1]+=k; 嗯这就转化成了阶梯博弈! ...

  8. bzoj 1133: [POI2009]Kon dp

    1133: [POI2009]Kon Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 242  Solved: 81[Submit][Status][D ...

  9. bzoj 1138: [POI2009]Baj 最短回文路 dp优化

    1138: [POI2009]Baj 最短回文路 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 161  Solved: 48[Submit][Sta ...

随机推荐

  1. Spring MVC复选框(多项)

    以下示例显示如何在使用Spring Web MVC框架的表单中使用多个复选框(Checkbox).首先使用Eclipse IDE来创建一个WEB工程,并按照以下步骤使用Spring Web Frame ...

  2. diamond源码阅读-获取服务器列表

    serverAddressProcessor public synchronized void start() { if (isRun) { return; } isRun = true; initH ...

  3. UML Rose2003完美破解攻略

    Rational Rose 2003 软件project画图软件 ,当然还不止画图,对于那些不想用英文版Rational Rose2003的同志们.这个Rational Rose2003 版本号已经汉 ...

  4. js yield

    meikidd 发布在meikidd2015年5月6日view:3397 在文章任何区域双击击即可给文章添加[评注]!浮到评注点上可以查看详情. 隐藏标注 首先请原谅我的标题党(●—●),tj 大神的 ...

  5. 【ask】webstorm调试node单个js文件

    The procedure falls into two parts: first we start an application as usual and then connect to it wi ...

  6. ios - UILabel_长按复制

    1.添加长按的手势 UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] initWith ...

  7. log4j日志文件乱码问题的解决方法

    近日在AIX上用log4j打印日志,出现乱码,经过努力解决问题. 症状:在默认语言非中文(或者说默认语言不支持中文的)的Windows.Linux.Unix上,用log4j打印日志,出现乱码,常见的就 ...

  8. spoj 10628

    http://www.spoj.com/problems/COT/ 树上第k小元素 LCA + 可持久化线段树 每个新的版本都是由其父亲版本转化而来. #include <cstdio> ...

  9. _ 下划线 Underscores __init__

    Underscores in Python https://shahriar.svbtle.com/underscores-in-python Underscores in Python This p ...

  10. Vue中获取dom元素

    Vue.js虽然说是数据驱动页面的,但是有时候我们也要获取dom对象进行一些操作. vue的不同版本获取dom对象的方法不一样 Vue.js  1.0版本中,通过v-el绑定,然后通过this.els ...