ICode9

精准搜索请尝试: 精确搜索
  • 洛谷 P4004 - Hello world!(分块+势能线段树)2022-07-10 22:03:45

    洛谷题面传送门 简单分块题,可惜卡了一年的常( 道理很明显,碰到这种不可 polylog 维护的题肯定需要分块,弱化版可见 P3591 POI2015 ODW。而此题又涉及开根号,那又一个一眼的套路:segment beats,这样做法就出来了:设阈值 \(B\),然后。 对于 \(k>B\),查询修改都暴力。 对于 \(k\le B\),我们先

  • P5064 [Ynoi2014] 等这场战争结束之后 题解2022-07-10 18:05:11

    毒瘤卡常分块题但是看你写法。 注意到这道题有回溯操作,可以考虑建立操作树,下设第 \(i\) 个操作在操作树上对应的节点为 \(p_i\): 先建立 0 号节点表示初始状态(令 \(p_0=0\)),对于 1,3 两个非回溯操作(设为第 \(i\) 个操作),当前操作编号就是操作树上对应的节点编号,即令 \(p_i=i\);对于 2

  • 洛谷-P3178 树上操作2022-07-10 01:33:20

    树上操作 树链剖分模板 - 子树区间加和 考虑到树链剖分的时候,一颗子树内的 dfn 序一定是连续的一段区间,因此只要找到子树内最大的 dfn 序即可,也就是树链剖分 dfs 的时候回到当前结点时,记录一下当前分配 dfn 序分配到了哪个值 然后直接线段树区间加和即可 #include <iostream> #inc

  • 暑期第二周总结2022-07-09 21:31:08

      这周进行了数据结构的第一阶段。 完成了二叉排序树的查找: int SearchBST(BSTNode *bt,KeyType k) { if(bt==NULL) { return 0; } else if(bt->key==k) { printf("%d ",bt->key); return 1; } else if(bt->key>k)

  • [Contest on 2022.7.8] 好久没写平衡树了2022-07-09 16:04:20

    \(\cal T_1\) 数列维护 100 合 1 / sequence Description 你有一个长度为 \(n\) 的数列,现在你要支持以下 \(100\) 种操作: 操作 \(001\):询问若可以使用膜法一次令任一区间内的所有数同时 \(+1\) 或同时 \(−1\),要把某一区间恰好都变为 \(0\),至少需要几次膜法; 操作 \(010\):使一个

  • 洛谷-P3258 松鼠的新家2022-07-09 14:37:02

    松鼠的新家 树上差分模板题 - 点差分 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; const int maxn = 3e5 + 10; int val[maxn], dep[maxn], fa[maxn][25], a[maxn]; vector<int>gra[maxn]; void dfs

  • 凸包和网络流模板2022-07-09 12:01:30

    凸包模板 这题是整数范围,需要时请改浮点数 #include<bits/stdc++.h> #define int long long using namespace std; const int maxn=5110; int n; struct node{ int x,y; }s[maxn],e[maxn]; int top; inline int area(node a1,node a2,node b1,node b2){ return (a2.x-a1.x)*(b2.

  • P4310 绝世好题 题解2022-07-08 16:31:54

    题意 从给定的序列中选出一个子序列 \(b\) ,并且使得 \(b_i \& b_{i-1} \not= 0 , i\in[2,n]\) ,求 \(b\) 最长的长度。 做时思路 选一个子序列,模仿着最长上升子序列一样定义一个状态。 \(dp_i\) 表示选择 \(a_i\) 为结尾的最长的长度。暴力枚举肯定是 \(\mathbf{O} (n^2)\) 的。这

  • SPOJ-QTREE3 Query on a tree again!2022-07-08 00:31:22

    Query on a tree again! 树链剖分 + 二分 通过树链剖分查找,判断一下路径上,最后一个黑点出现在哪一条链上,然后在链上进行二分 dfn 查找第一个黑点所在位置 #include <iostream> #include <cstdio> #include <vector> #include <algorithm> using namespace std; const int maxn = 1

  • 洛谷 P4517 - [JSOI2018]防御网络(DP)2022-07-07 18:02:36

    洛谷题面传送门 简单题,不知道怎么评到黑的.jpg 首先拆贡献。看到仙人掌套路化分环边和非环边处理。非环边贡献非常 easy,只要两边都有点被选即可。主菜在环边。 每个环显然是独立的。我们假设现在在考虑一个由 \(p_1,p_2,\cdots,p_k\) 构成的环,那么我们考虑以这个环为根建树,显然每

  • 机试练习(三)——经典算法2022-07-07 13:05:36

    排序算法 1.冒泡排序 点击查看代码 #include <cstdio> #include <algorithm> using namespace std; const int MAXN = 50; int a[MAXN]; int main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &

  • LightOJ-1348 Aladdin and the Return Journey2022-07-07 11:34:49

    Aladdin and the Return Journey 树链剖分模板题 结点单点修改 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; const int maxn = 3e4 + 10; vector<int>gra[maxn]; int dep[maxn]; int siz[maxn]; in

  • 搭配购买2022-07-06 21:06:00

    题目描述 商店里有 n 件商品,编号为:1~n ,每件商品有一个价值 c 和价钱 v 。商店老板有个奇怪的规定,如果要买某件商品,则与这件商品相搭配的都必须买。 你的钱有限,所以你想用你现有的钱买到的商品价值越大越好。 输入格式 第一行有三个正整数 ,n , m , w, 分别表示商店里有

  • Codeforces Round #804 (Div. 2) DAlmost Triple Deletions2022-07-06 16:36:51

    题意:给定一长度为n的数组,可以任意选择其中两个相邻且不同的元素相消,请问最后可以剩下的所有元素相同的数组的长度最长是多少 思路:先花O(n^2)的时间求出任意i-j这一段的元素能否被完全消掉(del[i][j]==1),然后开始dp。dp[i]表示前i个元素经过操作后 剩下的元素相同且包含第i个元素的数

  • POJ-2763 Housewife Wind2022-07-06 15:41:31

    Housewife Wind 树链剖分 利用树中每个点都只有一个父节点的性质,将边权化为点权,然后树链剖分 LCA,套一个线段树维护权值 注意在同一链的时候,LCA 的点权是不计算在内的 这题卡时间卡的很紧,如果 TLE,尝试改成 scanf printf #include <iostream> #include <cstdio> #include <algorithm

  • 【题解】Educational Codeforces Round 912022-07-06 14:00:10

    A.Three Indices 题目描述: 原题面 题目分析: 这题就是要让我们找到三个数,要求中间的数最大。那么我们就考虑枚举中间的数是哪个,然后为了尽可能的使这个条件成立,我们显然就是要选择这个数左边以及右边的最小值,我们就预处理出来左边的最小值是哪个以及右边的最小值是哪个,然后每次判断

  • 朴素筛,埃氏筛,线性筛2022-07-05 11:34:09

    朴素筛:本质就是每一个合数n都可以被2-n-1里的数筛掉,这里就发现了一个问题就是,一个合数可能会被多次筛多次,这步可以进行优化。 埃氏筛:本质就是每一个合数n都可以被2-n-1里的素数筛掉,这里就是对朴素筛进行了优化,因为合数都会被素数筛掉,这样一来确实提升了时间复杂度,但是还是存在

  • 分治,倍增2022-07-04 08:33:09

    《分治,倍增》 其实全是二分 CF1059E Split the Tree 考虑贪心 为了使链的数量小,肯定是使每条链的长度更长 从叶子开始拓展,对于当前节点,选的儿子一定是能向上拓展最长的 用类似\(LCA\)的倍增 #include<bits/stdc++.h> #define int long long using namespace std; const int MAXN=1

  • AtCoder Beginner Contest 258 A - E2022-07-03 17:34:15

    传送门 这场打的有一种我又行了的感觉 A - When? 向下取整 + 取余 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <string> #include <queue> #include <functional> #include <map> #include <set>

  • Codeforces Round #798 Div.2 C-E 题解2022-07-03 01:04:33

    Problem C 传送门 Solution 看完题面不难想到一个贪心思路: 从根节点开始 DFS,每次截断节点数更多的子树,然后递归到另一棵子树继续向下计算。 看起来十分美好,但有一个问题:如果两棵子树大小一样,结构又不清楚,怎么办? 这个时候就珂以用动态规划来解决了。 设 \(dp(u)\) 表示 \(u\) 被感

  • 洛谷-P3379 【模板】最近公共祖先(LCA)2022-07-02 19:02:14

    【模板】最近公共祖先(LCA) 倍增 lca 模板 真心觉得二进制太奇妙了 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; #define endl '\n' const int maxn = 5e5 + 10; vector<int>gra[maxn]; int fa[maxn

  • AtCoder Beginner Contest 257 A - F2022-07-02 15:33:34

    传送门 vp 了一场之前的 ABC,不知道是水平下降还是真的难,就很多要想很久,寄了 A - A to Z String 2 向下取整考虑一下是在哪个组就好 #include <iostream> using namespace std; int main() { int n, x; cin >> n >> x; x--; x /= n; cout << (char)('A' + x)

  • 递推例题2022-07-02 08:31:36

    1312:【例3.4】昆虫繁殖 时间限制: 1000 ms         内存限制: 65536 KB提交数: 27247     通过数: 13556 【题目描述】 科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过xx个月产yy对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月

  • CodeForces 587F Duff is Mad2022-07-01 23:02:35

    洛谷传送门 CF 传送门 比 CF547E 略难的字符串好题。 思路 首先令 \(m = \sum\limits_{i=1}^n |s_i|\)。 设 \(a_i\) 为第 \(i\) 个字符串在 AC 自动机上的终止结点。考虑在 AC 自动机上匹配的过程,\(x\) 在 \(y\) 中出现的次数就相当于在 Trie 树上 \(a_y\) 到根结点的链上,每个结

  • POJ3237 Tree (树链剖分)2022-07-01 20:34:52

    通过打懒标记实现区间取反,和线段树基本操作都差不多。 本题还是一道边权化为点权的问题。 200行巨长代码: 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int maxn=10010; 6 int head[maxn],cnt=0,total=0;//头结点

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有