上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 29 下一页
摘要: 我也曾赴过琼林宴 我也曾打马御街前 阅读全文
posted @ 2018-09-24 11:49 lokiii 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 嫌われる事が怖くて 僕は僕は僕を隠した 阅读全文
posted @ 2018-09-24 10:23 lokiii 阅读(123) 评论(0) 推荐(0) 编辑
摘要: Generals order their soldiers to kill And to fight for a cause they've long ago forgotten 阅读全文
posted @ 2018-09-24 09:17 lokiii 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 声が潰れるまで歌って 何度の時間を棒に振った 阅读全文
posted @ 2018-09-24 08:07 lokiii 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 分情况讨论,m=1的时候比较简单,设f[i][j]为到i选了j个矩形,前缀和转移一下就行了 m=2,设f[i][j][k]为1行前i个,2行前j个,一共选了k个,i!=j的时候各自转移同m=1,否则转移一下两行矩阵的情况 cpp include include using namespace std 阅读全文
posted @ 2018-09-23 21:59 lokiii 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j][k][0/1]表示选到i时,i 1选j张,i选k张,之前选的所有牌是否选择了对子 然后分情况讨论转移即可 阅读全文
posted @ 2018-09-23 21:38 lokiii 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 设f[i]为深度为i的n元树数目,s为f的前缀和 s[i]=s[i 1]^n+1,就是增加一个根,然后在下面挂n个子树,每个子树都有s[i 1]种 写个高精就行了,好久没写WA了好几次…… 阅读全文
posted @ 2018-09-23 21:26 lokiii 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 有点神奇的dp 首先注意到任意一个数都能被表示成若干个斐波那契数的和的形式 先求出n可以字典序最大的表示 设f[i][0/1]表示第i个斐波那契数选或者不选 如果当前数不选,那就选比他小的两个数,否则,需要不选比他小的两个数(连续的影响) 阅读全文
posted @ 2018-09-23 20:12 lokiii 阅读(159) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-09-23 16:28 lokiii 阅读(5) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-09-23 15:34 lokiii 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 注意是等于s不是大于s dfs,用set或者map存这条链到root的点权和sum[u],更新答案的时候查一下有没有s sum[u]即可 cpp include include include using namespace std; const int N=500005; int n,m,a[N] 阅读全文
posted @ 2018-09-22 21:03 lokiii 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 首先注意 先hash一下,双hash,然后枚举删去位置,把hash值排个序,把些相等的加起来统计一下对数即可 cpp include include include using namespace std; const int N=30005; int ans,n,m,k; long long h1 阅读全文
posted @ 2018-09-22 20:43 lokiii 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]为a序列前i个字符和b序列前j个字符的最长公共子序列,转移很好说就是f[i][j]=max(f[i 1][j],f[i][j 1],f[i 1][j 1]+(a[i]==b[j])) 设g[i][j]为a序列前i个字符和b序列前j个字符的最长公共子序列个数,这个转移是转移f的时候从前 阅读全文
posted @ 2018-09-22 19:59 lokiii 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 没看太懂题意orz 最优的是tarjan缩点之后问入度为0的点,因为问这个点可以知道整个块的情况 答案是这ans个入度为0的点都不是杀手的概率\\( \frac{n ans}{n} \\) 但是有特殊情况就是size为1的单独scc,这是ans ,因为其他点确定之后这个点就确定了 cpp inclu 阅读全文
posted @ 2018-09-22 17:34 lokiii 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 费用流里spfa最后的判断要写成dis[t] =0而不是dis[t]!= inf否则会WAWAWA…… 阅读全文
posted @ 2018-09-22 16:09 lokiii 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 因为边权为1所以a直接bfs瞎搞就行……我一开始竟然写了个spfa cpp include include include include using namespace std; const int N=1005,inf=1e9; int n,m,st,ed,h[N],cnt,a[N][N],b[ 阅读全文
posted @ 2018-09-21 21:57 lokiii 阅读(104) 评论(0) 推荐(0) 编辑
摘要: dfs会T,只好正反两遍拓扑了…… cpp include include include include using namespace std; const int N=100005; int n,m,h[N],cnt,d1[N],d2[N]; double f[N],p[N],s[N],ans 阅读全文
posted @ 2018-09-21 17:43 lokiii 阅读(213) 评论(0) 推荐(0) 编辑
摘要: ![](https://img2018.cnblogs.com/blog/1242898/201809/1242898-20180920174813398-1306255611.png) ```cpp #include #include #include using namespace std; const int N=1000005; int n,a[N],b[N]; long long m,... 阅读全文
posted @ 2018-09-20 17:49 lokiii 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 注意到目录是一颗树结构,然后就简单了,预以1为根的处理出dis[u]为以这个点为根,到子树内的目录总长,si为子树内叶子数 第二遍dfs换根即可 cpp include include include using namespace std; const int N=100005; int n,h[ 阅读全文
posted @ 2018-09-20 14:55 lokiii 阅读(187) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-09-20 09:24 lokiii 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 一看区间操作,很容易想到差分 所以就是先差分,然后为了保证最小步数,把政府差分抵消,也就相当于原数组区间加减 第二问,因为差分数组抵消之后不为0就需要使用n+1的虚拟位置,而这个的值其实没有,所以我们可以在这个抵消后的数的范围内随意操作,也就是任意取值 阅读全文
posted @ 2018-09-19 17:52 lokiii 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 注意到k=gcd(x,y) 1,所以答案是 $$ 2 (\sum_{i=1}^{n}\sum_{i=1}^{m}gcd(i,j)) n m $$ 去掉前面的乘和后面的减,用莫比乌斯反演来推,设n include using namespace std; const int N=100005; lon 阅读全文
posted @ 2018-09-19 15:11 lokiii 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 这居然是我第一次写线段树合并……所以我居然在合并的时候加点结果WAWAWAMLEMLEMLE……!ro的时候居然直接指到la就行…… 树上差分,每个点建一棵动态开点线段树,然后统计答案的时候合并即可 cpp include include include using namespace std; c 阅读全文
posted @ 2018-09-19 14:26 lokiii 阅读(167) 评论(0) 推荐(0) 编辑
摘要: Wall是个好东西,要不然我至死都看不出来我把(b[i]+b[j])写成了(b[i],b[j])…… 还是来自lyd的题解: (其实原来课件第一行式子写错了没有 1,然而我用sai手画了一个上去hhhh,板绘选手表示鼠绘真难) cpp include include include using na 阅读全文
posted @ 2018-09-19 09:08 lokiii 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 二分答案,注意l是max(a[i]+a[i+1]),r是sum_a 判断的时候用dp,设f[i]为i与1最少的相同颜色数,g[i]为i与1最多的相同颜色数,转移是f[i]=max(a[i] (w a[i 1] (a[1] g[i 1])),0),g[i]=min(a[1] f[i 1],a[i]); 阅读全文
posted @ 2018-09-18 16:45 lokiii 阅读(164) 评论(0) 推荐(0) 编辑
摘要: priority_queue实现的对顶堆,细节超级多WA了十几次……但是理论上是最简便的orz~~其实是我已经不会写平衡树了~~ 枚举左端点,显然要把这一段的高度搞成(l,l+k 1)的高度中位数,所以需要一个支持插入删除查询中位数的东西,我们使用对顶堆 然后关于删除,我们手动维护size和sum, 阅读全文
posted @ 2018-09-18 15:23 lokiii 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 来自lyd课件 发现s和last(s),next(s)成树结构,然后把式子化简成kx+b的形式,做树形dp即可 cpp include include include using namespace std; int n,t,a[105]; double p,q; struct qwe { doub 阅读全文
posted @ 2018-09-18 09:02 lokiii 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 设g[u]为这个点被儿子和自己充上电的概率,f[u]为被儿子、父亲和自己充上电的概率 然后根据贝叶斯公式(好像是叫这个),1.P(A+B)=P(A)+P(B) P(A)\ P(B),2.P(A)=(P(A+B) P(B))/(1 P(B)) g的转移很好想,根据上面的1公式,g[u]=g[u]+g[ 阅读全文
posted @ 2018-09-17 17:38 lokiii 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 首先考虑快排的递归什么时候停下,显然是当前段只剩下一个数了,也就是一个数两边出现分隔符 然后再考虑计算冒泡长度这个操作,因为有分割,所以我们可以把这些放到一起冒泡,这和递归每个区间冒泡是等价的 所以答案就是一个数被动了几次,也就是他两边的分隔符出现的最晚时间 在冒泡排序中,每次冒泡,一个数如果前面有 阅读全文
posted @ 2018-09-17 14:31 lokiii 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 注意到sum_t比较小,所以设f[i][j]为选前i头牛,当前sum_t为j的最小sum_w值,转移是f[i][j]=min(f[i 1][j],f[i 1][j t[i]]+w[i]),然后i维用滚动数组优化即可 注意j include include using namespace std; c 阅读全文
posted @ 2018-09-17 09:40 lokiii 阅读(149) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 29 下一页