首页
学习
活动
专区
工具
TVP
发布

数据结构与算法

专栏作者
1812
文章
1331830
阅读量
135
订阅数
洛谷P4783 【模板】矩阵求逆(高斯消元)
题意 题目链接 Sol 首先在原矩阵的右侧放一个单位矩阵 对左侧的矩阵高斯消元 右侧的矩阵即为逆矩阵 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define LL long long using namespace std; const int MAXN = 2001, mod = 1e9 + 7; const double eps = 1e-9; inline int read() { char c = getchar(); int
attack
2019-01-03
4410
VSCode瞎折腾记
但是这东西比Dev难搞多了qwq,简单记一下自己的DIY历程吧(不然全搞炸就凉了)
attack
2018-12-24
8840
codechef Many Lists(树状数组 set)
题意 题目链接 Sol 直接做肯定不好搞(反正我不会。。) 直接开\(n\)个Pair类型的set,维护每个数的出现位置 每次在set中二分后暴力合并即可 然后就是树状数组的基本操作了 时间复杂度:\
attack
2018-12-21
3530
BZOJ4559: [JLoi2016]成绩比较(dp 拉格朗日插值)
首先在不考虑每个人的真是成绩的情况下,设\(f[i][j]\)表示考虑了前\(i\)个人,有\(j\)个人被碾压的方案数
attack
2018-12-21
4050
洛谷P4593 [TJOI2018]教科书般的亵渎(拉格朗日插值)
打出暴力不难发现时间复杂度的瓶颈在于求\(\sum_{i = 1}^n i^k\)
attack
2018-12-21
4580
BZOJ1014: [JSOI2008]火星人prefix(splay 二分 hash)
题意 题目链接 Sol 一眼splay + 二分hash,不过区间splay怎么写来着呀 试着写了两个小时发现死活不对 看了一下yyb的代码发现自己根本就不会splay。。。。 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define ull unsigned long long using namespace std; const int MAXN = 1e6 + 10; const ull base = 27; inline int read(
attack
2018-12-19
5270
BZOJ4698: Sdoi2008 Sandy的卡片(后缀数组 二分)
题意 题目链接 Sol 不要问我为什么发两篇blog,就是为了骗访问量 后缀数组的也比较好想,先把所有位置差分,然后在height数组中二分就行了 数据好水啊 // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; const int MAXN = 2e6 + 10; const int INF = 2333; inline int read() { char c = getchar(); int x = 0, f
attack
2018-12-19
3130
BZOJ4698: Sdoi2008 Sandy的卡片(二分 hash)
题意 题目链接 Sol 用什么后缀数组啊 直接差分之后 二分+hash找最长公共子串就赢了啊。。。 时间复杂度:\(O(nlogn)\)(不过我写的是两个log。。反正也能过) // luogu-judger-enable-o2 #include<bits/stdc++.h> #define ull unsigned long long using namespace std; const int MAXN = 1e6 + 10; const ull base = 27; inline int read(
attack
2018-12-19
3240
洛谷P2792 [JSOI2008]小店购物(最小树形图)
一开始的思路:新建一个虚点向每个点连边,再加上题面中给出的边,边权均为大小*需要购买的数量
attack
2018-12-19
3420
BZOJ4516: [Sdoi2016]生成魔咒(后缀数组 set RMQ)
首先,本质不同的子串的个数 $ = \frac{n(n + 1)}{2} - \sum height[i]$
attack
2018-12-19
3750
洛谷P3763 [TJOI2017]DNA(后缀数组 RMQ)
具体来说,每次比较当前后缀和\(S_0\)的lcp,如果长度\(< N\)的话就从不合法的位置继续匹配
attack
2018-12-19
4680
洛谷P4716 【模板】最小树形图(朱刘算法)
题意 题目链接 Sol 朱刘算法?感觉又是一种神仙贪心算法 大概就是每次贪心的用每个点边权最小的入边更新答案,如果不行的话就缩起来找其他的边 不详细说了,丢链接走人.. #include<bits/stdc++.h> using namespace std; const int MAXN = 1e5 + 10, INF = 1e9 + 10; inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' ||
attack
2018-12-19
1.1K0
BZOJ4589: Hard Nim(FWT 快速幂)
题目可以转化为从\(\leqslant M\)的质数中选出\(N\)个\(xor\)和为\(0\)的方案数
attack
2018-12-19
3900
洛谷P4717 【模板】快速沃尔什变换(FWT)
题意 题目链接 Sol 背板子背板子 #include<bits/stdc++.h> using namespace std; const int MAXN = (1 << 17) + 10, mod = 998244353, inv2 = 499122177; inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1; c = getcha
attack
2018-12-19
5510
BZOJ4011: [HNOI2015]落忆枫音(dp 乘法原理)
首先如果是个DAG的话,可以考虑在每个点的入边中选一条边作为树形图上的边,这样\(ans = \prod_{i > 1} inder[i]\)
attack
2018-12-19
3500
11.6NOIP模拟赛解题报告
很显然的一个贪心是从左往右扫,如果遇到一个不合法的点\(i\),那么升级\(i + R\)处的炮台。。
attack
2018-12-07
3200
cf449D. Jzzhu and Numbers(容斥原理 高维前缀和)
答案=任意一种方案 - 至少有\(1\)位为\(1\)的方案 + 至少有两位为\(1\)的方案 - 至少有三位为\(1\)的方案
attack
2018-12-07
7320
洛谷P1600 天天爱跑步(差分 LCA 桶)
\(T_i = 1\):同样还是差分的思想,由于每个点 能对其产生的点的深度是相同的(假设为\(x\)),那么访问该点时记录下\(dep[x]\)的数量,将结束时\(dep[x]\)的数量与其做差即可
attack
2018-12-07
4020
洛谷P3952 时间复杂度(模拟)
题意 题目链接 Sol 咕了一年的题解。。就是个模拟吧 考场上写的递归也是醉了。。。 感觉一年自己进步了不少啊。。面向数据编程的能力提高了不少 #include<bits/stdc++.h> #define fi first #define se second #define MP make_pair using namespace std; const int MAXN = 101; int T, top = 0, now, mx, flag; pair<char, int> st[MAXN];// f
attack
2018-12-06
4660
cf1043F. Make It One(dp 容斥原理)
首先,如果答案存在,那么最多为\(7\)(因为前\(7\)个质数乘起来\(>= 3e5\))
attack
2018-12-04
3830
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档