選拔賽 旅遊

2022-05-02 21:48:07 字數 783 閱讀 6691

傳送門

首先有3種風景點,因此對應就有8種狀態(狀態表示的是到某個點經過的風景點有哪些),到每個點都有8種狀態,記錄狀態的話用的是dis陣列的第二維(將第二維j轉化為乙個二進位制數對應有3位,第一位表示的是a類風景點的狀態,第二位表示的是b類風景點的狀態,第三位表示的是c類風景點的狀態,對應的數字若是1表示有經過,0表示沒經過),定義dis[i][j]表示在j狀態下到達i號點的最短路徑,然後就用dij遞推出dis[1][7]和dis[1][6](7表示的狀態是111,6表示的狀態是110,都是經過了b,c風景點的),挑個最小的即可。

#includeusing namespace std;

#define ll long long

const int maxn=200010;

ll inf=1e15;

struct node

};struct state

friend bool operator <(const state&a,const state&b)

};vectorg[maxn];

ll dis[maxn][10];//dis[i][j]表示j狀態下到達i節點的最短路徑

int vis[maxn][10],val[maxn],n,m;

void dij()}}

}int main()

while(m--)

dij();

printf("%lld\n",min(dis[1][7],dis[1][6]));

return 0;

}

選拔賽總結

時間限制 1 sec 記憶體限制 512 mb 提交 18 解決 9 提交 狀態 討論版 命題人 admin 題目描述 手機端qq推出了貼表情的新功能,復讀機勢力再次猖狂起來,她們把表情貼的到處都是!裙主決定把被復讀次數最多的表情從聊天記錄中刪去。聊天框是乙個大小為n x m的黑白點陣。背景色是白色...

選拔賽之 kmp

自己稀里糊塗就過了,原來是資料水。但也還是不知道自己的 其實能不能過,還是先放一下,再看看能不能看得懂。id 97 對s串做個kmp得到fail陣列,答案就是 n s.length while fail n 1 ans.push back s.length fail n n fail n 證明 由f...

新生選拔賽(二)

思路 首先,我們分析題意可以發現,先將花瓣數列進行排序,如果兩端的花不能被消去,那麼,就肯定找不到唯一的一朵花,而且當n 1時肯定有唯一的花朵,當n不等於一時我們首先需要考慮花瓣中有無重複的數字,如果有重複的數字我們肯定要進行去重,因為只有資料中留有這個資料且能夠消去,那麼重複的花瓣都能消去,然後我...