
技巧
文章平均质量分 77
ygmjsjdboy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【状压DP】【矩阵加速】 [TJOI2015]棋盘
门 题目 给你n×mn\times mn×m的方格,在里面放棋子,并给出3×p3\times p3×p矩阵作为棋子攻击范围 求方案数 题解 首先!吐槽出题人!为什么没有说起始是第000行第000列!,所以棋子在攻击范围的第二行,直接0分,调了几个小时 一眼看数据范围,肯定是状压没跑了 冷静分析一波,状态数64,对当前状态有影响的只有上一行,所以f[n][s0][s1]f[n][s0][s1]f[n][s0][s1]三维数组,用回滚数组滚掉第一维 技巧 通过观察发现我们的n次转移过程完全一样,于是我们可以将原创 2020-06-12 19:47:30 · 131 阅读 · 0 评论 -
【点分树】[ZJOI2007]捉迷藏
门 点分树不卡常就别想过了。。。 题目 问树中最远黑点对距离 带修改 题解 点分树入门作 原图先乱跑一次点分治,保存点分治的每个root之间的父子关系,得到一颗点分树。然后我们的原图除了求dis就可以不管了 学习题解中不认识的大佬所说的套路: 点分治得到点分树 每个点用S1,S2S_1,S_2S1,S2两个数据结构维护,依次容斥 修改和查询都是树高(logn)×\times×数据结构修改查询复杂度 初始化可以视为n次修改 此题用堆维护 ①第一种堆:维护当前节点的每个点分树子树中的maxdis ②第二原创 2020-06-09 21:57:24 · 162 阅读 · 0 评论 -
【轮廓线dp】一双木棋
题目 棋盘格中,两人轮流下棋。下的棋必须左面,上面都已经下过棋。 每个棋盘格有两个值,分别代表两人下了该点能得到的分数。 每个人都想要(己方分数-对方分数)MAX 现每个人都采取最优策略,也知道对方要采取最优策略。 问先手的(先手分数-对方分数)MAX 题解 容易知道是DP,状压 dps=max(−dpt+vali,j) dp_s=max(-dp_t+val_{i,j})dps=max(−dpt+vali,j) 但最困难的是如何压缩状态 我首先用的是N位的M进制,每一位表示这一列还剩有多少个格子没下原创 2020-05-16 14:07:55 · 248 阅读 · 0 评论 -
【要脑子的题】树的重量
洛谷 P1268 题目 求满足条件的树的总边长即重量 题解 首先我们需要想到一个问题,有且仅有一个合法构造方法 然后我们可以推一个有趣的东西: 原本的满足关系的三点关系(上图)可以简化为 满足树形态的简图(下图)总长增加了k 接着 额 发现每个新点可以通过找在已知边中最小的k,好像就是这样两层循环就完了,果然是道蓝(难)题 #include<bits/stdc++.h> using ...原创 2019-12-13 16:48:09 · 138 阅读 · 0 评论 -
【二分】【前缀和】聪明的质检员
Luogu P1314 题目: 算了,自己看 题解: 显然对于选取的w,对应的Y有单调性(递减) 绝对值,尽量靠近S二分 求Y值用前缀和 #include<bits/stdc++.h> #define ll long long using namespace std; const int N=2e5+10,M=2e5+10; int n,m; int w[N],v[N]; ll S,s...原创 2019-11-04 15:26:21 · 122 阅读 · 0 评论 -
【双向链表】【倍增】开车旅行
Luogu P1081 题目: A,B轮流走(A先) A走前方次近的点,B走前方最近的点 距离为:∣ai−aj∣|a_i-a_j|∣ai−aj∣ 1.从哪个点出发,总距离<x,A与B的行走距离比值最小 2.从s出发,总距离<x,A,B分别的行走距离 题解: 暴力一般直接找每个起点对应A,B会到达的点 预处理:排序后,链表,找其前面后面两个范围内的点。(本题重点) 可以发现不论前面怎...原创 2019-11-02 23:16:06 · 133 阅读 · 0 评论 -
【读优取模】解方程
Luogu P2312 题目: 求a0+a1x+a2x2+...+anxn=0a_0+a_1x+a_2x^2+...+a_nx^n=0a0+a1x+a2x2+...+anxn=0 在[1,m][1,m][1,m]中的整数解 数据范围:n≤100,∣ai∣≤1010000,m<106n\leq 100,|a_i|\leq 10^{10000},m<10^6n≤100,∣ai∣≤...原创 2019-10-31 14:40:12 · 371 阅读 · 0 评论 -
【离散】火柴排队
Luogu P1966 题目: 给出两个数列a,b 求最少相邻交换(一个数列内)次数,使∑(ai−bi)2\sum (a_i-b_i)^2∑(ai−bi)2最小 题解: 先数学分析一下: ∑(ai2+bi2−2aibi)\sum(a_i^2+b_i^2-2a_ib_i)∑(ai2+bi2−2aibi) ∑ai2+∑bi2\sum a_i^2+\sum b_i^2∑ai2+∑bi2都...原创 2019-10-28 22:12:40 · 112 阅读 · 0 评论 -
【树上差分】【例题】Network
POJ3417 题目: 已知一棵有n个点的树,现加m条边,问:有多少种方案,选一条原树边,一条新加边,使两边删去后图不连通 题解: 乍一看,好像和割点和桥有点像,然而找到桥后就不知道怎么办了。 x->y的新加边:x->lca(x,y),y->lca(x,y)中经过边加一覆盖数 其实统计被新加边覆盖的边和覆盖次数就行了 未被覆盖: 可以与任意新加边组合成合法方案(ans+=m)(...原创 2019-10-20 22:20:54 · 261 阅读 · 0 评论 -
【矩阵加速】Fibonacci
POJ 3070 题目:略 题解:推矩阵公式,加速。。。 #include<stdio.h> #include<iostream> #include<cmath> #include<string.h> using namespace std; const int N=3,mod=10000; int n=2; struct Mt{ int a[N]...原创 2019-10-10 20:57:28 · 118 阅读 · 0 评论