2021 ecfinal (ICPC Asia East Continent Final)()

链接:2021 ICPC Asia East Continent Final
三题铁,四题罚时少银,罚时多铜

A. DFS Order

以1为根求树上每个点的最小dfs序和最大dfs序,一个点的最小dfs序是该点深度,用\(cnt_i\)表示以\(i\)这个点为根的树上点的个数,一个点的最大dfs序是\(n+1-cnt_i\)。

E. Prof. Pang and Poker

三个人打扑克牌,规则类似于斗地主,三个人都是明牌,\(Prof. Pang\)只剩最后一张牌,\(Alice\)先手,接着是\(Bob\),然后是\(Prof. Pang\),再回到\(Alice\),每个人可以打出比上一个人打的牌数字大的牌,也可以跳过,若其他人都跳过那么他可以继续出牌,\(Alice\)想让\(Prof. Pang\)赢,\(Bob\)想让\(Prof. Pang\)输,问最后\(Prof. Pang\)能否赢。
我们分类讨论。首先判断\(Prof. Pang\)的必败态,\(Alice\)只有一张牌或两人的牌都比\(Prof. Pang\)大,或者\(Bob\)只有一张牌且这张牌比\(Alice\)首轮将打出的牌大;然后判断\(Prof. Pang\)的必胜态,\(Bob\)手里只有一张牌且这张牌很小,或者\(Bob\)手里至少有两张小牌;这里还有一种特殊情况\(Alice\)手里有两张小牌且手里有一张很大的牌,首轮她打出一张小牌然后等待\(Bob\)将手里大于\(Prof. Pang\)的牌都打完,若\(Bob\)手中还有牌,\(Alice\)打出那张大牌,然后打出一张小于\(Prof. Pang\)且\(Bob\)要不起的牌。除这几种情况以外的情况可以断定\(Prof. Pang\)会输。

I. Future Coder

数一个数组中有多少对\((a_i,a_j)\) \((1\leq i<j\leq n)\)满足\(a_i\times a_j<a_i+a_j\),整理一下式子\((a_i-1)\times (a_j-1)<1\),先把数组每个数都减\(1\),对变化后的数组,记\(cnt1\)为正数的个数,\(cnt2\)为负数的个数,\(cnt3\)为选两个数至少有一个为零且不选重复的对数,答案即为\(cnt1\times cnt2 + cnt3\)

L. Fenwick Tree

可以进行多次操作,一开始数组的每个数都是零,每次操作选一个位置,并按类似树状数组修改的方式加上一个数或减去一个数,问最后能不能满足题目给的\(01\)串,\(1\)表示那个位置最终是一个不为零的任意数。树状数组是树状结构,子树与子树之间互不影响,那么手玩找规律。如\(1111\),修改1的时候会影响2和4,修改3的时候会影响4,只需要修改1和3就可以,那么结合样例可以推出判断一个位置需不需要修改只需要看与它直接相连的儿子就可以。记\(cnt_i\)为与\(i\)直接相连的儿子中不为零的数量,答案为满足\(cnt_i=0\) \(and\) \(s_i=1\)的\(i\)的数量加上满足\(cnt_i=1\) \(and\) \(s_i=0\)的\(i\)的数量

AC code

————————

链接:2021 ICPC Asia East Continent Final
三题铁,四题罚时少银,罚时多铜

A. DFS Order

以1为根求树上每个点的最小dfs序和最大dfs序,一个点的最小dfs序是该点深度,用\(cnt_i\)表示以\(i\)这个点为根的树上点的个数,一个点的最大dfs序是\(n+1-cnt_i\)。

E. Prof. Pang and Poker

三个人打扑克牌,规则类似于斗地主,三个人都是明牌,\(Prof. Pang\)只剩最后一张牌,\(Alice\)先手,接着是\(Bob\),然后是\(Prof. Pang\),再回到\(Alice\),每个人可以打出比上一个人打的牌数字大的牌,也可以跳过,若其他人都跳过那么他可以继续出牌,\(Alice\)想让\(Prof. Pang\)赢,\(Bob\)想让\(Prof. Pang\)输,问最后\(Prof. Pang\)能否赢。
我们分类讨论。首先判断\(Prof. Pang\)的必败态,\(Alice\)只有一张牌或两人的牌都比\(Prof. Pang\)大,或者\(Bob\)只有一张牌且这张牌比\(Alice\)首轮将打出的牌大;然后判断\(Prof. Pang\)的必胜态,\(Bob\)手里只有一张牌且这张牌很小,或者\(Bob\)手里至少有两张小牌;这里还有一种特殊情况\(Alice\)手里有两张小牌且手里有一张很大的牌,首轮她打出一张小牌然后等待\(Bob\)将手里大于\(Prof. Pang\)的牌都打完,若\(Bob\)手中还有牌,\(Alice\)打出那张大牌,然后打出一张小于\(Prof. Pang\)且\(Bob\)要不起的牌。除这几种情况以外的情况可以断定\(Prof. Pang\)会输。

I. Future Coder

数一个数组中有多少对\((a_i,a_j)\) \((1\leq i<j\leq n)\)满足\(a_i\times a_j<a_i+a_j\),整理一下式子\((a_i-1)\times (a_j-1)<1\),先把数组每个数都减\(1\),对变化后的数组,记\(cnt1\)为正数的个数,\(cnt2\)为负数的个数,\(cnt3\)为选两个数至少有一个为零且不选重复的对数,答案即为\(cnt1\times cnt2 + cnt3\)

L. Fenwick Tree

可以进行多次操作,一开始数组的每个数都是零,每次操作选一个位置,并按类似树状数组修改的方式加上一个数或减去一个数,问最后能不能满足题目给的\(01\)串,\(1\)表示那个位置最终是一个不为零的任意数。树状数组是树状结构,子树与子树之间互不影响,那么手玩找规律。如\(1111\),修改1的时候会影响2和4,修改3的时候会影响4,只需要修改1和3就可以,那么结合样例可以推出判断一个位置需不需要修改只需要看与它直接相连的儿子就可以。记\(cnt_i\)为与\(i\)直接相连的儿子中不为零的数量,答案为满足\(cnt_i=0\) \(and\) \(s_i=1\)的\(i\)的数量加上满足\(cnt_i=1\) \(and\) \(s_i=0\)的\(i\)的数量

AC code