賽後總結 20200827

2022-03-16 14:16:32 字數 3473 閱讀 8044

先開 t1,emmm,感覺貪心很可做。開 t2,看懂題意 + 手玩樣例之後沒思路。開 t3,看懂題意 + 手玩樣例之後發現暴力修改暴力計算答案有 40pts 還是挺香的,寫了個暴力。

回頭看 t1,想起幾分鐘之前大佬說 9! 暴搜,有點猶豫寫貪心還是暴搜,因為不保證自己貪心的正確性打算放最後寫。

看 t2 沒思路,會 40pts 的暴力,寫了。

t1 想暴搜,列舉全排列,怎麼判斷和原序列相比交換了幾次?我淦,想不出來。寫了個看似正確能過樣例的貪心,跑路了。

預計得分:100 + 40 + 40 = 180

實際的分:0 + 40 + 40 = 80

出題人太狠了,把貪心卡的一分沒有。。。

考場上的**

#include #include #include #include #include #define maxn 50001

const int mod = 2019;

int ans, n, m, pthn, head[maxn], dep[maxn];

int fa[maxn][21], lg[maxn], size[maxn];

struct edge pth[maxn];

void add(int from, int to, int w)

void dfs(int u) }}

void dfs1(int u, int k) }}

bool dfs2(int u, int x, int y, int k)

} if (u == x || u == y) return true;

return flag;

}int lca(int x, int y)

if (x == y) return x;

for (int k = lg[dep[x]] - 1; k >= 0; --k)

} return fa[x][0];

}int main()

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

dfs(1);

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

} std::string opt;

for (int i = 1, x, y, k; i <= m; ++i)

else

} fclose(stdin), fclose(stdout);

return 0;

}

正解

#include #include #include #include #include #define maxn 50001

void read(int &t)

while (c >= '0' && c <= '9')

t = f ? -x : x;

}void write(int x)

}const int mod = 2019;

int n, q, size[maxn], w[maxn], pre[maxn], dfn[maxn];

namespace seg tree[maxn << 2];

void build(int l, int r, int now)

int mid = (tree[now].l + tree[now].r) >> 1;

build(l, mid, lson), build(mid + 1, r, rson);

tree[now].sizz = (tree[lson].sizz + tree[rson].sizz) % mod;

tree[now].siz = (tree[lson].siz + tree[rson].siz) % mod;

tree[now].sizw = (tree[lson].sizw + tree[rson].sizw) % mod;

tree[now].sizzw = (tree[lson].sizzw + tree[rson].sizzw) % mod;

} void pushdown(int now)

void update(int x, int y, int k, int now)

if (tree[now].lazy != 0) pushdown(now);

int mid = (tree[now].l + tree[now].r) >> 1;

if (x <= mid) update(x, y, k, lson);

if (y > mid) update(x, y, k, rson);

tree[now].sizw = (tree[lson].sizw + tree[rson].sizw) % mod;

tree[now].sizzw = (tree[lson].sizzw + tree[rson].sizzw) % mod;

} int query1(int x, int y, int now)

if (tree[now].lazy != 0) pushdown(now);

int mid = (tree[now].l + tree[now].r) >> 1, ans = 0;

if (x <= mid) ans = (ans + query1(x, y, lson)) % mod;

if (y > mid) ans = (ans + query1(x ,y, rson)) % mod;

return ans;

} int query2(int x, int y, int now)

if (tree[now].lazy != 0) pushdown(now);

int mid = (tree[now].l + tree[now].r) >> 1, ans = 0;

if (x <= mid) ans = (ans + query2(x, y, lson)) % mod;

if (y > mid) ans = (ans + query2(x ,y, rson)) % mod;

return ans; }}

namespace cut pth[maxn];

void add(int from, int to, int w)

void dfs1(int u, int father)

} }void dfs2(int u, int tp)

} void change(int x, int y, int k)

if (dfn[x] > dfn[y]) std::swap(x, y);

seg::update(dfn[x] + 1, dfn[y], k, 1);

} int ask(int node)

}int main()

cut::dfs1(1, 0), cut::dfs2(1, 1), seg::build(1, n, 1);

std::string opt;

for (int i = 1, x, y, k; i <= q; ++i)

else

} return 0;

}

CSP J賽後總結

csp j賽後總結 t1t2 t3t4 100100040 t1看到題目,啊 好水 大概十分鐘就打完了。做法 用字串統計一下就好了。en 沒有出現奇奇怪怪的錯誤。100 get t2 看到題目,嗯?好眼熟?好像做過?其實和原來有很大不同,直接推翻程式3次 刪掉整個程式的感覺真好 花了1到2小時才做完...

CSP J 賽後總結

感想like a sunrise getting better and better.像日出一樣,愈來愈好,所有的一切。題記 原洛古評測 t1t2 t3t4 10050030 悲慘的現實 t1t2 t3t400 00這是乙個血與淚的教訓。哎,竟然手殘到沒有打cstdio標頭檔案。原本可以二等,結果與...

codeforces 賽後總結

最近做了兩場cf比賽,戰況慘烈,rating已經跌到底了,但是仍覺得收穫頗豐。第一場比賽沒什麼經驗,就按平時的練習來做的,500的題1a後,信心倍增的去做1000的題,結果就卡死在這道題上了,一道數論題,所用的知識點也不難,但是當時就是沒想到,不能說沒想到吧,其實我是有想到要有這個知識點做的,但是沒...