衝刺NOIP2021模擬27

2022-09-09 15:00:36 字數 2708 閱讀 5396

這種無序序列先排個序

發現序列\(a\)最終狀態是固定的,即操作完並排序後只有一種可能的序列

設\(c_i\)表示\(a_i\)加了多少次

這個時候加的總數是固定的,最優方案是\(c_i\)公升序和\(b_i\)降序後相乘

那麼要滿足最大的c盡量大

倒序加a即可

發現有貢獻的只有全域性 mex

然後左端點固定,mex有單調性

然後列舉右端點,維護mex恰好為全域性mex的左端點

然後簡單dp

考慮建出兩棵克魯斯卡爾重構樹,分別滿足x,y的lca是原樹上的x,y路徑上的最小值和最大值

然後滿足題目限制的x,y在兩棵樹上分別互為祖先

這個可以對第一棵樹求出dfs序,然後dfs第二棵樹,樹狀陣列維護x的祖先的第一棵樹的dfs序

t1

#include using namespace std;

#define ull unsigned long long

const int n = 1e6 + 4;

struct ans_ ;

int n;

int c[n];

int a[n], b[n];

dequedui;

inline bool cmp(int a, int b)

inline int read()

int main() );

}if (!dui.size()) else

}sort(c + 1, c + n + 1, cmp);

for (int i = 1; i <= n; ++i) ans += 1ull * c[i] * b[i];

cout << ans << endl;

return 0;

}

t2
#include using namespace std;

const int n = 3.7e7 + 4;

const int mod = 1e9 + 7;

int n;

int mex;

int a[n];

int f[n];

int ton[n];

inline void md(int& x)

void init()

inline int read()

int main() else

for (int i = 1; i <= n; ++i) a[i] = read();

mex = 0;

init();

for (int i = 1; i <= n; ++i)

int now = 0;

init();

for (int i = 1; i <= n; ++i)

}int sum = 1;

int st = now;

now = 1;

--ton[a[st]];

for (int i = 1; i <= n; ++i) f[i] = 0;

for (int i = st; i <= n; ++i)

f[i] = sum;

}cout << f[n] << endl;

}return 0;

}

t3
#include using namespace std;

const int n = 2e6 + 11;

struct q*** cc[2 * n];

struct ed_ e[n];

int n;

int f[n];

int tre[n];

int siz[n];

int dfn[n], st;

int first[n], cnt;

int sta[n], num;

long long ans;

vectormx[n];

vectormn[n];

void pre()

void insert(int x, int val)

int query(int x)

int find(int x)

void qxx(int u, int v) ;

first[u] = cnt;

return;

}inline int max_(int a, int b)

inline int min_(int a, int b)

inline bool cmpmx(ed_ a, ed_ b)

inline bool cmpmn(ed_ a, ed_ b)

inline int read()

void pre_tre()

pre();

sort(e + 1, e + n, cmpmx);

for (int x, y, j = 1; j < n; ++j)

return;

}void dfs_mn(int x)

return;

}void get_ans(int x)

insert(dfn[x], -1);

return;

}signed main() ;

}pre_tre();

dfs_mn(1);

get_ans(n);

cout << ans << endl;

return 0;

}

遊記 NOIP2021 遊記

遊 nm,湖大臨時不搞了,新的考場機位不夠,只允許 csp2021 s 1 的初中生參加,親手葬送 noip 省選。退役是不可能的,ys 說盡力讓我參加明年省選,只要實力還在,一次 noip 不算什麼。想參加wc 具體原因請看 遊記 csp2021 s 遊記 湖大突然說不搞了,ys 讓我週六下午在小...

NOIP2021 棋局 題解

由於存在相對顏色大小關係,我們考慮線段樹合併來維護這個結構。為了後續的討論的方便,我們將lv進行離散化。這裡的離散化是在對統計不產生影響時,將所有的值都變得不同。對於每個連通塊我們維護四顆線段樹分別表示表示 同時維護兩個是為了之後處理直行道路時好處理。初始化時,我們將每個點的相鄰的有互信道路且沒有點...

遊記 noip 2021 遊記

笑死,noip 遊記還沒發 河北突然有疫情了,好像要在本校考了 還我爆頹之夜 不過似乎可以從 orz4338e 手裡逃過一傑,這是好的 看著幾個月前攢出來的題單突然意識到了什麼 然而只剩不到一周了根本不珂能做完 幾次模擬賽越考越拉,非常自閉 於是開始了報復性刷題 大概是一直在口胡 直接看題解 之前一...