随笔分类 - [0-A]----基础算法
各大oj题解
摘要:C. Building a Fence 题意 给你n个基础高度和一个栅栏的长度k,如果建造这整个栅栏的过程可以满足所有规则,那么输出yes 规则是: 两个连续的相邻栅栏之间必须有长度为1的接触 第一个和最后一个栅栏必须和地接触 需要注意的是除了第一个和最后一个其他的栅栏也均不能超过地的高度大于$k-
阅读全文
摘要:E. Correct Placement 题意 你有n个朋友,每个朋友具有$h_i,w_i$两个属性,让你在满足条件下,求第i个朋友是否具有能放在其前面的朋友,输出对应的id 思路 因为h,w可以交换,所以我们将所有的h,w中大的作为y,小的作为x,然后按一定的规则排序。 排序后我们用双指针去寻找在
阅读全文
摘要:题意 给你一个上界$W$和一系列权值$w_i$,让你找到权值中任意一个或多个的和满足$(W + 1) / 2\leq sum \leq W$ 思路 从大到小贪心。 证明: 假设我贪到了一个这个数本身是满足$(W + 1) / 2\leq sum \leq W$那么我可以直接输出。 假设所有的
阅读全文
摘要:题意 根据题给的操作,让你将所有的数字都变为一样的 思路 在$3*n$的操作内我们去构造。 我们将所有的数先加到a[1]上,然后再去分配使每个数相等。 对于$i|a[i]$的可以直接都加到$a[1]$ 对于不能整除的情况可以先给$a[i]+(i-a[i]%i)$,然后再进行操作一 算法的正确性: h
阅读全文
摘要:题意 给你一个长度为n的数组,让你找到以i为长度的子段中都出现的最小的数(必须每个长度为i的子段都出现) 思路 首先观察题目发现$1\leq a[i]\leq n\leq 3*10^5$,也就是说我们可以通过枚举去解决这个问题,让我们考虑枚举每两个相同数字的之间的最大距离,也就是说这个距离范围内可以
阅读全文
摘要:思路 已知是求最长的连续因子,那么我们枚举每一种起始因子的可能,然后枚举最长的可能。 起始因子为$i$,长度为$sum$。 #include <bits/stdc++.h> using namespace std; #define int long long signed main(){ int n
阅读全文
摘要:思路 求哪里安装雷达我们可以变为线段交集问题,然后我们考虑怎么样贪心是最优的。 如图,第一个安装雷达的范围我们是必须选的,此时的右端点坐标为$maxx$所有左端点小于这个的我们都可以直接跳过,因为他们有交集。 然后当到达左端点大于他的时候我们需要再贪一个,然后同上,一直更新。 #include <b
阅读全文
摘要:#NC19858战争(war) 题意 如果后面的人和前面的人矛盾那么后面的人一定说谎了,输出他的位置。否则如果没有说谎输出$K+1$ 思路 二分长度,因为如果二分的区间[l,mid]有人说谎那么[r,mid]就不用判断了。但是如果[l,mid]没有人说谎,那么我们就要将mid扩大继续寻找说谎的人。仔
阅读全文
摘要:思路 题目要求: \[ na+b-c=m \] 我们可以转换为 \[ na-m=c-b \] 然后$c-b$是固定不变的,我们去枚举a,在枚举的a的时候我们发现要使等式尽可能的成立只有让$na-m$的差值绝对值越小越好,然后我们会发现$na$在$m$的左右两侧时,差值绝对值最小。 比如说 \[ 2*
阅读全文
摘要:题目大意 有m种花,要买n朵花,然后每种花可以买无数朵。 每朵花有两个权值$a_i$$,b_i$,第一次买时价值是$a_i$,再次买该种花时价值是$b_i$,要使价值和最大。 思路 先看复杂度,题目要求的是在$n\log n$内算出答案。所以我们应该是有二分的操作。 然后根据题意,我们可以读出可能是
阅读全文
摘要:链接:https://ac.nowcoder.com/acm/problem/53370 来源:牛客网 题目描述 Forsaken现在在一个三维空间中,空间中每个点都可以用(x,y,z)(x,y,z)(x,y,z)表示。突然,三维空间的主人出现了,如果Forsaken想要继续在三维空间中呆下去,
阅读全文
摘要:#include<bits/stdc++.h> #define INF 0x3f3f3f3f #define DOF 0x7f7f7f7f #define endl '\n' #define mem(a,b) memset(a,b,sizeof(a)) #define debug(case,x);
阅读全文
摘要:Aizu ALDS1_6_D Minimum Cost Sort 直接排序太简单了,我们来考虑一下排序的代价,对于一个长度n的由非负整数组成的数组,我们用交换法排序,每次可以交换任意两个元素,而交换的代价,是这两个元素之和,求出排序的最少交换代价,保证数组里没有两个元素相同且元素值小于等于10000
阅读全文
摘要:牛牛战队的比赛地 简单三分的做法,一般判断距离问题考虑三分算法. 此题为何三分:可以将此题近似为从无穷小和无穷大到原地聚集则两边的无穷往中间走的过程是减小,所以可能是单峰函数 一般情况下可以先在草稿本上画一画试一试看看三分可不可以算出正确答案 #include<bits/stdc++.h> #def
阅读全文
摘要:1.已知二维平面内三点坐标求三角形面积 ll solve(ll x1,ll y1,ll x2,ll y2,ll x3,ll y3){ return abs(x1*y2+x3*y1+x2*y3-x1*y3-y1*x2-x3*y2);//注意面积为返回这的一半 } 2.海伦公式 a,b,c分别为三角形三
阅读全文
摘要:朴素素数筛 bool isprime(int n) { if(n==1) return 1; int t=sqrt(n); for(int i=2;i<=t;++i) if(n%i==0) return 1; return 0; } 埃氏筛: const int maxn=1e5+10; int p
阅读全文
摘要:题目大意: 求贡献,已知公式n*(n+1)/2,求总和 收获: long long的转换技巧只能在乘或除上进行 题目链接 #include<bits/stdc++.h> typedef long long ll; using namespace std; const int N=2e5+10; in
阅读全文
摘要:1.放苹果--[①2020-02-07] 题目大意:他一共有n个口罩和m个盒子,每个盒子可以放任意个口罩(允许空着) 现在他想问你一共有多少种放口罩的方案? Hint: 1 2 2 和 2 1 2 是同一种分配方案 分情况讨论: 1.n=0,没有口罩,那么只有一种放法,即f(0,m)=1 2.m=1
阅读全文
摘要:Educational Codeforces Round 80 (Rated for Div. 2)A 大意:寻找x使得等式<=n,若满足情况输出YES否则NO 解法:纯数学题,先构造函数f(x)然后寻找f(x)取得最小值的情况 具体情况如下/瞎猜,纯暴力,猜一个区间进行暴力此题猜 √d <-对照上
阅读全文
摘要:一:差分数组概念 一、差分数组的定义及用途 1.定义:对于已知有n个元素的数列d,建立记录它每项与前一项差值的差分数组f:显然,f[1]=d[1]-0=d[1];对于整数i∈[2,n],我们让f[i]=d[i]-d[i-1]。//f[i]数组为差分数组,d[i]数组为原数组 2.简单性质:(1)计算
阅读全文

浙公网安备 33010602011771号