vijos
顯然可以樹狀陣列之類的東西維護一下\(dp\)。這裡考慮一種最短路的做法。
首先對於乙個區間\([l,r]\),顯然可以連邊\((l,r+1)\),那麼最終的問題轉化成了從\(s\)時刻到\(e\)時刻的最短路。發現顯然並不在意乙個時間可以被個線段覆蓋,所以連邊\((i+1,i)\),邊權為\(0\)的邊。
#include#include#include#include#includeusing namespace std;
#define ll long long
#define max 1000000
inline int read()
struct linee[max];
int h[max],cnt=1;
inline void add(int u,int v,int w);h[u]=cnt++;}
int n,s,e;ll dis[max];
bool vis[max];
void spfa()
} vis[u]=false; }}
int main()
for(int i=s;i<=e+1;++i)add(i,i-1,0);
spfa();
printf("%lld\n",dis[e+1]>=1e18?-1:dis[e+1]);
return 0;
}
140 單詞拆分 II
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 分隔時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。示例 1 輸入 s catsanddog worddict cat ca...
140 單詞拆分 II(continue)
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 示例 1 輸入 s catsanddog worddict cat cats and sand dog 輸出 cats and dog ...
140 單詞拆分 II leecode
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,在字串中增加空格來構建乙個句子,使得句子中所有的單詞都在詞典中。返回所有這些可能的句子。說明 分隔時可以重複使用字典中的單詞。你可以假設字典中沒有重複的單詞。題目鏈結 這道題明顯是個搜尋的題目。但問題在於如何進行搜尋。每個位置可能...