总结中的标记【更新】 \({\color{SkyBlue}V}{\color{SkyBlue}P}\)表示,\(well\)当然是\(VirtualParticipation\)呀 \({\color{SkyBlue} \surd }\)表示已经补完 \({\color{Green} \natural } {\color{Orange} \natural } {\color{Red} \natural }\)有硬核的数学或数据结构或
A.P4343 [SHOI2015]自动刷题机 啊对对对,算法都对了,二分写挂了:) Solution 二分答案,每次 \(\mathtt{O(n)}\) 判断当前的 \(mid\) 是否可行,最大和最小分开二分; 注意 : 如果不存在这样的 n 则输出 −1。 我的挂分中多少有没看到这一行的成分在; AC code #include<bits/stdc
题目简介 给定一个长度为 \(2n-1\) 的序列 \(a\),你可以随意排列 \(a\) 中的元素,请求出有多少种不同的序列 \(b\),满足 \(b\) 的长度为 \(n\)。 \(b_i=\{a_1\ldots a_{2i-1}\}\) 的中位数。 \(n\leq 50\)。 答案对 \(10^9+7\) 取模。 分析 考虑当前已有的序列 \(a\) ,每次加入
题目链接:http://oj.tfls.net/p/83 写法一:找到第一个k和最后一个k的位置,区间长度=尾地址-首地址+1; #include<bits/stdc++.h> using namespace std; int ans; int a[10000010]; //返回第一个p的位置,如不存在p,返回0 int bs1(int l,int r,int p){ ans=0; //答案初始化为0
传送门 Description Given a sequence \(A_i\) consisting of \(N\) integers. Find the number of pairs \((L, R)\) for which the subsegment \({A_L, A_{L + 1}, ...,A_R}\) is a permutation of \(R - L + 1\) numbers. A permutation of \(K\) numbers is a
「IOI2022」鲶⻥塘 签到题。 如果我们记 \(a_i\) 表示第 \(i\) 列的高度,那么一定不存在 \(a_i\ge a_{i +1}\le a_{i+ 2}(a_{i+1} \neq 0)\) 的情况,假设存在,我们将 \(a_{i + 1}\leftarrow 0\) 答案不会更劣。同理如果 \(a_i\le a_{i + 1} \ge a_{i + 2}\),我们就将 \(a_{i + 1}\) 取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
链接:https://mp.weixin.qq.com/s?__biz=Mzg2NTQ1NzA2OA==&mid=2247485937&idx=1&sn=493a022240b215a1e4338df713d6620f&chksm=ce588f32f92f0624d0be225e79cf13c08ecb79b7a0cb5a1105e3662f0a8b973a717bc075984b#rd
// 离散化值得就是一一对应的关系,通常处理大数据范围中的小范围数据; 离散化的中的两个步骤: 1.a[ ] 中可能的重复元素(去重) 2.如何算出 x 离散化之后的值 (二分) /* 离散化模板 */ vector<int>alls;//存储所有的待离散化的数据; sort(alls.begin(),alls.end());//将所有值排序; alls.e
/* * |~~~~~~~| * | | * | | * | | * | | *
D 二分max值为L,判定能否使用\(\leq L\)的数构造出答案。 暂时不管L的限制。此时如果我们有一组解,表示为\(c_{0},c_{1},...,c_{60}\),其中\(c_{i}\)是有多少个数在第\(i\)位为\(1\)。那么我们可以将\(c_{i}\)减\(2\),\(c_{i-1}\)加\(4\);或者\(c_{i}\)减\(4\),\(c_{i+1}\)加\(2\),构造出
CF464E The Classic Problem \(\bigstar\texttt{Hint}\):发现没有什么好的突破口?为什么不想想怎样才能实现题目中 \(2^x\) 的加减法呢? 可见每次加减法,我们要做的是将添加的 \(1\) 和右边的连续的 \(1\) 合并为一整段,可以用线段树 \(\mathcal{O(\log n)}\) 实现。 怎样比较大小呢?考
例题1.数列分段 二分每段和的最大值。check 时从左往右扫,如果当前段的和大于限制则新开一段。 code #include<bits/stdc++.h> using namespace std; const int N=1e5+5; int n,m,a[N]; int maxn,s; int check(int x) { int cnt=1,sum=0; for(int i=1;i<=n;i++) { if(sum+a[i
前言 和学长学弟一起打的hdu多校,打的很菜没啥难题收录,因为难的我都不会做。 正题 hdu7152-Copy 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=7152 题目大意 \(n\)个数字的序列\(a\),\(m\)次操作,每次将一段\([l,r]\)复制一份然后插入在这一段的后面,或者求某个位置的值。
P1873 [COCI 2011/2012 #5] EKO / 砍树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 二分高度 judge中把比这个高度高的砍去(加上),看是不是满足条件 #include <bits/stdc++.h> using namespace std; #define ll long long #define MAX 10000001 int n, m; int datas[MAX]; bool
二分 + 双端队列广搜 复杂度 \(m \cdot log(r - l) = 1 \times 10^4 \times log(10^9) = 3 \times 10^5\) 点击查看代码 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int N = 1e6 + 10; const int M = 1e3 + 10; const int INF = 0x3f3f3f3
P2440 木材加工 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意:有许多木头,分成长为长为l的木头,需要k个,求l最大 二分长度,如果可以分成k个就增大二分的长度,否则减少 和蓝桥杯分巧克力极像 // https://www.luogu.com.cn/problem/P2440 #include <bits/stdc++.h> using namespa
简介 常用来维护区间信息的数据结构,可以在\(Olog(n)\)的时间内实现区间修改,区间信息合并,单点修改。 结构 建树 注意:线段树空间需要开到四倍。 struct Node { int minv; } seg[N * 4]; // 根据左右儿子更新父亲节点信息 void update(int id) { seg[id].minv = min(seg[id
针对的是b站视频-算法大神左神(左程云)算法课程第二节相关算法 由于python中关于递归有些踩坑,所以不搞对数器,就贴上单个例子验证正确的代码 视频笔记戳这里 1. 归并排序 归并排序-戳这里 #归并排序-递归 class solution(): def mergeSort(self, array): """
正题 题目链接:https://uoj.ac/problem/750 题目大意 给出\(n\)个数字和一个\(p\),保证\(2^n> p\)。现在要求一个序列\(w\)满足\(w_i\in[-1,1]\),使得\(\sum_{i=1}^nw_ia_i\equiv 0\pmod p\) \(1\leq p<2^n,1\leq n\leq 40,0\leq a_i<p\) 解题思路 我们考虑从数字集合\(S\)中找两
「C.E.L.U-02」苦涩 题目背景 回想起自己的过往的人生,YQH 觉得心中充满了苦涩。如果人生能再来一次,我一定会少做一些傻事,少真香几次,然后大胆地去追寻自己的爱。可惜没有这样一个机会了。 题目描述 在 YQH 的梦中,他看到自己过去的记忆正在不断浮现在自己脑中。这些记忆带给他的
题意简述 给出若干个雨中心 \(x_i\) 与降雨强度 \(p_i\)。 对于每场雨 \(x,p\),对位置 \(i\) 积水的贡献为 \(\max \{0, |x-i|+p \}\) 任意一个位置积水大于 \(m\) 就会发洪水,问抹去一场降雨,是否不会发洪水。 问题分析 首先,发洪水的地方一定是某个降雨中心。 本质上,每个位置的积水
暴露真实水平了,我该怎么办??? Day2 A 记 \(F(S)=\sum_{i\in S} a_i\)。 假如能找到两个集合 \(S,T\subseteq [n]\) 使得 \(S\neq T\land F(S)=F(T)\),那么令 \(S\backslash (S\cap T)\) 中的元素为 \(1\),\(T\backslash (S\cap T)\) 中的元素为 \(-1\),其余元素为 \(0\),这样就构造出了一
考虑性质 \(2^n>p\)。显然根据抽屉原理必然存在两个子集和 \(\bmod p\) 相等。找出这两个子集然后相减就是答案。 朴素的做总共需要 check \(3^n\) 或者 \(4^n\) 对子集,取决于实现方法,就算 mim 也只能开个根号,无法通过。因此我们肯定不能从这个角度来思考。瞎随机可以拿到 60 分。
https://www.luogu.com.cn/problem/P2390搜索,贪心,二分黄色题 思路: 其实我觉得吧,这题不用像大家说的,枚举左点,二分右点 题目问的是最多可以访问多少地标。稍稍分析可知,多访问一个路标,时间必定不会减少,显然这具有单调性质。于是很自然的可以想到去二分路标的个数呀QwQQwQ 先将