題解 毒瘤 OI 刷題彙總 SCOI2011

2022-02-14 07:23:10 字數 3766 閱讀 5636

由於不清楚題目順序,就按照 \(\text\) 上面的排列好了。

乙個小學生圖論板子,乙個資料結構胖題,乙個噁心模擬,乙個毒瘤插頭 \(dp\),兩道死題,我枯tat....

傳送門:糖果 \(\text\)

\(\text\)

給出 \(m\)

\((m\leqslant 10^5)\) 個約束條件,條件分為以下 \(5\) 種:

\(1\ x\ y:\)

\(a[x]=a[y]\)

\(2\ x\ y:\)

\(a[x]

\(3\ x\ y:\)

\(a[x]\geqslant a[y]\)

\(4\ x\ y:\)

\(a[x]>a[y]\)

\(5\ x\ y:\)

\(a[x]\leqslant a[y]\)

現要構造乙個長為 \(n\)

\((n\leqslant 10^5)\) 的合法序列 \(a\),使得序列中的數總和最小,並輸出這個最小值,如果無解輸出 \(-1\) 。

差分約束板子題,沒啥好說的,暴力建邊瞎跑個 \(spfa\) 就水過去了。

時間複雜度:\(o(spfa)\) 。

#include#include#include#define re register int

using namespace std;

const int n=1e5+5,m=3e5+5,inf=2e9;

int x,y,n,m,o,op,chu[n],dis[n],pan[n],head[n];long long ans;

struct qaqa[m];queueq;

inline void add(re x,re y,re z)

inline void in(re &x)

inline int spfa(re st,re ed)

}return 0;

}int main()

}if(spfa(0,n))puts("-1");

else

}

傳送門:地板 \(\text\)

\(\text\)

給出乙個 \(n*m\)

\((n*m\leqslant 100)\) 的方格圖,其中一些格仔有障礙,剩下的為空格。求用 \(\text\) 形地板把空格填滿的方案數。

一道簡單三進製插頭 \(dp\) 。

\(\text\) 形實際上就是一根只拐了一次彎的線,考慮在輪廓線上另加乙個狀態表示插頭是否拐過彎,用 \(0\) 表示沒有插頭,\(1\) 表示乙個還沒拐過彎的插頭,\(2\) 表示乙個已經拐過彎的插頭,隨便分類討論下就完事了。

時間複雜度:\(o(nm2^)\) 。

洛谷上那幾篇題解都用了各種各樣的奇怪 \(\text\)

\(emm...\) 不是很能理解那種寫法,不僅增加了碼量還會加大常數。

實際上存一下 \(3\) 的各次冪就可以了,常數會小很多。下面這份**不開 \(o2\) 就直接跑到了 \(rk2\),\(\text\) 上 \(rk1\),而且把同類項合併起來說不定還能更快。

#include#include#include#define ll long long

#define re register int

using namespace std;

const int n=103,m=177147+3,p=20110520;

int n,m,o,v,mi[n],a[n][n],a_[n][n],dp[2][m];char s[n];//0:沒有插頭 1:還沒拐過的插頭 2:已經拐過的插頭

inline void in(re &x)

inline void mo(re &x)

int main()

if(n傳送門:植物大戰殭屍 \(\text\)

\(\text\)

略。貌似是個毒瘤網路瘤。

死題,不會。

不知道這兒能放啥,乾脆買個萌吧(⊙ω⊙)

傳送門:棘手的操作 \(\text\)

\(\text\)

有 \(n\)

\((n\leqslant 3*10^5)\) 個初始相不連通的點,第 \(i\) 個節點的權值為 \(a_i\),給出 \(m\)

\((m\leqslant 3*10^5)\) 個操作,操作有以下幾種:

冰茶姬預處理 + 線段樹瞎搞。

由於只有連邊沒有斷邊,所以一定可以給所有節點找到一種編號的排列,使得在任意時刻同一聯通塊中的點均為一段編號連續的區間。

寫個可回退的按秩合併冰茶姬預處理出編號,然後用線段樹維護即可。

時間複雜度:\(o(m\log n)\)。

#include#include#include#define ll long long

#define re register int

using namespace std;

const int n=3e5+3,inf=2e9;

int n,t,o,a[n],id[n],idx[n];

struct qaqa[n];

inline void in(re &x)

int fa[n],size[n];

struct qwq;stackq;

inline int find(re x)

inline void merge(re x,re y)

re tmp=q.size();

if(a[o].op[0]=='u')merge(a[o].x,a[o].y);

sakura(o+1);

if(q.size()!=tmp)

}struct segment_treetr[n<<2];

inline void build(re p,re l,re r)

build(pl,l,mid),build(pr,mid+1,r);

tr[p].max=max(tr[pl].max,tr[pr].max);

}inline void updata(re p,re v)

inline void pushdown(re p)

inline void change(re p,re l,re r,re l,re r,re v)

pushdown(p);

if(l<=mid)change(pl,l,mid,l,r,v);

if(r>mid)change(pr,mid+1,r,l,r,v);

tr[p].max=max(tr[pl].max,tr[pr].max);

}inline int ask(re p,re l,re r,re l,re r)

}tr;

#define op0 a[i].op[0]

#define op1 a[i].op[1]

int main()

sakura(1);

for(re i=1;i<=n;++i)idx[id[i]]=i;

tr.build(1,1,n);

for(re i=1,dlt=0;i<=t;++i)

else

}}

傳送門:映象拆分 \(\text\)

\(\text\)

略。貌似是個毒瘤數字 \(dp\)。

死題,不會。

不知道這兒能放啥,乾脆買個萌吧(⊙ω⊙)
傳送門:飛鏢 \(\text\)

\(\text\)

略。毒瘤數學模擬題,噁心,不想做。

不知道這兒能放啥,乾脆買個萌吧(⊙ω⊙)

題解 毒瘤 OI 刷題彙總 SCOI2013

由於不清楚題目順序,就按照 text 上面的排列好了。傳送門 電單車交易 text text 給出乙個 n n leqslant 10 5 個點 m m leqslant 2 10 5 條邊的無向連通圖,圖中的點 邊帶有邊權,其中有 q 0 leqslant q leqslant n 為特殊點,對於...

題解 毒瘤 OI 刷題彙總 SCOI2012

由於不清楚題目順序,就按照 text 上面的排列好了。傳送門 滑雪 text text 給出乙個由 n n leqslant 10 5 個點 m m leqslant 10 6 條邊組成的無向圖,點和邊均有權值,求以 1 為根的有向樹形圖,對於每條選出來的有向邊 x,y 必須滿足 x 的權值大於等於...

LOJ6087 毒瘤題 題解

n 個數的陣列,其中恰好有 k 個數出現了奇數次。把他們找出來。n 3e6,k 2 空間 2m k 1 直接全部異或起來。k 2 假設出現奇數次的是 a 和 b,那麼把所有數異或起來得到的就是 s a b。對每個二進位制位維護乙個數 w i 當讀入乙個 x,x 的第 j 位為 1 的時候,就把 w ...