ICode9

精准搜索请尝试: 精确搜索
  • 线段树——区间求和2022-06-06 13:31:08

    #include <bits/stdc++.h> using namespace std; //以下是线段树的模板,让区间查询和修改的时间复杂度到O(lgn); class XianDuanTree{ private: vector<int> arr; vector<int> tree; public: XianDuanTree(vector<int> &arr){ this->arr = arr;

  • Max GEQ Sum (区间的子区间最大值(ST,线段树)+区间最大值的包含范围+是否合格,存在问题变化为最值问题)2022-06-02 21:00:35

    D. Max GEQ Sum time limit per test1.5 seconds memory limit per test256 megabytes inputstandard input outputstandard output You are given an array a of n integers. You are asked to find out if the inequality max(ai,ai+1,…,aj−1,aj)≥ai+ai+1+⋯+aj−1+aj hold

  • 正则表达式2022-06-02 17:03:04

    练习地址 https://regexr.com/ https://www.codejiaonang.com/#/course/regex_chapter3/0/0 基础 [ ] 字符组,允许匹配一组可能出现的字符 使用区间 [0-9a-zA-Z] 匹配特殊符号,使用转义符 \。获取字符中的-\- 四种快捷方式,取反变大写: \d 匹配任意数字 0-9 \w 匹配字母,数字,下划线

  • jq实现薪资区间值选择2022-06-02 09:33:12

    实现效果:选择薪资第一个值后,第二个值会根据第一个选中的值变为设定好的区间     html <select name="salaryStart" id="salaryStart" style="margin-right: 15px;" v-model="salary_start"> <option value="选择薪资范围">选择薪资范围</option&

  • 区间dp2022-06-01 23:00:53

    区间dp一般是 形如 dp[i][j] = oper(dp[i][k],dp[k+1][j] ) + cost[i..j]; 其中 oper可能是 求最大最小值,或乘法或加法,等等。 的dp 有一个比较简单题,可以对区间dp有个基本的了解https://www.acwing.com/problem/content/284/ 此题思路如图所示 ac代码如下 #define NMAX 303 in

  • CF Round#795 D - Max GEQ Sum2022-06-01 13:02:45

    D - Max GEQ Sum 单调栈 + st表 如果枚举每个区间的话,就算用 st 表 \(O(1)\) 查询,总复杂度也是 \(O(n^2)\) 所以要想办法减少要枚举的区间,用类似于贪心的思路,只枚举那些更容易使得 区间最大值 < 区间和 的区间 为了使区间最大值不变大,区间和不变小,可以想到用单调栈求出 \(a[i]

  • 3.28 模拟题解2022-05-29 19:31:49

    3.28 模拟题解 A. border 设 k-substring 的答案为 \(f(k)\),则有 \(f(k)\le f(k+1)+2\),因为 \(f(k+1)\) 至少都可以从 \(f(k)\) 继承而来。 那么考虑倒序枚举 \(k\) 并计算 \(f(k)\),我们可以先将 \(f(k)\) 设置成 \(f(k+1)+2\),再不停将 \(f(k)\) 减小直到其合法。 如果用哈希来判

  • D Difference (二分 + 单调队列)2022-05-29 12:03:19

    D Difference (二分 + 单调队列) https://ac.nowcoder.com/acm/contest/34866/D 题意 给你长度为n的序列 和一个k 一个区段值满足: f(l, r) = (max - min) * (r - l + 1); 其中max min是区间最大最小值 要求输出第k大的区间值 思路 因为数据比较大 容易超时 可以考虑二分答案 然后

  • CF1400E Clear the Multiset 题解2022-05-28 15:33:40

    考虑一个分治:每次如果要用第一种,一定是给整个区间用,直到没有办法覆盖整个区间,用的次数是 \(\min_{i=L}^R a_i\) 次,减去它之后分别递归最小值的两边。注意到如果某一次不使用第一个操作,那么以后也都不会用了,此时操作总数就是不为 \(0\) 的位置个数。复杂度最慢也是 \(O(n^2)\) 的。

  • CF1225E Rock Is Push 题解2022-05-28 15:31:14

    一般这种 dp 的转移都是相邻格子之间的,但是这道题相邻格子之间转移没办法搞掉题目的这个限制。考虑每次转向的时候转移,这样对于某一个点,他能转移的一定是一个区间(不能到最后 \(cnt\) 个,那样就把石头推出去了)。暴力做是 \(O(n^3)\) 的,区间的这个可以前缀和优化,就 \(O(n^2)\) 了。

  • Milking Time S2022-05-28 15:04:01

    题目描述 Bessie 可以在接下来 \(N\) 个小时内产奶,为了方便,我们把这 \(N\) 个小时 \(0\dots N-1\) 编号。 FJ 在这 \(N\) 个小时内有 \(M\) 段时间可以来给 Bessie 挤奶,第 \(i\) 段时间从 \(Start_i\) 开始到 \(End_i\) 结束,可以得到 \(Eff_i\) 加仑牛奶。 每次 FJ 给 Bessie 挤奶

  • 2022.5 杂题2022-05-26 20:31:55

    P5608 [Ynoi2013] 文化课 用线段树维护。对于区间修改符号的操作,记录区间的数字之和以及数字积即可。对于区间修改数字的操作,发现修改后的值无法快速求出来,考虑在每个线段树的节点 \(p\) 上,记录二元组的集合 \(S_p=\{(c_i,d_i)\mid 1\le i\le len_p\}\),表示长为 \(c_i\) 的极长乘

  • 关于区间操作查找(前缀和与差分)2022-05-23 12:01:58

    今天学了前缀和和差分,为了避免我把它忘掉,我还是浅浅的记录一下吧 首先需要知道什么是前缀和与差分:    前缀和就是数组中某元素之前(包括此元素)的所有元素的和 设b[]为前缀和数组,a[]是原数组。   对于一维数组而言,某个元素的前缀和就是从这个数组的第0个元素到这个元素的所有元

  • 可持久化线段树2022-05-21 13:00:07

    可持久化线段树 可持久化线段树 就是 可以持久化的线段树。(?????? 大部分可持久化线段树其实都是「可持久化权值线段树」,也就是「主席树」。 这个东西我好像只理解了一点点皮毛啊,暂时先发出来=_= 随便编的例题 你需要维护一个序列 \(a\),初始为空。有 \(n\) 次操作: 1 x:向序列 \(a\) 末尾

  • 57. 插入区间2022-05-20 10:00:31

    57. 插入区间 给你一个 无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 输入:intervals = [[1,3],[6,9]], newInterval = [2,5] 输出:[[1,5],[6,9]] 示例 2: 输入:intervals = [[1,

  • 区间dp2022-05-18 13:31:06

    练习一下区间dp,总结一下题型 括号配对问题 Brackets Sequence 链接:https://172.16.79.125/contest/view.action?cid=831#problem/A 题意:给一串括号序列。依照合法括号的定义,加入若干括号,使得序列合法。 一道典题,思路是括号配对加上路径回溯,找出输入的所有不配对单括号,在输出时将

  • 2022-05-172022-05-17 23:32:42

    给你区间的 空 集,请你设计并实现满足要求的数据结构 新增:添加一个区间到这个区间集合中。 统计:计算出现在 至少一个 区间中的整数个数。 实现 CountIntervals 类: CountIntervals() 使用区间的空集初始化对象 void add(int left, int right) 添加区间 [left, right] 到区间集合之

  • 快速选择 第k个数2022-05-15 20:05:01

    快速选择 第k个数 题目描述 给定一个序列,求第k小的数 算法思想 利用快速排序思想,算法复杂度能达到O(n)步骤如下: 1.找到排序分界点x,这里选择区间最左值 2.排序,让左边的值都小于x,右边都大于x 3.递归排序寻找数字,如果左区间数字数目大于k,直接在左边找第k小的数字,如果左区间数字数目

  • HDU-5358 First One2022-05-13 01:31:06

    First One 给出n组数,下标从1到n,求一个表达式\(\sum_{i=1}^{n}\sum_{j=i}^{n}(⌊log_2​S(i,j)⌋+1)×(i+j)\) 函数\(s(i, j)\)指的是区间\([i,j]\)的和 尺取法 这题的难点在于 如何发现他是尺取 首先我们的第一反应就是暴力,然后暴力会超时 接着观察公式有两个项,如果是通过第二个

  • 磊磊零基础打卡算法:day11 c++ 区间合并2022-05-13 00:34:44

    5.12 区间合并问题: 题目描述:给出n段区间,如果区间内,l -r存在交集,那么就可以合并,需要更新区间,如果不存在交集,那么就直接将单独的区间个数++,最后返回区间合并后的区间个数     解题思路: 将区间通过pair进行归类,并排序(可以去除包含的区间,并且可以从小到大排序也方便进行

  • 【题解】CF538H Summer Dichotomy2022-05-11 17:01:46

    【题解】CF538H Summer Dichotomy 给定若干个区间 \([l_i,r_i]\),将区间分为两组,其中有些区间不能分在一组,使得存在 \((p,q)\) 满足 \(p\) 在第一组所有区间内,\(q\) 在第二组所有区间内,且 \(p+q\in[L,R]\)。 我们需要分两组,且一些不能同组,非常像二分图/2-SAT模型。但是直接做非常

  • 【离散化】AcWing802. 区间和2022-05-10 10:03:04

    AcWing802.区间和 题解 本题要是一个很长的数轴,已经超过了数组的长度1e6,故我们需要使用离散化压缩空间 #include <iostream> #include <cstdio> #include <vector> #include <algorithm> using namespace std; typedef pair<int,int> PII; const int N = 3e5+10; //n输入的点

  • NC14247 Xorto2022-05-09 11:33:02

    NC14247 Xorto 题目 题目描述 给定一个长度为 \(n\) 的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为 \(0\) 。 输入描述 第一行一个数 \(n\) 表示数组长度; 第二行 \(n\) 个整数表示数组; \(1 \leq n \leq 1000\), \(0\leq 数组元素 < 100000\) 。 输出描述

  • HDU 1754 I Hate It2022-05-05 13:01:03

    题目传送门 本题是单点修改,区间求极大极小值的模板题。 一、数组的含义 1、在维护和查询区间和的算法中,\(t[x]\)中储存的是\([x,x-lowbit(x)+1]\)中每个数的和。 2、在求区间最值的算法中,\(t[x]\)储存的是\([x,x-lowbit(x)+1]\)中所有数的最大值。 3、求区间最值的算法中还有一个\(a

  • AcWing 802.区间和2022-05-04 22:33:10

    AcWing 802.区间和 题目描述 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。 现在,我们首先进行 n次操作,每次操作将某一位置 x 上的数加 c。 接下来,进行 m次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。 输入格式 第一行包含两个整数 n 和 m。

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

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

ICode9版权所有