先開 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的題,結果就卡死在這道題上了,一道數論題,所用的知識點也不難,但是當時就是沒想到,不能說沒想到吧,其實我是有想到要有這個知識點做的,但是沒...