上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 22 下一页
摘要: 考虑$dp$,设状态量$dp[i][j]$表示抽到$i$用了$j$次连抽的最大值。 预处理前缀和:\(sum[i]=\sum\limits_{j=1}^i a[j]\) 状转方程:\(dp[i][j]=\max\{\quad dp[i-k-c][j-1]+a[i-k-c+1]+sum[i]-sum[ 阅读全文
posted @ 2020-10-19 19:55 syzf2222 阅读(103) 评论(0) 推荐(0)
摘要: 前言:$OI$中有一些奇思妙想,可能第一次自己想不出来,不要懊恼,不要沮丧,认真地去学习它,下次遇到就不怕了^_^ 正文:考虑$dp$,设状态量$dp[i][j]$表示前$i$个数分$j$段(任意一段满足条件)的方法数。 先给出状态转移方程: \(dp[i][j]=(j-c)*dp[i-1][j-1 阅读全文
posted @ 2020-10-18 21:01 syzf2222 阅读(156) 评论(0) 推荐(0)
摘要: 孤立地去看每一个询问,发现问题可以这样转化: 有一些集合,取出一个数则集合占用,求最多可以取多少个从0开始的连续自然数。 先手玩一组数据: \(\{0,1,2\},\{1,2,3\},\{1,3\}\) 考虑0:占用${0,1,2}$ 考虑1:占用${1,2,3}$ 考虑2:发现有2的${1,2,3 阅读全文
posted @ 2020-10-17 21:51 syzf2222 阅读(125) 评论(0) 推荐(0)
摘要: 部分分1:暴力算法$O(n2m2)$,期望得分$20pts$。 部分分2:考虑枚举每个矩形的右上角。 转而考虑每一个点作为右上角能产生多少面积的矩形。 预处理数组$rht[i][j]\(,代表从点\)(i,j)$最远可以向右走多少。 那么每次枚举一个点,枚举向下延伸多长,可以得到以这条边最远能向右平 阅读全文
posted @ 2020-10-16 15:08 syzf2222 阅读(296) 评论(0) 推荐(0)
摘要: 主要考察知识:点分治+最短路径生成树。 PART #1:最短路径生成树 相当于在跑$dijkstra$的时候记个路径所构成的树。 证明:1.除1外每个点均连一条边,故为$n-1$条边。 2.每个点均向最短路严格小于自己的点连边,故无环。 则一定为树,证毕。 注意:由于此题求最长路径,故选取最长的边, 阅读全文
posted @ 2020-10-03 23:53 syzf2222 阅读(185) 评论(0) 推荐(0)
摘要: 题目链接:P1600 天天爱跑步 暴力程序(25pts) 复杂度$O(n^2)$ #include<bits/stdc++.h> using namespace std; const int maxn=3e5+10; int n,m,ans[maxn]; inline int read(){ int 阅读全文
posted @ 2020-09-28 20:50 syzf2222 阅读(202) 评论(0) 推荐(0)
摘要: 跟上一题几乎是一模一样的套路。 离线+倍增预处理+开以深度为权值的线段树。 代码如下: #include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int n,m,f[maxn][20]; int root[maxn],to 阅读全文
posted @ 2020-06-18 09:19 syzf2222 阅读(161) 评论(0) 推荐(0)
摘要: 【问题描述】 小 Z 有一棵 n 个节点的树,以 1 号节点为根,每条边有对应的权值,小 Z 经过时会收到对应权值的保护费。 现在有 q 个询问,每次询问如下: 若小 z 站在 x 号节点上,他需要凑齐至少 k 的路费才能回家,但小 z 每 次只能往下走 (也就是只能往子树方向走),小 z 想知道凑 阅读全文
posted @ 2020-06-17 23:03 syzf2222 阅读(358) 评论(0) 推荐(1)
摘要: 如果不算数组开小和没开$long long$的话,我又是一遍过的。 思路很简单,考虑在线段树合并的时候,计算逆序对的贡献。 假设合并线段树$a$和$b$,则在区间$\left[l,r\right]$的时候, $a$在前所产生的逆序对个数为$a$的右子树的大小乘以$b$的左子树的大小。 $b$在前所产 阅读全文
posted @ 2020-06-17 12:09 syzf2222 阅读(202) 评论(0) 推荐(0)
摘要: 线段树合并,手打一遍过。 非常嗨皮,记录一下。 使用并查集,合并+查询。 代码如下: #include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; int n,m,q,a[maxn],rev[maxn],f[maxn]; in 阅读全文
posted @ 2020-06-16 21:58 syzf2222 阅读(144) 评论(0) 推荐(0)
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 22 下一页