题目

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. Hibernate无主键配置文件编写

    1.       环境:jdk1.4+hibernate2.0+weblogic8 一般情况下,我们建的表都会有主键,然后根据hibernate的配置文件编写条件 有一个主键key,剩下的是Prope ...

  2. jQuery EasyUI编辑DataGrid用combobox实现多级联动

    我在项目中设计课程表的时候需要用到老师和分类之间的多级联动. 首先是一张效果图: 下面是实现的代码: <body> <script type="text/javascrip ...

  3. python3 - 闭包

    # 定义一个函数def test(number): # 在函数内部再定义一个函数,并且这个函数用到外边函数的变量, # 那么将这个函数以及用到的一些变量称之为 闭包. def text_in(numb ...

  4. Android开发:《Gradle Recipes for Android》阅读笔记1.4

    在android studio下可以使用gradle视图运行gradle. gradle任务被分别组织在不同目录下,如android,build,install. 需要执行特定的任务只要双击任务名称. ...

  5. 【BZOJ3995】[SDOI2015]道路修建 线段树区间合并

    [BZOJ3995][SDOI2015]道路修建 Description  某国有2N个城市,这2N个城市构成了一个2行N列的方格网.现在该国政府有一个旅游发展计划,这个计划需要选定L.R两列(L&l ...

  6. 【BZOJ3239】Discrete Logging BSGS

    [BZOJ3239]Discrete Logging Description Given a prime P, 2 <= P < 231, an integer B, 2 <= B ...

  7. p:nth-last-child(2)

    <!DOCTYPE html><html><head><style> p:nth-last-child(2){background:#ff0000;}& ...

  8. GDI+的应用

    在VS中创建窗体 (1)CDI+清除绘画面 在窗体中写入代码: protected override void OnPaint(PaintEventArgs e){ Graphics g=e.Grap ...

  9. CRM客户关系管理系统-需求概设和详设

    大概设计 大概设计就是对需求进行一个整体性分析,把需要实现的功能都列出来,对于客户关系管理系统,我们需要从角色出发,从而确定有哪些需求,最好是画个思维导图 首先我们是为培训学校这么一个场景来开发的,所 ...

  10. PHP判断是手机端访问还是PC端访问网站

    Mobile_Detect 是一个轻量级的开源移动设备(手机)检测的 PHP Class, 它使用 User-Agent 中的字符串,并结合 HTTP Header,来检测移动设备环境. 这个设备检测 ...