ICode9

精准搜索请尝试: 精确搜索
  • AcWing 第59场周赛2022-07-10 00:00:40

    AcWing 第59场周赛 https://www.acwing.com/activity/content/competition/problem_list/2015/ AcWing 4491. 数组操作 按题意模拟即可 注意小坑:前缀和包括第0项,多一个答案0 #include <bits/stdc++.h> using namespace std; int main () { int minn = 0, ans = 0, sum = 0;

  • 洛谷-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

  • # 【圆方树】 $\text{Sol. Luogu P4606}$ 战略游戏2022-07-06 19:00:41

    \(\large \text{Date: 7.6}\) \(\text{Sol. Luogu P4606}\) 战略游戏 —— 【圆方树】解法 题目描述 给出一个简单无向连通图。有 \(q\) 次询问: 每次给出一个点集 \(S(2\le |S|\le n)\),问有多少个点 \(u\) 满足 \(u \not\in S\), 且删掉 \(u\) 之后 \(S\) 中的点不全在一个连通分量

  • [NOI2002] 银河英雄传说2022-07-06 11:33:25

    原题链接 题解 考点:带权并查集。 设 \(d[x]\) 表示 \(x\) 节点前面的战舰数量,\(s[x]\) 表示以 \(x\) 节点为首的那一列战舰的总数,合并操作如下: void add(int x,int y) { int a=find(x),b=find(y); fa[a]=b; d[a]=s[b]; s[b]+=s[a]; s[a]=0; } 把 \(a\) 接到 \(b\),\(a\) 前面

  • GG 的 普及组 试题2022-07-05 22:02:22

    1.找gg 这个就是直接用字符串做就好了,注意对大小写不敏感,所以要先把所有的大写字母换成小写的(或者倒过来也行)。 时间复杂度是 \(O(n)\) 的。 代码: #include <iostream> #include <cstring> using namespace std ; int n , p[200005] , tot ; char a[200005] ; int main ( ) { c

  • 常用正则表达式2022-07-05 15:05:35

     1、仅匹配数字字符串 正则表达式: /^\d+$/ 简单解释: ^ 表示字符串的开头 \d+ 匹配一位或多位数字 $ 表示字符串的结尾 2、十进制数 正则表达式: /^\d+(\.?\d+)?$/ 简单解释:   \.匹配单个 char 。 ? 表示可选。 () 表示一个组   (\.?\d)? 是一个可选组   3

  • 「JOISC 2014 Day2」水壶 题解2022-07-05 09:00:47

    题目链接:LibreOJ #2876. 「JOISC 2014 Day2」水壶 题意 给定一个 \(H\) 行 \(W\) 列的方格,其中每个方格可能是空地或者障碍。 方格图中存在着 \(P\) 个建筑物,第 \(i\) 个建筑物的坐标是 \((A_i,B_i)\)(保证建筑物的位置一定是在空地上)。 现在,JOI君需要在各个建筑物间往返,但是太阳很

  • 【CF335F】Buy One, Get One Free(带悔贪心)2022-07-04 19:32:32

    题目链接 有 \(n\) 个物品,你每购买一个物品可以免费获得一个价格严格小于它的物品,求得到所有物品的最小代价。 \(1\le n\le5\times10^5\) 带悔贪心 假如并非“严格小于”,而是“小于等于”,这就是 AGC001A。 但我们依旧可以考虑排序后从大到小决策。不过由于现在的策略比较复杂,需

  • gffread: 从基因组提取fa2022-07-04 12:34:43

    使用命令gffread -w test.fa -g GRCh38.primary_assembly.genome.fa test.gff3即可实现。 输入文件test.gff3如下所示: 记住:第三类可以写:transcript, protein, cds。不能写其他的字符,不然提取不了。 得到的输出文件test.fa如下所示:

  • CodeForces 811E Vladik and Entertaining Flags2022-07-03 16:34:01

    洛谷传送门 CF 传送门 思路 显然线段树。每个节点存最左端的列的并查集和最右端的列的并查集,并且维护这个节点中连通块的数量。merge 时先将 \(res\) 的连通块数量设为两个子结点的连通块数量之和,然后合并左儿子最右端的列的并查集和右儿子最左端的列的并查集,如果合并成功则 \(res

  • 【luogu P4320】道路相遇(圆方树)2022-07-02 20:31:06

    道路相遇 题目链接:luogu P4320 题目大意 给你一个无向连通图,无重边自环,然后每次给你两点,问你有多少个点是两点间路径必有的。 思路 圆方树pre模板题? 圆方树怎么做这里不说,看铁人两项的博客。 那我们知道圆方树的性质就是圆点方点是固定的,而且圆点是原图的点。 那代表着圆点的数量

  • 6.29 $\text{Data Structures}$2022-07-02 19:04:08

    \(\text{Date: 6.29}\) \(\text{Summary - Better Data Structures}\) \(\text{Contents: Segment Tree, (advanced)B-I-T}\) \(\text{I - Segment Tree}\) 一些信息之所以能用线段树维护,是因为这些信息具有合并性(已知\([l,mid]\)和\([mid+1,r]\)的信息,能否整合推导出\([l,r]\)的

  • 洛谷-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

  • P6139 【模板】广义后缀自动机(广义 SAM)2022-07-02 16:00:39

    题目链接 P6139 【模板】广义后缀自动机(广义 SAM) 【模板】广义后缀自动机(广义 SAM) 题目描述 给定 \(n\) 个由小写字母组成的字符串 \(s_1,s_2\ldots s_n\),求本质不同的子串个数。(不包含空串) 输入格式 第一行一个正整数 \(n\)。 以下 \(n\) 行,每行一个字符串,第 \(i\) 行表示字符串

  • LCT学习笔记2022-07-01 15:05:36

    概念 前置芝士:链剖分 链剖分:指一类对树的边进行划分的操作,这样做可以减少某些链上的修改、查询等操作的复杂度。链剖分分为重链剖分,实链剖分和长链剖分(不常见)。 重链剖分:实际上树剖就是重链剖分的常用称呼。可以看看 树链剖分学习笔记 实链剖分:同样将某一个儿子的连边划分为实边,

  • [cf1458F]Range Diameter Sum2022-06-29 09:05:37

    考虑分治,分别求出左侧后缀和右侧前缀的直径,即需将两者两两合并: 将直径以长度和中心点(将边拆点,使长度为偶数)的方式描述,分别记为$d$和$u$ 此时,对于$(d_{1},u_{1})$和$(d_{2},u_{2})$,合并后的直径长度即$\max\{d_{1},d_{2},\frac{d_{1}+d_{2}}{2}+dis(u_{1},u_{2})\}$ 若直径两端点

  • 「codeforces - 1519E」Off by One2022-06-28 19:40:44

    link。 点 \(A\) 与 \((0,0)\),\(B\) 共线的充要条件是 \(\frac{y_A}{x_A}=\frac{y_B}{x_B}\),即 \(k_{OA}=k_{OB}\)。又考虑到题目提出刻画斜率相等双点间的关系,所以不妨把所有斜率相同的点看作一个。再考虑刻画点的移动,由于与共线的点是移动后两者之间的哪一者无妨,所以我们可以在

  • POJ1985 Cow Marathon (树的直径)2022-06-25 15:36:34

    用两次dfs求出树的直径,这两次dfs可以写在一起,当然为了方便理解,这里是分开写的。 1 //两次dfs求树的重心 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 const int N=40005,M=40005*2; 8 int n,m,tot,p,ed; 9 int d[N],he

  • CF1685D1 Permutation Weight (Easy Version)2022-06-25 11:02:45

    题面传送门 首先如果整个排列是一个环的话那么答案就是\(0\),由此我们得到了一个在环内构造的方法。 但是如果在环之间切换的话代价至少为\(1\),设环的个数为\(p\),则答案至少为\(2p-2\) 转化一下题目,相当于给每个\(p_i\)分配一个\(s_i\),满足\(s\)整个序列构成一个环。 初始我们先给

  • LCA(倍增)2022-06-25 08:31:06

    inline void dfs(int u, int f) { fa[u][0] = f; dep[u] = dep[f] + 1; for(int i = 1; i <= 26; ++i) fa[u][i] = fa[fa[u][i - 1]][i - 1]; int v; for(int e = hd[u]; e; e = nt[e]) if((v = to[e]) ^ f) dfs(v, u); } inline int LCA(int u, int v) { if(dep[u] < d

  • HDU4734 F(x) (数位DP)2022-06-24 22:00:58

    (如此简短的题目给人一种莫名的压迫感......) 题目中定义一个数的权值求解函数:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1. 观察可知:权值的表达式与数的位数相关,再加上要分离每个位上的数字,那么就不难想到数位DP了。 dp[pos][j]表示pos位下小等于j的元素个数,代

  • [NOIP2016 提高组] 天天爱跑步2022-06-24 19:02:51

    题面,题解就不打了,写的较好的题解。 主要是借这个题说一下如何正确的思考出来一道题: 首先样例肯定要模,在模的时候就是构建思路的过程,当然一般的小样例无论什么方法都可以得出答案(spj),能过正确的理解题面就行; 然后我们就可以顺着方案A想,看看是否有漏洞(反例)、复杂度(以这个题来说:每个人

  • 洛谷 P4145 上帝造题的七分钟 2 / SP2713 GSS42022-06-23 12:00:24

    Description 给出一个长度为 \(b\) 的数列 \(a\),要进行 \(m\) 次操作,每次操作输入 \(k\), \(l\), \(r\),要求支持以下两种操作: \(k=0\) 表示给 \([l,r]\) 中的每个数开平方(下取整)。 \(k=1\) 表示询问 \([l,r]\) 中各个数的和。 数据中有可能 \(l>r\),所以遇到这种情况请交换 \(l

  • 换根DP的细节2022-06-21 08:31:07

    [USACO12FEB]Nearby Cows G 一道换根DP的板子。但是通过这道题发现了我的一些错误代码细节。 一主要就是对于第二遍DFS的过程中对于自己的第二维(也就是距离那维)应当倒序枚举。因为你要保证你调用自己的某个值时这个值是正确的,又因为只会调用比自己小的dp值,所以倒序枚举就可以避免

  • LCA模板2022-06-20 13:31:56

    倍增算法 类似二分思想 用fa[i][j]表示第i个数的第2^j个祖先 用dep[x]是第x的深度 每次对于两个节点 将深一点的点跳到和浅一点的同一个位置 然后再将两个点同时跳到同一个点 跳的时候跳以2的倍数跳 //预处理fa数组和de数组 //fa[i][j]第i个节点的第2^j个祖先 de[x] x的深度 void

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

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

ICode9版权所有