上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 38 下一页
摘要: 为了使数字最大,首先要最大化其位数。 设$f[i][j][k]$表示从低到高考虑了$i$位,手头火柴棍个数为$j$,第$i$位是不是$0$时,最少移动多少根火柴。 若$f[i][0][非0]\leq k$,则存在一个长度为$i$的数,由此可以求出最大长度。 确定长度之后,再从高到低逐位贪心确定每一位 阅读全文
posted @ 2017-07-04 01:41 Claris 阅读(673) 评论(1) 推荐(1) 编辑
摘要: 将曼哈顿距离转化为切比雪夫距离,即: $|x_1-x_2|+|y_1-y_2|=\max(|(x_1+y_1)-(x_2+y_2)|,|(x_1-y_1)-(x_2-y_2)|)$ 那么每个点能接受的范围是一个正方形,对正方形求交,若交集为空那么显然无解。 然后在交对应矩形中三分套三分即可,用二分查 阅读全文
posted @ 2017-07-01 04:05 Claris 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 注意到前3个操作都不会影响每列的情况,而第4个操作必然会将行列交换,故只要每行的和相同即可满足条件。 考虑数位DP,设$f[i][j][k][t]$表示考虑最高的$i$位,第一行的和是$j$,当前行的和是$k$,与$R$的大小关系为$t$的数字个数。 需要特判$|R|=1$以及$|R|$不是完全平方 阅读全文
posted @ 2017-06-30 04:06 Claris 阅读(212) 评论(0) 推荐(0) 编辑
摘要: Day-Inf: 去年China-Final一道数据结构题的FB送我进WF。 今年课表意外地满,好几天都是早上8点一直上课上到晚上9点,作业也相对较多。敝队大约每个星期只能训练一个下午,有时候甚至一整个星期都没有机会训练。 除去ICPC Camp,今年大概只组队训练了7场,浙江省赛还因为内存原因少过 阅读全文
posted @ 2017-05-31 02:19 Claris 阅读(1400) 评论(2) 推荐(2) 编辑
摘要: A. Square Function 留坑。 B. Guess by Remainder 询问$lcm(1,2,3,...,n)-1$即可一步猜出数。 计算$lcm$采用分治FFT即可,时间复杂度$O(n\log^2n)$。 C. Subtract if Greater! 对于每个修改操作,$[1, 阅读全文
posted @ 2017-05-04 21:10 Claris 阅读(714) 评论(0) 推荐(0) 编辑
摘要: A. Pieces of Parentheses 将括号串排序,先处理会使左括号数增加的串,这里面先处理减少的值少的串;再处理会使左括号数减少的串,这里面先处理差值较大的串。确定顺序之后就可以DP了。 时间复杂度$O(n^3)$。 B. Stars in a Can 求出三维凸包,枚举一个面,求出距 阅读全文
posted @ 2017-05-02 00:23 Claris 阅读(960) 评论(1) 推荐(1) 编辑
摘要: 首先用树状数组维护dfs序来快速支持一个点子树大小的询问。 每次删掉一个叶子时,从根开始往叶子走,显然只有$2size[x]\leq size[father]$的点的父亲才有可能换重儿子。 从根开始往下,找到最高的满足条件的点,从那个点开始继续迭代,每次点数至少减小一半,所以迭代只有$O(\log 阅读全文
posted @ 2017-04-26 16:38 Claris 阅读(548) 评论(0) 推荐(2) 编辑
摘要: 比赛的时候因为卡内存,在抠内存的时候改错了,导致赛内没有AC,赛后发现数组开的很小都可以AC。 分析题意我们发现,这题需要求出所有存在的直线形成的上凸壳,那么查询$[L,R]$时在凸壳上二分导数,找到最大值即可。 因为有删除操作,故离线求出每条直线存在的时间区间,在时间线段树上打标记,那么这样会转化 阅读全文
posted @ 2017-04-23 00:42 Claris 阅读(351) 评论(0) 推荐(0) 编辑
摘要: A. Artwork 倒过来并查集维护即可。 B. Bless You Autocorrect! 将字典和询问串都插入Trie中,建好图然后BFS即可。 C. Card Hand Sorting 枚举花色的顺序以及升降序,那么此时最小移动次数$=n-LIS$。 D. Daydreaming Stoc 阅读全文
posted @ 2017-04-21 00:51 Claris 阅读(528) 评论(0) 推荐(0) 编辑
摘要: A. Hacker Cups and Balls 二分答案,将$\geq mid$的数看成$1$,$<mid$的数看成$0$,用线段树进行区间排序检查即可。时间复杂度$O(n\log^2n)$。 B. Bored Dreamoon 设$f[i]$表示$i$的横坐标。对于$h[i]<h[j]$,若$j 阅读全文
posted @ 2017-04-20 12:37 Claris 阅读(809) 评论(0) 推荐(0) 编辑
摘要: 首先离线建出两棵树,对树$B$中每个点预处理出其往上$2^k$步的父亲以及中间的串的Hash值。 通过这个可以在$O(\log n)$的时间内比较两个串的字典序,以此将它们按字典序排序。 然后将树$A$压缩成Trie,并求出根到每个点的Hash值,同时预处理出每个串在$B$数组中出现的区间。 具体的 阅读全文
posted @ 2017-04-14 01:22 Claris 阅读(284) 评论(0) 推荐(1) 编辑
摘要: 如果知道了树的形态,那么可以树形DP,每个时刻只需要计算必选根的独立集个数以及必不选根的独立集个数。 那么现在知道独立集个数,要构造出树,可以考虑DP这棵树的形态,然后将之前树形DP的值作为现在DP的状态,即$dp[i][j]$表示必选根的独立集个数为$i$,必不选根的独立集个数为$j$时,树的节点 阅读全文
posted @ 2017-04-09 22:55 Claris 阅读(274) 评论(0) 推荐(0) 编辑
摘要: WF2014完结撒花~ 首先求出所有线段之间的交点,并在交点之间连边,得到一个平面图。 这个平面图不一定连通,故首先添加辅助线使其连通。 然后求出所有域,在相邻域之间连一条代价为$1$的边。 对起点和终点进行定位,然后BFS求最短路即可。 时间复杂度$O(n^2\log n)$。 阅读全文
posted @ 2017-04-07 23:36 Claris 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 首先将目标点按$y$坐标从小到大排序。 如果加速度为$0$,那么只要贪心走一遍即可。 否则考虑DP,设$f[i][j]$表示从$i$点以速度$j$出发最多能经过多少个点。 注意到将DP值相同的合并可以将$f[i][j]$按$j$划分成$O(n)$段区间,故用区间进行整体转移即可。 在求出DP数组后, 阅读全文
posted @ 2017-04-07 00:31 Claris 阅读(324) 评论(0) 推荐(1) 编辑
摘要: 1. Ski race 枚举枚举倍数判断即可。时间复杂度$O(n\log m)$。 2. Chairs DP求出每个点开始走最多能碰到几个椅子,时间复杂度$O(nm)$。 3. Triangle 留坑。 4. Wires 将所有点对$(a,b)$按$a$排序,那么内外都要满足$b$递增。 设$f[i 阅读全文
posted @ 2017-04-06 22:53 Claris 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 列出$n\times m$个未知量、$n\times m$个方程的方程组进行高斯消元。 注意到每次消元时只会影响前后$m$个方程,故只保存增广矩阵中的这些项,同时只对这些项进行消元即可。 时间复杂度$O(nm^3)$。 阅读全文
posted @ 2017-04-01 15:53 Claris 阅读(616) 评论(0) 推荐(0) 编辑
摘要: 二分答案,让$A$推迟出发$mid$的时间。 对于每个相邻的时间区间,两个点都是做匀速直线运动。 以$A$为参照物,那么$A$不动,$B$作匀速直线运动。 若线段$B$到$A$的距离不超过$mid$,则可行。 时间复杂度$O(n\log n)$。 阅读全文
posted @ 2017-04-01 10:52 Claris 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 设$f[i][j][k]$表示从房间$j$的第$k$扇门进去探索不超过$i$步的情况。 对于$0$步的情况,可以用每个房间的度数来表示。 否则可以绕着那个房间走一圈,将所有情况依次hash来表示。 最后对于每个房间求出$f$的最小表示,即可完成hash。 时间复杂度$O(n^4)$。 阅读全文
posted @ 2017-03-31 14:36 Claris 阅读(284) 评论(0) 推荐(0) 编辑
摘要: A. Count The Ones $ans=b-c+1$。 B. Craters 求出凸包,然后枚举凸包上两个点,对第三个点旋转卡壳。因为随机数据凸包期望点数为$O(\sqrt{n})$,故时间复杂度为$O(n\log n)$。 C. MSTrikes back! 记录最后$5$个点连通性的最小表 阅读全文
posted @ 2017-03-30 23:37 Claris 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 将所有点投射到二维平面上,枚举形成答案的两个$1$类点作为端点,以及过这两点的两条平行直线,那么答案就是直线边上以及内部的点数。 显然只需要枚举$1$类点形成的凸包上的点。 如果只有一个$1$类点,那么答案是$1$。 如果凸包大小为$1$,那么只有和它重合的$0$类点会被计入答案。 如果凸包大小为$ 阅读全文
posted @ 2017-03-27 01:36 Claris 阅读(286) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 38 下一页