首页 > TAG信息列表 > maxd

习题3.3 线性表元素的区间删除 (20 分)

  以前我也是一个小白,写这些东西也十分吃力,慢慢到后面就会了 Data structure 是一门非常复杂的课,至少对我来说 慢慢的学明白,坚持下去一定会有成果, 加油,学习人       习题3.3 线性表元素的区间删除 (20 分)   给定一个顺序存储的线性表,请设计一个函数删除所有值大于

线性表元素的区间删除

简单动脑子,想了个n^2的,结果超时了 然后请教舍友,桥神给了我个o(n)的算法 如下 j对数组进行扫描,i对数组进行覆盖,找到符合要求的元素直接在原数组上进行覆盖即可,只需扫描一次数组。 List Delete( List L, ElementType minD, ElementType maxD ){ int i,j; for(i=-1,j=0;j<=L

(洛谷)P4657 chase

基本思路 : 首先令a数组表示该点的权值,c数组表示该点所连接的所有点的权值和。 如果我们知道了该点的前驱,那该点的权值就为 $ c[now]-a[pre] $ 。 递进 : 问题在于这是一棵无根树,那我们可以任意定义一点为根, 然后设两个数组 $ s_{i,j} , d_{i,j} $ 分别表示从子树 i 中某个点

题解 P3938 斐波那契

Solution 设\(f_i\) 为斐波那契数列第 \(i\) 项 , \(f_0=0,f_1=1\) , 第一只兔子在第一月出生 考虑每次产生新兔子的过程 , 可以发现第 \(i\) 月 \((i\geq3)\) 出生的第 \(j\) 个兔子的编号为 \(f_{i-1}+j\) , 它的父亲的也就是 \(j\) , (父亲的编号加上当前全体兔子的编号) , 进

PAT 2021 春季 甲级 7-1 Arithmetic Progression of Primes

#include <iostream> #include <algorithm> #include <vector> using namespace std; const int maxn = 1e5+10; int n,m,primes[maxn],num,vis[maxn]; void primes_table() { //质数表 vis[0]=1,vis[1]=1; for(int i=2; i<=m; i++) { if(vis[i]!=0)con

1438. 绝对差不超过限制的最长连续子数组

给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组,则返回 0 。   示例 1: 输入:nums = [8,2,4,7], limit = 4 输出:2 解释:所有子数组如下: [8] 最大

Floyd

https://www.acwing.com/problem/content/1127/ #include <bits/stdc++.h> using namespace std; #define IO ios::sync_with_stdio(false);cin.tie(0); cout.tie(0) inline int lowbit(int x) { return x & (-x); } #define ll long long #define pb push_back #de

链表题3----链表的区间删除

线性表元素的区间删除 (20分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List L, ElementType minD, ElementType maxD ); 其中List结构定义如下: typedef

题解【洛谷P1522】牛的旅行 Cow Tours

题面 看到数据范围那么小,于是考虑 Floyd。 首先,我们设 \(maxd_i\) 表示离点 \(i\) 最远的距离。 我们发现,连接两个牧场后,假设连接的两个点是 \(i\) 和 \(j\),那么最长的距离就是 \(\max\{\max\{maxd_i,maxd_j\},maxd_i+maxd_j+dist(i,j)\}\)。 然后,\(\max\{maxd_i,maxd_j\}\) 其实

6-15 线性表元素的区间删除 (20分)

给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List L, ElementType minD, ElementType maxD ); 其中List结构定义如下: typedef int Position; typedef str

dtoi4537 「TJOI / HEOI2016」树

题意:      有一棵树,每次两种操作,给一个点打上标记或者询问一个点最近的一个打了标记的祖先(包括自己),一开始只有根节点有标记 题解:     本题方法较多,这里采用一种最简单的做法。      先将树转化成dfs序,每一次打标记操作相当于在自己的子树上覆盖一个值,这个值也就是自己的

【 2018南京 】Country Meow (模拟退火)

In the 24th24^{\text{th}}24th century, there is a country somewhere in the universe, namely Country Meow. Due to advanced technology, people can easily travel in the 3-dimensional space. There are NNN cities in Country Meow. The iii-th city is located at

1047 编程团体赛 (20 分)

#include<stdio.h> int main() { int n; scanf("%d",&n); int dw[1010]; int i,j; int a,b,c; for(i=0;i<1010;i++) dw[i]=0; for(i=0;i<n;i++) { scanf("%d-%d%d",&a,&b,&c); dw[a]+=c; } int max=0,maxd; for(i=0;i<101

Codeforces Round #551 (Div. 2) 题解

CF1153A 直接做啊,分类讨论即可 #include<iostream> #include<string.h> #include<string> #include<stdio.h> #include<algorithm> #include<math.h> #include<vector> #include<queue> #include<map> #include<set> usin

[BZOJ 1095][ZJOI2007]Hide 捉迷藏

[BZOJ 1095][ZJOI2007]Hide 捉迷藏 题意 给定一棵 \(n\) 个点的树以及 \(q\) 次操作. 操作有两种, 一种是求有效点之间的最大距离, 另一种是将一个点的有效状态反转. \(n\le 1\times 10^5,q\le 5\times 10^5\). 题解 好像老老实实写动态点分的在榜上都垫底了qaq 我们可以发现这个求

洛谷P3761[TJOI2017]城市(树的直径、半径)

题目链接 洛谷 BZOJ(没有题面,有数据) 解析 删掉一条边后原树变成两棵树,再连一条边后新树的直径一定不小于这两棵树的直径 考虑再新增一条边,要想新树直径最小,一定是将两树的“中心”相连,经过这条连边的最长路径为两树半径之和加上这条边的长度 枚举修改哪条边,求出断开这条边后两棵树

UVA512A(直接进行模拟的版本)

这道题目有两种解法,第一种是直接在表格上模拟,另一种是将操作保存起来,然后对查询的cell进行模拟操作 先来说第一种,第一种解法是很多人很自然的想到的一种解法,但是刘汝佳大神的代码中有很多的处理方法值得学习。 下面贴上刘汝佳大神写的代码,之后我会模仿刘汝佳大神的思路再写一遍 //