ICode9

精准搜索请尝试: 精确搜索
  • 2022-09-16 区间反转向上,是以收敛三角形的形式,三角形底在区间上边缘,形成的突破向上。2022-09-16 20:01:36

    案例一: 1. 首先感受的是多空力量,绿箭头的一笔上涨,其实无力,但是注意是这一笔没有任何向下的意思。所以考虑看多,但是无法直接突破 2. 第二个绿箭头是第二天开盘,直接跳空低开,这里我们要做多 3. 到前期高点之后,因为是区间顶部,所以我们考虑开始做空 4.注意了,这里空单没有打到区间下部,说

  • [AcWing 785] 快速排序2022-09-15 22:30:21

    第一篇博客诶!!! 点击查看代码 #include<iostream> using namespace std; const int N = 100010; int n; int q[N]; void quick_sort(int q[], int l, int r){ if(l >= r) return; //只有一个数或者没有数时则不用去遍历了 //int x = q[l]; //会超时 有两组数据

  • CF1327F AND Segments2022-09-12 21:04:24

    CF1327F AND Segments 洛谷:CF1327F AND Segments CF:CF1327F AND Segments Solution 原问题可以拆位分成 \(k\) 个子问题,答案为每个问题的方案数之积。 这些子问题均为:给定 \(m\) 个区间,要求这些区间的与值为 \(0\) 或 \(1\)。 区间赋值用差分解决。 对于限制为 \(1\) 的区间,其中的

  • 区间交集2022-09-12 19:33:30

    题目链接:区间交集 分析: 贪心 先将每个区间按左端点从小到大排序,同时用小根堆来维护区间右端点 对于若干区间的交集的长度为这些区间的右端点的最小值 - 这些区间的左端点的最大值 代码实现 #include <bits/extc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using nam

  • D K匹配 kmp 区间匹配计算贡献2022-09-12 18:31:38

     链接:https://ac.nowcoder.com/acm/problem/213329来源:牛客网 题目描述 牛牛是赫赫有名的字符串高手,现在牛牛发现了一种新的匹配方式。给定一个字符串SSS和一个字符串TTT,如果SSS存在一个长度为kkk的子串Sl1,l1+k−1S_{l_1, l_1 + k - 1}Sl1​,l1​+k

  • NOIP复习(三)线段树2022-09-11 08:00:50

    普通线段树 我的线段树 \(debug\)(记录一下做题时犯的错误): 检查 \(build\) 函数是否调用。\(\to segmentation~fault\) 区间操作 \(ql\) 是否有可能大于 \(qr\to segmentation~fault\)。 结构体中元素初值问题(是否赋初值,懒标记初值是否与题目操作冲突)\(\to\) 输出可能变得极大 动

  • P6020 [Ynoi2010] Exponential tree 解题报告2022-09-10 11:31:39

    P6020 [Ynoi2010] Exponential tree 解题报告: 更好的阅读体验 感觉还是水平不太行,写的很感性。 题意 给定 \(n,k\),构造矩阵满足: \(a_{i,i}=a_{i,i+1}=1\); 对于 \(i>j\),\(a_{i,j}=0\); 若 \(j>i+1\) 且 \(a_{i,j}=1\),则存在 \(i<t<j\) 满足 \(a_{i,t}=a_{t,j}=1\); 矩阵 \(A^k\) 需

  • 线段树上状压(位运算)2022-09-08 20:32:03

    洛谷P1558 分析: 颜色类型只有 \(30\) 种,可以利用二进制进行状压。 线段树维护一个二进制数表示区间的颜色为哪一种,将这个区间的颜色进行状压,每一种颜色对应二进制数的某一位。合并区间时将两个子节点的数按位或即可,题目区间修改为直接覆盖,统计答案时只需统计对应区间的数有多少个

  • CF1718D 题解2022-09-08 08:00:47

    设 \(k\) 为 \(a\) 中的空位数量。 首先咱们转化这个“相似”的条件,发现它其实是说,笛卡尔树的结构相同。 那么我们把p建笛卡尔树然后把a的数往上填。如果此时有上面小于下面就挂了(挂了:即每个询问答案都是NO) 然后对于中间的空,它需要 \(>\) 下面的最大值,并且 \(<\) 上面的最小值。

  • 可持久化线段树2022-09-06 22:03:00

    现想现写的,没有借鉴别人的任何东西。 可持久化线段树1 考虑不会变得太多,每次该值操作只会改变一个位置的值,其它位置是可以继承的。如果用数组,那就是下标继承。如果把数组分成 \(2\) 半,那改一个值,就一半继承,另一半重新赋值。而用线段树,就可以做到区间继承 \(\log\) 的时间复杂度。

  • 动态规划题目选解(二)2022-09-04 19:02:38

    上一个写太长导致 typora 卡爆了,只好新开一个。。 动态规划题目选解(一) CF730J Bottles Present 4 首先 \(k\) 很好算出来:记 \(\sum a_i=\text{sum}\),从大到小贪心选到 \(\sum b_i\ge \text{sum}\) 即可。 考虑 \(t\) 怎么算:如果我们选出的这 \(k\) 个瓶子内的水量分别为 \(x_1,x_

  • 环形石子合并2022-09-02 21:00:09

    环形石子合并 将 $n$ 堆石子绕圆形操场排放,现要将石子有序地合并成一堆。 规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分。 请编写一个程序,读入堆数 $n$ 及每堆的石子数,并进行如下计算: 选择一种合并石子的方案,使得做 $n−1$ 次合并得分总和最大

  • 区间 kth2022-09-01 12:03:20

    众所周知,区间 kth 有很多种求法。 本文中的时间复杂度和分数均以实现 P3834 为准。 为了更好地贴合现实,本文代码将更加符合学此算法时的实际情况。 一、排序 通过选择 / 冒泡 / 插入排序,将区间排序后输出 k 小值。 时间复杂度 \(O(mn^2)\) 实际得分:50 分 用时:7.81s #include<cstdi

  • ac802 区间和2022-08-31 22:05:44

    注意 >> 的运算顺序在加减之后 #include<bits/stdc++.h> using namespace std; const int N = 300010;// int n, m; int a[N];//坐标插入的值 int s[N];//a数组的前缀和 vector<int> alls;//所有查询和和插入的坐标 vector<pair<int, int>> add,

  • SP1557 GSS2 - Can you answer these queries II2022-08-31 10:00:08

    SP1557 GSS2 - Can you answer these queries II 题目大意 给出 \(n\) 个数,\(q\) 次询问,求最大子段和,相同的数只算一次。 分析 看到一个区间内相同的数只能算一次,经验告诉我们要考虑离线。 我们将区间按照右端点排序,用pre[i]来表示i上次出现的位置。 接下来,我们来考虑线段树需要维

  • 题解 AT5635 Shortest Path on a Line(线段树优化建图)2022-08-30 23:01:03

    题解 AT5635 Shortest Path on a Line Description 题目传送门 题面翻译 有一张有 \(N\) 个点,编号为 \(1 - N\) 的无向图。 做 \(M\) 次操作,每次操作给出三个正整数 \(L,R,C\),对于每对 \(≥L\) 且 \(≤R\) 的整数对 \((S,T)\) ,在 \((S,T)\) 之间添加一条长度为 \(C\) 的边 完成操

  • CF992E Nastya and King-Shamans2022-08-30 18:32:03

    CF992E Nastya and King-Shamans 题目大意 给定一个序列 \(a_i\) ,记其前缀和序列为 \(s_i\) ,有 \(q\) 个询问,每次单点修改,询问是否存在一个 \(i\) 满足 \(a_i=s_{i-1}\) ,有多解输出任意一个,无解输出 \(-1\) 。 分析 这里,以一贯的习惯,提供一下我整个的思维过程,希望有些启示作用。

  • 248G2022-08-28 15:02:16

    P3146 [USACO16OPEN]248 G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这题的dp是i到j全部合并的最大结果,所以dp[1][n]并不是最终结果 n^3区间递归,在子区间左边和右边相等时可以更新dp值,但要注意不能是0,(如果是0代表这两个小区间之前更本就没有更新过,也就是无法合并,那么这时候

  • [算法]区间归并2022-08-26 03:00:36

    问题分析 有的时候,会遇到给定一系列的区间,求交集or并集,或者合并的题. 这些题的解题方式比较通用个,做一个总结. 会用到集合和归并排序的相关知识. 两个区间的关系有六种,如果我们首先对区间按照区间左边界进行排序,那么就会编程3中关系: A 包含  B ==> A[0] <= B[0] && A[1] >

  • 一元三次方程2022-08-22 20:34:20

    根的绝对值>=1,可知在区间[i,i+1]内最多只有一个解。将(-100,100)for 循环分成若干区间令l=i,r=i+1;判断f(l)是否为0,再判断f(r)是否为0,如果为0,直接跳过。当左右点都不为0时走到下一步利用二分,判断。 当f(mid)*(r)>0 那么可知根一定在左边区间 即r=mid,否则的话,l=mid;

  • [NOIP2001 提高组] 一元三次方程求解2022-08-22 20:33:43

    题目链接:https://www.luogu.com.cn/problem/P1024 试题分析: 三个答案都在[-100,100]范围内,两个根的差的绝对值>=1,保证了每一个大小为1的区间里至多有1个解,也就是说当区间的两个端点的函数值异号时区间内一定有一个解,同号时一定没有解。那么我们可以枚举互相不重叠的每一个长度为1

  • cf1718 B Fibonacci Strings2022-08-22 15:01:05

    solution 当ai为Fib数的时候,他一定在串中是全部连续的,不然就g,因为把他分解成小的Fib数必定连续。 一个数字不能拆成两个连续的fib数。 \(f_i=\sum_{j=1}^{i-2}f_j+1\) 考虑最大的ai出现的区间。 f[x] f[x+1] f[x+2] 显然当(f[x+1],f[x+2])区间中有三个以上的ai就嘎了,tot都没他大 有

  • Maximum Segment Sum After Removals2022-08-21 19:34:15

    Maximum Segment Sum After Removals You are given two 0-indexed integer arrays $nums$ and $removeQueries$, both of length $n$. For the $i^{th}$ query, the element in $nums$ at the index $removeQueries[i]$ is removed, splitting $nums$ into different segment

  • 56. 合并区间2022-08-20 23:32:58

    56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。   示例 1: 输入:intervals = [[1,3],[2,6],[8,10],[15,18]] 输出:[[1,6],[8,10]

  • 整体二分学习笔记2022-08-20 12:30:42

    # 整体二分 本文代码见[这](https://oi-wiki.org/misc/parallel-binsearch "这")。 二分,精髓就在于一个"猜测"。猜测答案是否小于 $mid$ 、是否等于 $mid$ 。 先想一个简单的问题:一次查询全序列中排名为 $k$ 的数。 排名的定义是:小于一个数的数的个数+1。 当然可以排序然后输出。

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

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

ICode9版权所有