随笔分类 -  题解

1 2 3 4 5 ··· 21 下一页
题解
摘要:初赛一: 1001 Drink:$\max\left\{\left\lceil\frac{m}{x}\right\rceil\cdot y\right\}$ 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i, l, r) for (in 阅读全文
posted @ 2020-07-30 19:40 HocRiser 阅读(576) 评论(0) 推荐(0)
摘要:A:暴力。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 typedef lo 阅读全文
posted @ 2019-08-22 12:32 HocRiser 阅读(475) 评论(0) 推荐(0)
摘要:A.模拟。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 typedef lo 阅读全文
posted @ 2019-08-18 14:14 HocRiser 阅读(279) 评论(0) 推荐(0)
摘要:1001 Polynomial:若第一个多项式的次数大于第二个,就是1/0,若小于就是0/1,若等于就是第一个多项式最高次项系数/第二个多项式最高次项系数。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define 阅读全文
posted @ 2019-08-18 14:05 HocRiser 阅读(674) 评论(0) 推荐(0)
摘要:本题可以用的方法很多,除去以下三种我所知道的就还有至少三种。 方法一:类似线段树优化建图,将一个平面等分成四份(若只有一行或一列则等分成两份),然后跑Dijkstra即可。建树是$O(n\log n)$的,单次连边是$O(n\log^2 n)$的。 1 #include<queue> 2 #incl 阅读全文
posted @ 2019-07-30 20:37 HocRiser 阅读(580) 评论(0) 推荐(0)
摘要:树剖裸题,当然LCT也可以。 树剖: LCT: 阅读全文
posted @ 2019-07-12 19:07 HocRiser 阅读(287) 评论(0) 推荐(0)
摘要:显然可以通过后缀数组快速找到询问的两个串分别是什么,然后正反各建一个后缀数组来求两个串的LCP和LCS即可。 阅读全文
posted @ 2019-07-12 16:19 HocRiser 阅读(301) 评论(0) 推荐(0)
摘要:首先枚举回文中心,然后显然中心两边要尽量扩展作为middle,这个用manacher实现。 然后注意到suffix的结尾位置是固定的(串尾),那么预处理出以每个位置结尾的串与原串后缀至多能匹配多长,然后再作个前缀和在枚举回文中心时尝试更新答案即可。这一部分将原串反过来用KMP实现,注意|suffix 阅读全文
posted @ 2019-06-29 18:39 HocRiser 阅读(515) 评论(0) 推荐(0)
摘要:T1.桥梁(bridges/restriction) Subtask1:暴力,$O(n^2)$。 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 4 #define 阅读全文
posted @ 2019-06-26 19:40 HocRiser 阅读(486) 评论(0) 推荐(1)
摘要:A.外教 Michale 变身大熊猫 对每个i求出以它结尾的[1,i]中的LIS长度f1与个数g1,和以它开头的[i,n]中的LIS长度f2与个数g2,若f1+f2-1=整个数列的LIS长度,那么它出现在LIS中的概率就是g1*g2/整个数列LIS的个数。发现可以用线段树优化朴素DP转移,维护下区间 阅读全文
posted @ 2019-06-17 09:06 HocRiser 阅读(278) 评论(0) 推荐(0)
摘要:A.直接模拟。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 typedef 阅读全文
posted @ 2019-06-09 17:59 HocRiser 阅读(198) 评论(0) 推荐(0)
摘要:类似维护括号序列,给每个点建两个点,然后所有操作都能轻松支持了。注意sum和lastans是long long。 阅读全文
posted @ 2019-06-09 09:17 HocRiser 阅读(199) 评论(0) 推荐(0)
摘要:A.(n-2)*180 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 type 阅读全文
posted @ 2019-06-02 13:00 HocRiser 阅读(181) 评论(0) 推荐(0)
摘要:A.2c+2min(a,b)+(a!=b) 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i 阅读全文
posted @ 2019-06-02 12:49 HocRiser 阅读(190) 评论(0) 推荐(0)
摘要:$D1T1$:$n$个村庄,第$i$个村庄的人要去第$p_i$个村庄(保证$p_i$为排列),每次可以将相邻两个村庄的人位置交换直到所有人都到达目的地。再给定一个长为$n-1$的排列$a$,表示第$i$次在第$i$个和第$i+1$个村庄中间增设一个关卡,当一次交换发生时,若交换中间存在一个卡,或交换 阅读全文
posted @ 2019-06-01 08:35 HocRiser 阅读(818) 评论(1) 推荐(1)
摘要:https://www.luogu.org/blog/user50971/solution-p5401 阅读全文
posted @ 2019-05-23 09:44 HocRiser 阅读(204) 评论(0) 推荐(0)
摘要:先考虑外向树的做法,显然一个点在其子树内第一个出现的概率等于它的权值除以它子树的权值和。于是f[i][j]表示i的子树的权值和为j时,i子树内所有数的相互顺序都满足条件的概率,转移直接做一个背包卷积即可。 现在考虑反向边,通过容斥变成“至少有i条边不满足条件”的满足题目条件的概率,这样一来那些反向边 阅读全文
posted @ 2019-05-22 10:37 HocRiser 阅读(165) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/cjyyb/p/10900993.html 阅读全文
posted @ 2019-05-22 10:02 HocRiser 阅读(132) 评论(0) 推荐(0)
摘要:根据旋转卡壳,当逆时针遍历点时,相应的最远点也逆时针转动,满足决策单调性。于是倍长成链,分治优化DP即可,复杂度O(nlogn)。 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i,l,r) for (int i=(l); i<=(r) 阅读全文
posted @ 2019-05-21 19:22 HocRiser 阅读(384) 评论(2) 推荐(0)
摘要:A.前n-10个有8即合法。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 t 阅读全文
posted @ 2019-05-17 19:14 HocRiser 阅读(197) 评论(0) 推荐(0)

1 2 3 4 5 ··· 21 下一页