1. 程式人生 > >Jzoj5459【NOIP2017提高A組衝刺11.7】密室

Jzoj5459【NOIP2017提高A組衝刺11.7】密室

小X 正困在一個密室裡,他希望儘快逃出密室。
密室中有N 個房間,初始時,小X 在1 號房間,而出口在N 號房間。
密室的每一個房間中可能有著一些鑰匙和一些傳送門,一個傳送門會單向地創造一條從房間X 到房間Y 的通道。另外,想要通過某個傳送門,就必須具備一些種類的鑰匙(每種鑰匙都要有才能通過)。幸運的是,鑰匙在開啟傳送門的封印後,並不會消失。
然而,通過密室的傳送門需要耗費大量的時間,因此,小X 希望通過儘可能少的傳送門到達出口,你能告訴小X 這個數值嗎?

另外,小X 有可能不能逃出這個密室,如果是這樣,請輸出"No Solution"。

一開始以為是一個搜尋果斷跳,結果看到資料範圍發現可以做

發現k很小,這就是一個傻逼狀壓分層圖啊

而且還不帶邊權的,直接bfs,dijk都不用了

#include<queue>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct nod{ int x,k; } c;
struct edge{ int v,c,nt; }G[10010];
queue<nod> q;
int d[1110][5010],w[5010],h[5010];
int n,m,k,cnt=0,ans=1<<30
; inline void adj(int x,int y,int c){ G[++cnt]=(edge){y,c,h[x]}; h[x]=cnt; } inline int get(){ int s=0; for(int x,i=0;i<k;++i) scanf("%d",&x),s|=x<<i; return s; } int main(){ freopen("room.in","r",stdin); freopen("room.out","w",stdout); scanf("%d%d%d",&n,&m,&k); for(int
i=1;i<=n;++i) w[i]=get(); for(int x,y,i=1;i<=m;++i){ scanf("%d%d",&x,&y); adj(x,y,get()); } memset(d,-1,sizeof d); d[w[1]][1]=0; q.push((nod){1,w[1]}); for(int x,y;!q.empty();q.pop()){ c=q.front(); x=c.x; y=c.k; for(int v,i=h[x];i;i=G[i].nt) if(((y&G[i].c)==G[i].c)&&d[y|w[G[i].v]][v=G[i].v]==-1){ d[y|w[v]][v]=d[y][x]+1; q.push((nod){v,y|w[v]}); } } for(int i=0;i<(1<<k);++i) if(~d[i][n]) ans=min(ans,d[i][n]); if(ans==1<<30) puts("No Solution"); else printf("%d\n",ans); }

相關推薦

Jzoj5459NOIP2017提高A衝刺11.7密室

小X 正困在一個密室裡,他希望儘快逃出密室。 密室中有N 個房間,初始時,小X 在1 號房間,而出口在N 號房間。 密室的每一個房間中可能有著一些鑰匙和一些傳送門,一個傳送門會單向地創造一條從房間X

JZOJ5459. NOIP2017提高A衝刺11.7密室

Description 小X 正困在一個密室裡,他希望儘快逃出密室。 密室中有N 個房間,初始時,小X 在1 號房間,而出口在N 號房間。 密室的每一個房間中可能有著一些鑰匙和一些傳送門,一個傳送門會單向地創造一條從房間X 到房間Y 的通道。另外,想要通過

NOIP2017提高A衝刺11.7總結

感覺上今天是信心題。所以絕對不能掉以輕心。 第一題想到了一個看似不是暴力的方法,先放著。打完第三題後發現可以直接上暴力,AC。 第二題是一個基於有向圖的裝壓DP,當時第一反應是spfa。所以直接打了

JZOJ5460. NOIP2017提高A衝刺11.7士兵訓練

題目 Input 第一行兩個數n,q 表示士兵數以及閱兵次數。 接下來一行n-1 個整數,第i 個整數表示士兵i+1 的直屬教官。 接下來n 行每行兩個整數i i b ,l 描述一位士兵的屬性。 接下來q 行每行一個整數i s ,表示這次閱兵的

JZOJ 5460. NOIP2017提高A衝刺11.7士兵訓練

Description Input 第一行兩個數n,q 表示士兵數以及閱兵次數。 接下來一行n-1 個整數,第i 個整數表示士兵i+1 的直屬教官。 接下來n 行每行兩個整數i i b ,l 描述一位士兵的屬性。 接下來q 行每行一個整數i s

JZOJ 5455NOIP2017提高A衝刺11.6拆網線

目錄: 題目: 分析: 程式碼: 題目: 傳送門 分析: 設f[i][0]f[i][0]表示在xx的子樹中,xx沒有被選擇的情況下最多有多少對點是兩兩配對的 f[

NOIP2017提高A衝刺11.9乘積

Description 豆豆最近在潛心研究數學,他發現了一類很有趣的數字,叫做無平方因子數。也就是這一類數字不能夠被任意一個質數的平方整除,比如6、7、10都是無平方因子數,而12則不是。 所以豆豆在思考一個問題——選擇不超過K個N以內的正整數乘起來,使得乘

Jzoj5441NOIP2017提高A衝刺11.1序列

給定一個1~n的排列x,每次你可以將x1~xi翻轉。你需要求出將序列變為升序的最小操作次數。有多組資料。 此題十分不友善 對於多年沒有打過搜尋的蒟蒻更是如此 (強行)假定這個題資料範圍是在坑人(因為我

JZOJ 5441. NOIP2017提高A衝刺11.1序列

Description 給定一個1~n的排列x,每次你可以將x1~xi翻轉。你需要求出將序列變為升序的最小操作次數。有多組資料。 Input 第一行一個整數t表示資料組數。 每組資料第一行一個整數n,第二行n個整數x1~xn。 Output 每組

NOIP2017提高A衝刺11.9總結

今天的比賽心情最不穩定。 T1:我看錯題了,原本看成乘積≤n,但是事實上並不是這樣。然後我就懵了,以為是容斥原理。但是容斥原理不是很熟,我就慌了。困惑我的一點是選的數互相制約的條件混亂。那麼可以利用八

NOIP2017提高A衝刺11.6總結

今天的情況比昨天好了一些,但是還是有很大的進步空間。 我今天採用了迂迴的戰術,每一道題各想一點點。但是這樣是很不合理的,因為會打亂思緒。 接到題目,先去想第二題。(這是個梗) 第二題是一道構造題,肯定是從小到大排序,然後每個人找到合適的位置插進去。構造題不

NOIP2017提高A衝刺11.8總結

今天的題目不難,但是我依然沒有拿到高分,信心題反而打擊了信心。 眼看著8場模擬賽已經過了7場,而每次成績都不是很理想,我不知道這樣的世界何時是一個盡頭! 第一題,肯定是貪心題,但是有點懵B,隨便想了

JZOJ5466. NOIP2017提高A衝刺11.9玩遊戲

Description 小A得了憂鬱綜合症,小B正在想辦法開導她。 機智的小B決定陪著小A玩遊戲,他從魔法的世界裡變出一張無向聯通圖,每條邊上都有邊權。小B定義一條路徑的權值為所有經過邊中的最大權值,小A則定義兩點的最短路徑為所有路徑中權值最小的路徑權。

Jzoj5462NOIP2017提高A衝刺11.8好文章

nodgd寫了一篇文章,自認為這是一篇好文章。nodgd的文章由n個小寫英文字母組成。文章的一個子串指的是文章中的一段連續的字母,子串的長度就是這一段的字母個數。nodgd在文章中用了排比、對偶、前後

NOIP2017提高A衝刺11.2總結

不用說了,我連大眾分都沒拿到。不過做得好的一點是,該拿的分我都拿了。 第一題看了5秒就切了,這不就是拓補排序加個優先佇列嗎? 第二題:期望。我提醒自己不要慌,記得期望的線性性,即和的期望等於期望的和

JZOJ 5444. NOIP2017提高A衝刺11.2救贖

Description “是的。”我回答,“我不會忘記你。在森林裡我會一點點記起往日的世界。要記起的大概很多很多:各種人、各種場所、各種光、各種歌曲……” ——村上春樹《世界盡頭與冷酷仙境》 在沒有心存在的世界盡頭,音樂能夠使小鎮居民消散的心重新聚攏成形。

NOIP2017提高A衝刺11.2救贖(數學期望)

Description “是的。”我回答,“我不會忘記你。在森林裡我會一點點記起往日的世界。要記起的大概很多很多:各種人、各種場所、各種光、各種歌曲……” ——村上春樹《世界盡頭與冷酷仙境》 在沒有心存在的世界盡頭,音樂能夠使小鎮居民消散的心重新聚攏成形。

ZJOJ 5454NOIP2017提高A衝刺11.5仔細的檢查

Description nodgd家裡種了一棵樹,有一天nodgd比較無聊,就把這棵樹畫在了一張紙上。另一天nodgd更無聊,就又畫了一張。 這時nodgd發現,兩次畫的順序是不一樣的,這就導致了原本的某一個節點u0在第一幅圖中編號為u1,在第二副圖中編號為

NOIP2017提高A衝刺11.8購物

Description X 城的商場中,有著琳琅滿目的各種商品。一日,小X 帶著小Y 前來購物,小Y 一共看中了n件商品,每一件商品價格為Pi。小X 現在手中共有m個單位的現金,以及k 張優惠券。小X 可以在購買某件商品時,使用至多一張優惠券,若如此

JZOJ5455. NOIP2017提高A衝刺11.6拆網線

Description 企鵝國的網咖們之間由網線互相連線,形成一棵樹的結構。現在由於冬天到了,供暖部門缺少燃料,於是他們決定去拆一些網線來做燃料。但是現在有K只企鵝要上網和別人聯機遊戲,所以他們需要把這K只企鵝安排到不同的機房(兩隻企鵝在同一個機房會吵架),然