ICode9

精准搜索请尝试: 精确搜索
  • 洛谷P3368 【模板】树状数组 22022-06-03 10:31:48

    树状数组加差分的应用。(线段树也可以这么用) 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,m; 4 long long t[500005]; 5 int lowbit(int x) {return x&(-x);} 6 7 void add(int x,long long k){ 8 while(x<=n){ 9 t[x]+=k; 10 x+=l

  • 洛谷P3933 Chtholly Nota Seniorious2022-05-30 20:01:31

    题目 https://www.luogu.com.cn/problem/P3933 顺便:中国珂学院 思路 看到此题先大喊一声“我永远喜欢珂朵莉!” 好了然后我们思考一下如何做此题。 我们跳转到问题:现在要问,所有合法的分法中,A区域的极差与B区域的极差 中间较大的一个的最小值是多少? 关键字提取,我们比较容易想到这题

  • 洛谷P3372 【模板】线段树 12022-05-28 12:02:52

    两个操作,第一个打懒标记处理,第二个直接询问即可,线段树中每个节点存的是区间内所有元素之和。 1 //p3372 2 #include<bits/stdc++.h> 3 typedef long long ll; 4 using namespace std; 5 #define lson k<<1,l,mid 6 #define rson k<<1|1,mid+1,r 7 const int N=1e5+10; 8

  • 洛谷P2168 [NOI2015] 荷马史诗 (哈夫曼树)2022-05-27 22:00:59

    学了哈夫曼树这道题还是好想的,基本上和构造哈夫曼树的思路一样,但是题目要求最长si的最小值,所以用两个关键字的堆,第一关键字是把出现次数作为权值,第二关键字表示从该节点开始的最长长度,权值相同时,选择长度较小的合并。 1 #include<bits/stdc++.h> 2 using namespace std; 3 #de

  • 线性筛法 & 洛谷P4449 于神之怒加强版2022-05-17 00:35:06

    筛质数 基础的。 // v 标记是否为合数,p 存储质数 for (int i=2; i<=N; ++i) { v[i]||(p[++cnt]=i); for (int j=1,t; j<=cnt&&(t=p[j]*i)<=N; ++j) { v[t]=1; if (i%p[j]==0) break; } } 原理:每个合数 \(t\) 只被其

  • 洛谷P2556 [AHOI2002]黑白图像压缩2022-05-14 13:32:40

    题目描述 选修基础生物基因学的时候, 小可可在家里做了一次图像学试验。 她知道:整个图像其实就是若干个图像点(称作像素)的序列,假定序列中像素的个数总是 8 的倍数, 于是每八个像素可以转换成一个叫做字节的数, 从而这个表示图像的像素序列就被转换成了字节的序列。 所谓的字节就

  • 求逆元2022-05-13 16:00:36

    *洛谷P3811 乘法逆元 1.费马小定理: \(x' = x^{p-2}\) 2.线性递推求逆元:设 \(x'\) 表示 \(x\) 的逆元 对于 \(i\) ,求出 $t = p / i ,k = p % i $ 。 有 \(p = t \times i + k\) 。 所以 \(t \times i + k \equiv 0 ~(mod ~~p)\) 所以 \(t \times i \equiv -k ~(mod~~p)\) 左右同乘

  • 「题解」洛谷 P8339 [AHOI2022] 钥匙2022-05-13 08:00:24

    暴力:走 \(u\to v\) 路径时,遇到一个钥匙,将其压入对应颜色的栈,遇到一个宝箱,将栈顶的钥匙和其匹配,弹出这个钥匙。 特殊性质 A:考虑一个钥匙 \(x\) 及其对应的宝箱 \(y\),会对所有包含 \(x\to y\) 的路径(这里的包含要求和 \(x\to y\) 是一个方向),都会产生 \(1\) 的贡献。那么考虑在 \(dfn

  • 洛谷P3312 [SDOI2014]数表2022-05-07 01:32:34

    洛谷P3312 [SDOI2014]数表 有 \(Q\) 组询问,每次询问给定 \(n,m,a\),求 \[\sum_{i=1}^n\sum_{j=1}^m[\sigma(\gcd(i,j))\le a]\sigma(\gcd(i,j)) \]其中 \(\sigma(n)\) 为 \(n\) 的所有正因子之和。 答案对 \(2^{31}\) 取模。 \(1\le Q\le 2\times10^4,1\le n,m\le 10^5,|a|\le 10^

  • 洛谷 P8318 题解2022-05-06 19:04:51

    题目传送门 题意: 给出一个长度为 \(n\) 的操作后的序列,然后给出 \(m\) 次操作过程,每次给出操作类型 \(op\)、操作数 \(x\) 和 \(y\),求出操作前的原始序列。 在操作中,如果 \(x=y\),那么新的 \(x\) 就分别等于原始 \(x\) 的 两倍或平方。即:如果 \(op=1\),那么新的第 \(x\) 个元素就等

  • 洛谷 P6822 - [PA2012]Tax(点转边+最短路)2022-05-06 11:04:59

    洛谷题面传送门 套路题一道。 首先直接抛出建图方式: 边化点,点转边。将每一条无向边 \(e=(u,v,w)\) 拆成一正一反两条有向边 \(e_1,e_2\),然后在 \(e_1,e_2\) 之间连权值为 \(w\) 的边。 对于每个点,将所有与其相连的边按权值从小到大排序,然后对于权值相邻的两条边 \((e_1,w_1),(

  • 洛谷P1119 灾后重建2022-05-05 22:32:00

    floyd的变形,本质是求从i号顶点到j号顶点只经过前k号点的最短路程。 #include<bits/stdc++.h> using namespace std; const int N = 300,INF = 0x3f3f3f3f; int n,m,qn; int g[N][N],t[N]; void update(int k){ for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(g[i][j]>g

  • 洛谷P4458 [BJOI2018]链上二次求和2022-05-05 22:01:25

    洛谷P4458 [BJOI2018]链上二次求和 有一条长度为 \(n\) 的链(连接方式为 \(1-2-3-\cdots-n\)),第 \(i\) 个点的权值为 \(a_i\)。 有 \(m\) 个操作,分为修改和查询两类: 修改:将 \(u\) 到 \(v\) 路径上所有点的权值加上 \(d\)。 查询:对于所有包含 \(l\sim r\) 个点的路径计算上面的点的

  • 洛谷P2679 子串2022-05-04 02:31:38

    题目链接   算是一个计数类的\(dp\),首先我们先确定状态数有多少个,一个是字符串\(a\)现在匹配到了第几位,一个是字符串\(b\)现在匹配到了第几位,另一个就是我们现在分成了多少组从字符串\(a\)中挑选出一段子串。这三个状态是最直接的状态,还有另一个就是我们是否要选择当前的字符\(

  • 洛谷P5737 【深基7.例3】闰年展示2022-05-02 20:32:26

    基础知识 1.函数的基本结构: 函数类型 函数名(参数列表){ 函数主体,函数在return语句终止,void类型的函数可以不return,也可以写"return ;"这么一句话 } 2.函数的调用: 函数名(参数)进行使用,参数和参数列表对应 常识 常识 :百年是400的倍数才是闰年,如1900年不是闰年 小技巧 小技

  • (线段树,add懒标记)洛谷模板题2022-05-02 18:00:17

    原题链接: 洛谷模板题 题目: 如题,已知一个数列,你需要进行下面两种操作: 1、将某区间每一个数加上 k。 2、求出某区间每一个数的和。 输入格式: 第一行包含两个整数 n,m,分别表示该数列数字的个数和操作的总个数。 第二行包含 n 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始

  • 洛谷SP1716 GSS3 - Can you answer these queries III2022-05-01 23:31:08

    题目链接   操作一就是很简单的单点修改。操作二求最大子段和是本题的重点。   最大子段和可能分布在这个节点的左儿子的最大子段和,要么是右儿子的最大子段和,要么是横跨两部分(左儿子的后缀加右儿子的前缀)。而当前节点的最大前缀是\(\max \{pre[ls], sum[ls] + pre[rs]\}\),最

  • 洛谷P8309题解2022-05-01 09:31:06

    本文同步更新于洛谷博客 题目描述 给定平面直角坐标系上的四个点,作一个正方形使得这 \(4\) 个点分别在正方形每条边所在的直线上。 题解 补充一下 ternary_tree 的证明,好像还挺简单的。 过 \(A\) 作 \(AM\perp BS\) 交 \(BS\) 于点 \(M\),过 \(C\) 作 \(CN\perp DX\) 交 \(DX\) 于

  • 洛谷P4588[TJOJ2018]数学计算2022-05-01 00:31:25

    题目链接   如果只是进行操作一的话,那就是很简单的操作每一次直接乘就好了,但是我们还要进行操作二:要把前某几次乘的数除掉,所以我们就需要把每一次乘的数都存储下来,且是按顺序的。我们可以想到用一个数组或者是\(vector\)来顺序存储。但是我们会发现,这样的话我们每一次输出的时候

  • 洛谷P3502 窗口的星星2022-04-30 22:31:49

    题目链接   运用扫描线的方法,每一次都用一个大小固定的小矩形去框住星星,大致过程如图所示   我们要求出小矩形最多可以框住多少颗星星,也就是求出来这个区间的最大值是多少,因为小矩形的移动过程中要维护区间最大值,所以我们可以选择用线段树去维护区间最大值,我们按照星星的纵坐

  • 洛谷P2121 拆地毯2022-04-30 15:04:32

    题目链接:https://www.luogu.com.cn/problem/P2121 最大生成树 Talk is cheap. Show me the code. #include<bits/stdc++.h> using namespace std; int n,m; const int num=1e5+10; struct edge { int u; int v; int w; }e[num]; int ans; int cnt; int k; int s[nu

  • 洛谷P1629 邮递员送信(反向建图)2022-04-29 09:31:56

    题目链接:https://www.luogu.com.cn/problem/P1629 蛮有意思的一道题目 说实话第一见这种题真的不太好想。 读题发现,    并且重点词语被出题人贴心的标黑了,“运送每件物品过后必须返回邮局”, 这要求我们走完一遍最短路之后还要在折回去,也就是说,第一次最短路是从起点到终点,而第二

  • 洛谷P5694 [NOI2001] 陨石的秘密2022-04-23 13:36:28

    看完题面的第一反应是暴力 直接四维dp [i,j,k,l]表示深度为i,大中小括号分别为j,k,l时的方案 但发现s=ab这种情况不好处理,还要再枚举一个比d小的深度d' 时间复杂度变成了 D²*L的六次方 想开一个辅助数组g [i,j,k,l]表示深度小于i时的方案数,就可以直接拿出来用了 时间复杂度的问

  • 洛谷P7167 [eJOI 2020 Day1] Fountain (单调栈+ST)2022-04-22 22:00:39

    开两个数组:to[i][j]表示从i这个位置向下的第2j个圆盘是哪个,f[i][j]表示流满从i这个位置向下的 2j 个圆盘需要多少体积的水。 详情见代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+10; 4 int d[N],c[N],r,v; 5 int n,q,f[N][20],to[N][20]; 6

  • 洛谷P2880 [USACO07JAN] Balanced Lineup G(树状数组/线段树)2022-04-22 20:32:29

    维护区间最值的模板题。 1.树状数组 1 #include<bits/stdc++.h> 2 //树状数组做法 3 using namespace std; 4 const int N=5e4+10; 5 int m,ma[N],mi[N],n,c[N]; 6 7 int lowbit(int x){ 8 return x&(-x); 9 } 10 11 void ins(int x,int v){ 12 while(x<=n){

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

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

ICode9版权所有