自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (9)
  • 收藏
  • 关注

原创 区间问题(区间贡献问题超全详解)

​题目链接题源大概题意:给定你n个数字aia_iai​,请你求出有多少个区间[l,r],满足该区间的数字之和等于其区间长度。n<=1e5,-1e9<=<=1e9思路:前缀和+思维对于两个数ai,aja_i,a_jai​,aj​来说,如果满足以aia_iai​为左界,以aja_jaj​为右界包含的区间和等于区间长度则满足sum[j]−sum[i−1]=j−i+1sum[j]-sum[i-1]=j-i+1sum[j]−sum[i−1]=j−i+1将公式转换一下就是

2021-05-31 14:02:16 2553 23

原创 【期末复习】c++知识点大回顾,八篇文章让你永不破防(二)

c++期末复习知识点最全整理文章目录二、类与对象简介1.类与对象的描述2.类的特性3.类的定义及成员属性4.对象成员的访问5.构造函数和析构函数6.接口与实现分离7.条件编译7.1. 形式17.2.形式27.3. 形式37.4.应用:预处理器封套8.explicit关键字8.1.介绍8.2. 作用二、类与对象简介1.类与对象的描述类:具有相同属性和方法的一组对象的集合。简而言之就是一个类别,比如说牛奶、花生、酒等等就是一个是事物的类别。注: 类是对象的类型,可以把类与int等变量类型作比较,但

2021-05-29 11:45:46 3845 57

原创 【期末复习】c++知识点大回顾,八篇文章让你永不破防(一)

一、第15章 介绍对象技术1.简单输入输出//求a和b两个数之和。// 求两数之和 (本行是注释行)#include <iostream> //预处理命令using namespace std; //使用命名空间std int main( ) //主函数首部{ //函数体开始 ......

2021-05-27 22:50:40 5999 52

原创 怎么求逆序对的数量呢?一种特殊写法告诉你

求逆序对的必备知识离散化可以点离散化学习相关知识点树状数组链接1链接2链接3我们要求逆序对,就要求前面的数比后面的数大的数对有多少个。那么如果我们把每个数前面比它大的数有多少个求出来就可以了,答案就显而易见,就是每个数前面比它大的数的个数的和。那么问题转化为求每个数前面比它大的数的个数。怎么求呢?我们考虑到可以用树状数组tr[]维护一个数组先将原数组进行离散化,因为可能原数组的数据范围很大,数组空间不能开的很大。离散化之后原数组就变成了一个相对大小等级的数。(数小代表这个

2021-05-26 10:42:19 238 9

原创 机器学习介绍篇

机器学习介绍机器学习介绍篇1.人工智能1.1. 发展必备的三要素:1.2.分支2.机器学习流程2.1. 概念2.2. 流程2.3.数据集介绍2.4.数据基本处理2.5. 特征工程2.5.1. 含义2.5.2 包含内容机器学习介绍篇1.人工智能1.1. 发展必备的三要素:数据算法计算力CPU,GPU,TPUGPU是计算密集型的程序,大量简单的运算就在这上面运行。CPU和GPU的区别:可以访问这个链接,讲的非常详细,简单易懂。http://www.sohu.com/a/20130

2021-05-25 22:50:15 222 11

原创 河南省第十三届大学生程序设计竞赛热身赛 C

题意:给定一个序列,求所有不相同的子序列的个数,要求子序列的长度必须为3样例:输入:61 2 3 1 2 3输出:17输入:41 4 4 2输出:3思路:维护三个数组l[i]代表aia_iai​左边出现的不同数的个数r[i]代表aia_iai​右边不同数的个数last[i]代表上一个出现a[i]的下标固定中间的位置,从前往后开始枚举每个数,对于当前数作为中间数贡献的结果为 这个数前面的不同数的个数乘上这个数后面的不同数的个数,但是考虑到可能后面会出现相同的.

2021-05-22 21:31:56 828 15

原创 Codeforces Round #721 (Div. 2)A,B1,C题解

A求能够使and位运算为0的最大值,只要知道这个数的二进制有多少位,把第一位变成0,后边的全变成1就行了。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e6+5;int a[N];void solve(){ int n; cin>>n; int nn = log2(n);//二进制位数 ll s = 0; for(int i=0;i<n

2021-05-21 11:20:52 332

原创 P2872 [USACO07DEC]Building Roads S(最小生成树)

原题链接本题是最小生成树的相关题目,初始情况存在几条边,剩下的边需要自己选。思路:首先需要把所有点之间的距离求出来存到边的数组中,然后对边按权值从小到大进行排序,对已经存在的边重新再加入到边的数组中,把存在的边的权值设为0,那么之后首先就会选到权值为0的边,然后就按kruskal的模板代码写就行了。注意:1.精度问题求边之间的距离时,sqrt()里面的参数应该是double型的,如果是int型,就会出现精度问题,需要对求出的数据进行强制转换2.并查集初始化#include<bi

2021-05-19 18:17:37 310

原创 道路建设(牛客竞赛)(最小生成树prim+kruskal)(详细讲解)

题目链接道路建设题解(最小生成树)kruskal需要掌握的知识(前备知识):1.并查集的使用2.图的边的存储(结构体存储)(还有其他的存储方式,本题以结构体存储为例)kruskal算法步骤:1.首先做好所有的初始化工作:并查集初始化(很容易忘的)结构体存边2.对所有边按权值从小到大进行排序,因为是最小生成树嘛,肯定是从小的权值往大的权值挑选边的。3.对每条边进行遍历,记录当前访问的边的两个的点,查找这两个点的父亲节点,如果两个父亲节点一样,说明他们在一个集合里面,他们之前已经连通

2021-05-18 17:25:29 586

原创 最小生成树(kruskal算法)

牛客模板题思路:1.先存储所有的边,包括起点,终点,权值u,v,w2.对所有的边按权值从小到大排序3.最小生成树得到的边数一定是n-1(点的数目减一),按权值从小到大取边,如果选中该边,就把这条边的两个点加入到一个集合(表示有同样的归属关系,就是我们所说的并查集)里面,下次选边时,如果有节点已经在这个集合中,说明会构成回路,不满足最小生成树的性质,就要抛弃这条边。#include<bits/stdc++.h>#define fi first#define se secondu

2021-05-17 13:13:13 365 2

原创 小木乃伊到我家(牛客竞赛)(最短路模板题)

题源注意:1.距离要初始化为inf2.边的存储要弄清存储的方式,以及各自代表的含义;比如说pair存储,first代表边的指向的点,second代表边的权值,而数组的第一维代表边的起点。3.优先队列存储的信息要清楚它的作用:存储距离:目的是对距离进行排序,每次取出距离最小的节点,功能只是对队列的节点进行排序。存储节点:目的是为了取出最短距离的节点时,能够获得节点的编号。所以在优先队列里面,存储距离加了个负号,因为优先队列优先对pair的第一个元素进行降序排序,所以为了取出最小距

2021-05-15 21:41:04 252

原创 牛客 B-旅行(最短路)(dijkstra算法)

B-旅行思路:要保证必须经过三个旅游景点一个作为起点,一个作为中转点,一个作为终点所以只要枚举中转点就行了,以该中转点为起点进行dijkstra,只要存在最短距离的点数大于等于三,找其中最大的两个距离相加,就是最短距离的最大路径长度。#include<bits/stdc++.h>using namespace std;#define se second#define fi firsttypedef long long ll;typedef pair<int ,int&

2021-05-14 17:03:41 548

原创 floyd算法模板

邻接矩阵#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll inf = 0x3f3f3f3f;const ll N = 1e3+5;int g[N][N];int n,m;void floyd(){ int s = 1;//起点 for(int k=1;k<=n;k++) {//中间节点的循环 for(int i=1;i<=n;i++

2021-05-13 23:19:17 115

原创 c++访问私有成员特例:当对象的引用作为参数时,可以直接打点访问该对象的私有成员

当对象的引用作为参数时,可以直接打点访问该对象的私有成员C++的限定符是限定类的,不是限定对象的,只要是类型相同就能相互访问。两个是同类型的,可以直接访问, 但是需要指定一下是哪个对象。访问权限(如public,private),是相对于类来说的,private访问权限是其它类不能访问,不是这个类的不同对象不能访问。下方代码unionOfSets和intersectionOfSets中的函数方法可以直接访问私有的变量#include<bits/stdc++.h>using names

2021-05-13 19:50:04 571

原创 【SPFA】最短路--模板题

最短路#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll N = 2e4+5;const ll M = 2e5+5;const ll inf = 0x3f3f3f3f;int n,m;ll dis[N],vis[N];struct node{ int to,w; node(int a,int b) { to = a,w = b; }}

2021-05-12 11:02:52 212

原创 Codeforces Round #700 (Div. 2) B(简单思维)

B思路:骑士有一个生命值,先把所有怪兽的伤害值减掉,然后加上所有怪兽的最大攻击值,判断其与0的大小。为什么呢?可能最后一次骑士打死怪兽之后就会死亡,只要加上最大的攻击值就会回到进行最后一次攻击前的状态,如果此时骑士的生命值大于0,就可以打死所有怪兽。注意:数据要开ll,因为乘法会爆int#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef vector<int> vi;t

2021-05-11 22:45:51 99

原创 Bellman-Ford算法

1.邻接矩阵存储#include<bits/stdc++.h>using namespace std;typedef long long ll;const int inf = 0x3f3f3f3f;const int N = 1e3+5;void bellman(){ int s = 1; int d[N]; for(int i=1;i<=n;i++) d[i] = inf; d[s] = 0; for(int k=1;k<=n;

2021-05-10 23:21:39 86

原创 2021第十二届山东省赛 D(模拟) H(01背包) G(模拟)

题意:大概意思就是说一个人有H的生命值,S的体力值,他需要打怪获得奖励金币,打一个怪会损失掉hih_ihi​的生命值和sis_isi​的体力值,当生命值小于等于0时,他就会死掉,但是如果体力值小于零,他的生命值就会减掉相应体力负值的绝对值,问在不死的情况下,获得最大的金币值。思路:经典的01背包问题,其实就是容量变成二维的了,其它的不变,需要从后往前遍历容量,因为是二维滚动数组。状态表示:dp[i][j]dp[i][j]dp[i][j]为iii的生命值和jjj的体力值能够获得的最大金币..

2021-05-10 22:38:02 240

原创 【dijkstra算法】【SPFA】小木乃伊到我家--模板题

#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll N = 305;const ll inf = 0x3f3f3f3f;struct edge{ int from,to,w; edge(int a,int b,int c) { from = a,to = b,w = c; }};vector<edge>e[N];struct

2021-05-09 23:27:31 148

原创 Codeforces Round #719 (Div. 3) A-E

A存下来每个字符出现的次数,如果当前字符与前面的字符不相同时,说明是一个新的开始,如果字符访问过,就为NO#include<bits/stdc++.h>using namespace std;typedef long long ll;void solve(){ int n,vis[200]{}; char s[55]; cin>>n>>s; for(int i=0;i<n;++i) { if(i&&s[i]!=s[i-1]

2021-05-07 17:06:15 83

原创 一些代码中的逻辑习惯

代码逻辑习惯或一些小操作(自己的笔记)1.需要一个数组或者字符串的目前的元素和前一个元素做相关运算时:直接遍历这个序列,当 i 等于0时不满足条件,只有i 等于 1时才会执行if语句for(int i=0;i<len;++i){ if( i && 相关的运算) ...}2.与前一个元素做相关运算我偏向定义一个变量pre代表前一个元素,然后从第二个位置开始遍历感觉这样的代码确实有点多了,而且每次要更新pre的值int pre = num[1];for(int i=

2021-05-07 16:40:31 1253

原创 滑动窗口问题

#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e6+5;int q[N],a[N],p[N];int main(){ int n,k; cin>>n>>k; //求窗口的最小值 int h = 1,t = 0; for(int i=1;i<=n;++i) cin>>a[i]; fo

2021-05-04 20:43:22 98

原创 最长连续不重复子序列(双指针算法)

样例:51 2 3 4 2输出:4#include<bits/stdc++.h>using namespace std;const int N = 1e5+5;int n;int vis[N],a[N];int main(){ cin>>n; int ans = 0; for(int i=1,j=1;i<=n;i++) { cin>>a[i]; vis[a[i]] ++; while(vis[a[i]] > 1).

2021-05-04 18:22:04 218

原创 位运算的性质和公式大全

位运算的性质和公式大全一、位运算公式总结二、运算符的性质1.^运算符2.|运算符3.&运算符4.组合性质一、位运算公式总结位运算符解释lowbit(i) 即i&-i返回i的最后一位1n>>k & 1求n的第k位数字x | (1 << k)将x第k位 置为1x ^ (1 << k)将x第k位取反x & (x - 1)将x最右边的1置为0(去掉最右边的1)x | (x + 1)将

2021-05-03 21:45:25 3528 6

原创 整数二分+浮点二分

整数二分版本一:右边是check返回为正的区间,最终的结果为右边区间的最左端的值。while(l<r){ int mid = (l+r)>>1; if(check(mid)) r = mid; else l = mid + 1;}版本二:左边是check返回为正的区间,最终的结果为左边区间的最右端的值。while(l<r){ int mid = (l+r+1)>>1; if(a[mid]<=num) l = mi

2021-05-03 20:20:45 366

河南省第十三届大学生程序设计竞赛题目.zip

河南省第十三届icpc大学生程序设计竞赛题目

2021-05-27

C++语言第15章 .ppt

c++面向对象课件

2021-05-27

超强气泡特效bubble.html

鼠标点一下会出现很多气泡,很好的气泡特效。

2021-05-13

acm算法模版_ZLH.pdf

模板

2021-05-11

c++上机实验实验五.doc答案(实现大数相加)

c++上机实验实验五.doc答案(实现大数相加)

2021-04-29

大学生c++上机实验实验三.docx答案

大学生c++上机实验实验三.docx答案

2021-04-29

code_rain.py

python实现黑客帝国代码雨

2021-04-29

大学生c++上机实验实验二.docx答案

c++实验二答案

2021-04-29

大学生c++上机实验实验一.docx答案

大学生c++上机实验答案

2021-04-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除