UESTC 2017 Summer Training #1~5补题

UESTC 2017 Summer Training #3 Div.2

D 生成树 分别按照白边先加和黑边先加的顺序做两次生成树,得出使用白边数目的上下界,大胆猜生成树中白边的个数可以取边上界到下界中的数,然后判断上下界中是否存在一个斐波那契数就行,不过还要注意的是如果产生不了生成树,也要输出No,复杂度\(O(T*m*logn)\)

WQF的代码

K SG函数+博弈论 如果只能剪出\(1*n,n*1(n>1)\)则是必败的状态,所以每次剪的时候最好是从宽度为2开始

WQF的代码

UESTC 2017 Summer Training #4 Div.1

D 字符串hash hash方式参考here,这里底数尽量给大点,才不会hash冲突(貌似队友证明出大于3的数都可以?)。知道hash的方式之后,\(h1[len][j],h2[len][j]\)分别表示两个字符串长度为len,开头为j的hash值,分别对其排序,枚举h1,二分是否有对应的h2,复杂度\(O(n^2logn)\)

WQF的代码

G 乱搞 考虑到奖牌询问数最大为n,所以奖牌放在深度很大的位置基本可以不用考虑需要减去的二叉树,然后当奖牌放置的深度较小的时不断更新二叉树还能继续放的最大深度。

WQF的代码

J 计算几何 凸多边形与圆相交的最大面积。可以发现圆心在任一直线上移动时,其与凸多边形的面积交是凸函数,那么可以先三分圆心横坐标,再三分圆心纵坐标去求解最大面积,复杂度是\(O(logn^2*n)\)

[Megumin的代码] (代码什么的,当然是不存在的呀)

UESTC 2017 Summer Training #5 Div.1

E dp \(dp[i][j]\)表示前j个人住进前i个避难所,并且保证避难所都住人的最小花费(始终保持\(j>=i\)),所以\(dp[i][j] = min(dp[i-1][j-1], dp[i][j-1])+cost\),用\(pre[i][j]\)记录\(dp[i][j]\)是由那个转移过来的,方便打印出解,复杂度\(O(nm)\)

WQF的代码

F 数学

G 博弈

H 模拟

J 计算几何 半平面交+二分,首先应该想到炸弹应该炸连续的区间,然后就能联想到半平面交了,此外,由于本题数据较大,必须使用\(O(nlogn)\)的模板,总的时间复杂度是\(O(logn^2*n)\)

[Megumin的代码] (代码什么的,当然是不存在的呀)

K 图论结论+dfs 题目要求染色数k要不小于点的度数,所以最小的k为刚好大于等于所有点的度数的奇数是必要条件,同时也是充分条件,所以k就确定了,然后用爆搜去染色,每当染点u更新相邻点v不能染的颜色,复杂度\(O(nklogk)\)

WQF的代码

posted on 2017-07-11 00:17  ACGO  阅读(236)  评论(0编辑  收藏  举报

导航