自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ILECY~NEW

没有人可以回到过去重新开始,但谁都可以从现在开始,书写一个全然不同的结局。

  • 博客(68)
  • 资源 (4)
  • 收藏
  • 关注

原创 练习41,[SCOI2010] 序列操作【线段树】

稍微难一些的就是求[l,r] 区间内最多有多少个连续的 1,可以分别维护一段区间左端,中间,右端有多少个连续的1和0来实现。同时要注意的点是赋0和赋1标记可以覆盖取反标记,而取反标记不能覆盖赋0和赋1标记,而且取反标记更改时要^=1。此题还有一种解法是珂朵莉树,但只能过随机的数据,无法通过洛谷上已经针对过的数据。思路不是很难,码量很大,调试难度高,一个bug找一天(bushi。

2022-09-19 12:59:42 195 1

原创 练习40,小蓝的旅行【最短路】

根据题意,我们知道只能从未做核酸的城市到做核酸的城市或者从做核酸的城市到未做核酸的城市,所以我们可以将每个点分别当成未做核酸的和做了核酸的,然后分别建边求最短路。

2022-07-26 16:06:02 307 1

原创 练习39,P1119 灾后重建【Floyd算法/二分】

因为每个村庄重建完成的时间和每次询问的时间都是不下降的,所以按照每次询问的时间更新Floyd就行。

2022-07-22 13:08:21 175

原创 练习38,最小生成树MST【Prim算法+堆优化】

练习38,最小生成树MST【Prim算法+堆优化】

2022-07-21 13:10:08 158

原创 练习37,最小生成树MST【Kruskal算法】

代码】练习37,最小生成树MST【Kruskal算法】

2022-07-21 13:02:28 136

原创 练习36,最短路问题【Dijkstra算法/链式前向星】

题目:洛谷P1339 [USACO09OCT]Heat Wave G有一个 nnn 个点 mmm 条边的无向图,请求出从 sss 到 ttt 的最短路长度。第一行四个正整数 n,m,s,tn,m,s,tn,m,s,t。接下来 mmm 行,每行三个正整数 u,v,wu,v,wu,v,w,表示一条连接 u,vu,vu,v,长为 www 的边。输出一行一个整数,表示答案。样例输出提示【数据范围】对于 100%100\%100% 的数据,1≤n≤25001\le n \le 25001≤n≤2500,1

2022-07-13 14:28:50 128

原创 Codeforces Round #797 (Div. 3) A~E题解记录

A - Print a Pedestal (Codeforces logo?)简单找个规律然后按照%3分类讨论就可以了B - Array Decrements算出ai-bi的值,然后判断一遍,WA:存在ai(ai>0)的值不变且其他ai变为0的情况C - Restoring the Duration of Tasks直接判断任务开始时间和上一个任务结束时间的关系就行D - Black and White Stripe算前缀和来找一段固定长度区间的最大值E - Price Maximi

2022-06-08 15:29:12 183

原创 求逆元【c++】

适用于单个查找和大数快速幂求逆元利用费马小定理:若p为素数,a为正整数,且a、p互质,则有 ≡(mod p)所以此方法只适用于a、p互质的情况递推求逆元用于求一连串数字对于一个mod p的逆元...

2022-06-05 19:46:56 1140

原创 练习35,进制转换思想的一道题【构造】

D-操作题_牛客小白月赛51 (nowcoder.com)题目描述你有两个数a和b,其中a等于0,b等于1,你有2种操作:操作一:你可以选择a的值加上b或b的值加上a。操作二:你可以选择a或b乘以数字x。请你输出一个操作次数不超过400次的操作序列,使得a或b中有一个值等于n。其中x和n的值为给定的。输入格式第一行输入一个整数 1≤T≤200,代表有T组样例。随后T行输入两个整数n,x,分别代表0≤n≤1e9 2≤x≤10。输出格式对于每一组样例首先输出一行kkk,代表你操作的总次数,k≤400k\leq

2022-06-03 23:20:26 78

原创 练习34,求最长回文子串【manacher算法】

P3805 【模板】manacher 算法 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题目很简单:给出一个只由小写英文字符 a~z 组成的字符串 S ,求 S 中最长回文串的长度 。字符串长度为 n(1≤n≤1.1e7)不过考虑到n很大,所以靠暴力求肯定超时,所以要用到马拉车算法(manacher算法) 如图,mid是i~r的回文中心,因此以t为回文中心的字符串=以t的对称点为回文中心的字符串,所以p[t]可以等于p[2*mid-t]。但是由于超过r的部分(即右红边部分)不能保证等于左

2022-06-01 16:23:01 101

原创 练习33,三元上升子序列【线段树/离散化】

逆序对升级版,在某次校赛遇到过,P1637 三元上升子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)思路:三元上升子序列的个数=(每个数前比它小的数的个数*每个数后比它大的数的个数) 之和,所以就正求一遍顺序对,反求一遍逆序对就行#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3f#define NOTLE ios::sync_with_stdio(0),cin.tie(0)

2022-05-30 21:39:53 130

原创 练习32,逆序对【线段树/离散化】

P1908 逆序对 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)思路:维护一个线段树,按序列顺序,查找完ai就将它加入线段树,这样每次查找在线段树中比ai大的数就符合逆序对的要求。但序列中的数字最大有1e9,不能直接用线段树存,所以想先用离散化思想,用相对大小关系表示绝对大小,比如在题目中:1、2、3与1、2、99性质是一样的#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3f#

2022-05-26 20:45:29 79

原创 练习31,最大食物链计数【拓扑排序/动态规划DP】

P4017 最大食物链计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)仍然是一道DAG上拓扑排序的练习#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3f#define NOTLE ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)#define endl '\n'#define T int TT;cin >> TT;whi

2022-05-19 21:08:22 112

原创 练习30,图论 P1113 杂务【拓扑排序/邻接表】

P1113 杂务 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)思路:一开始只是将所有入度为0的点加入队列,并且 dp[i]=len[i] (表示没有前驱杂务的杂务完成时间就等于它的耗时),然后遍历这些杂务的出边并且将出边对应的点入度-1。如果有点的入度减至0则代表它所有的前驱杂务完成时间已经计算好,此时该点的完成时间等于前驱杂物完成时间的最大值+当前杂物的耗时,即 dp[i]=max(dp[prei])+len[i] ,如此循环直到遍历完所有点,所以结果就是所有杂务完成时间的最大值

2022-05-17 20:50:47 194

原创 练习29,统计子矩阵【二维前缀和/双指针】

4405. 统计子矩阵 - AcWing题库给定一个 N×M 的矩阵 A,请你统计有多少个子矩阵 (最小 1×1,最大 N×M) 满足子矩阵中所有数的和不超过给定的整数 K?输入格式第一行包含三个整数 N,M 和 K。之后 N 行每行包含 M 个整数,代表矩阵 A。输出格式一个整数代表答案。数据范围对于 30% 的数据,N,M≤20,对于 70% 的数据,N,M≤100,对于 100% 的数据,1≤N,M≤500;0≤Aij≤1000;1≤K≤250000000。输入样例:

2022-05-12 15:57:11 346 2

原创 练习28,日志统计【双指针】

1238. 日志统计 - AcWing题库小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有 N行。其中每一行的格式是: ts id表示在 ts 时刻编号 id 的帖子收到一个”赞”。现在小明想统计有哪些帖子曾经是”热帖”。如果一个帖子曾在任意一个长度为 D 的时间段内收到不少于 K 个赞,小明就认为这个帖子曾是”热帖”。具体来说,如果存在某个时刻 T 满足该帖在 [T,T+D) 这段时间内(注意是左闭右开区间)收到不少于 K 个赞,该帖就曾是”热帖”。...

2022-05-11 21:21:57 69

原创 练习27, 字典树 于是他错误的点名开始了【字典树/map】

P2580 于是他错误的点名开始了 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)字典树写法:#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3f#define lint long longint n,m;struct Trie{ int ch[500010][26],cnt,val[500010]; //val为附加信息 //ch数组,第二维的大小为26是因

2022-05-08 23:58:50 181

原创 练习26,NOIP2002产生数【DFS/高精度】

P1037 [NOIP2002 普及组] 产生数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3f#define lint long long#define pb push_backlint k,x[20],y[20],len,ans[10010],jw[10010];int m[20]={0};string s;void dfs

2022-05-05 20:26:40 152

原创 练习25,排队打水问题【贪心】

排队打水问题 - 问题 - USCOJ (欢迎加入ACM队!点这里了解详情~)有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2………..tn为整数且各不相等,应如何安排他们的打水顺序才能使他们的等待时间和最少?输入格式第一行n,r (n<=500,r<=75)第二行为n个人打水所用的时间Ti (Ti<=100);输出格式最少的花费时间样例输入3 21 2 3样例输出7题解用nt存n个人打水所用的时间,用rt存r个水龙头排队所需时间

2022-05-02 15:20:13 843

原创 练习24,拦截导弹 最长上升子序列【动态规划LIS】

拦截导弹 - 问题 - USCOJ (欢迎加入ACM队!点这里了解详情~)某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。  输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

2022-04-25 15:27:29 97

原创 练习23,飞行员兄弟【二进制枚举/位运算】

116. 飞行员兄弟 - AcWing题库“飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱。已知每个把手可以处于以下两种状态之一:打开或关闭。只有当所有把手都打开时,冰箱才会打开。把手可以表示为一个 4×4 的矩阵,您可以改变任何一个位置 [i,j] 上把手的状态。但是,这也会使得第 i 行和第 j 列上的所有把手的状态也随着改变。请你求出打开冰箱所需的切换把手的次数最小值是多少。输入格式输入一共包含四行,每行包含四个把手的初始状态。符号 + 表示把手

2022-04-20 20:41:19 76

原创 练习22,密码锁【广搜BFS】

密码锁 - 问题 - USCOJ (大家加油哦!)#include<bits/stdc++.h>using namespace std;#define pb push_backstring s;int ans=-1,len;struct node{ string a; int step; node(string na,int ns){ a=na; step=ns; }};deque<node> v;map<s

2022-04-13 21:44:37 319

原创 练习21,砝码称重【动态规划DP】

砝码称重3417. 砝码称重 - AcWing题库你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W1,W2,⋅⋅⋅,WN。请你计算一共可以称出多少种不同的正整数重量?注意砝码可以放在天平两边。输入格式输入的第一行包含一个整数 N。第二行包含 N 个整数:W1,W2,W3,⋅⋅⋅,WN。输出格式输出一个整数代表答案。数据范围对于 50% 的评测用例,1≤N≤15。对于所有评测用例,1≤N≤100,N 个砝码总重不超过 1e5题解d[i][j]表示前i个砝

2022-04-02 13:23:45 1052

原创 埃氏筛和欧拉筛(线性筛)

埃氏筛bool b[2000010];long long n;cin >> n;b[1]=1;for(int i=2;i*i<=n;i++) if(b[i]==0) for(int j=i*i;j<=n;j+=i) b[j]=1;欧拉筛(线性筛)long long n,prime[5800001],ans;bool b[100000010];cin >> n;for(int i=2; i<=n; ++i){ if(

2022-03-31 20:03:07 245

原创 二分法模板【C++】

向左寻找目标while(l<r){ //向左寻找目标 int mid=(l+r)/2; if(check(mid)) r=mid; else l=mid+1;}向右寻找目标while(l<r){ //向右寻找目标 int mid=(l+r+1)/2; if(check(mid)) l=mid; else r=mid-1;}浮点二分while(r-l>1e-5){ //确保精度,题目要求保留小数点位数+2

2022-03-31 19:09:30 1433

原创 练习20,RMQ问题 数列区间最大值【线段树】

数列区间最大值输入一串数字,给你 M 个询问,每次询问就给你两个数字 X,Y,要求你说出 X 到 Y 这段区间内的最大数。输入格式第一行两个整数 N,M 表示数字的个数和要询问的次数;接下来一行为 N 个数;接下来 M 行,每行都有两个整数 X,Y。输出格式输出共 M 行,每行输出一个数。数据范围1≤N≤1e5,1≤M≤1e6,1≤X≤Y≤N,数列中的数字均不超过2^31−1输入样例:10 23 2 4 5 6 8 1 2 9 71 43 8输出样例:58

2022-03-28 20:21:03 505

原创 动态规划 01背包与完全背包问题【C++】

01背包问题递归做法#include<bits/stdc++.h>using namespace std;int N,V;int v[1010],w[1010],d[1010][1010];int dp(int i,int j){ if(d[i][j]) return d[i][j]; if(i>N) return 0; if(j-v[i]>=0) d[i][j]=max(dp(i+1,j-v[i])+w[i],dp(i+1,j));..

2022-03-27 20:08:38 1708

原创 练习19,线段和点【贪心】

线段和点 - 问题 - USCOJ(PvP)#include<bits/stdc++.h>using namespace std;#define lint long longint m,n;int p[10010];struct line{ int l,r; bool operator<(line &aa){ //定义运算,排序将区间大的优先 if(l!=aa.l) return l<aa.l; else return r>aa

2022-03-23 20:14:46 668

原创 练习18,选取数对【动态规划DP/前缀和】

4378. 选取数对 - AcWing题库他人方法,个人理解#include<bits/stdc++.h>using namespace std;#define lint long longint n,m,k;lint a[5010],d[5010][5010],sum[5010]={0};int main(){ cin >> n >> m >> k; for(int i=1;i<=n;i++){ c

2022-03-21 20:36:37 740

原创 练习17,小y拼楼梯【动态规划DP/贪心】

题源:E-⼩y拼楼梯 - 问题 - USCOJ(PvP)题目描述⾃从⼩y上次学会计算有多少种爬楼梯的⽅式后,又枯燥了起来。现在她⾃⼰拼接⾃⼰想要的楼梯,于是她就开始⾃⼰脑补拼接楼梯了。她在想,⾃⼰拥有⽆限个分别为 a1,a2,a3……ak 阶的⼩楼梯,她想拼出⼀个 N阶的楼梯最少需要多少块?例如⼩y现在有分别为 1,2,4 阶的⼩楼梯,想要拼出 10阶的楼梯⾄少需要 3块⼩楼梯,分别是 4 阶的⼩楼梯使⽤ 2块,2 阶的⼩楼梯使⽤ 1块,即 4+4+2=10但是⼩y现在想破了脑袋也...

2022-03-14 22:09:33 509

原创 练习16,并查集模板&NOI2001食物链【并查集】

并查集一般模板:void init(){ //初始化 for(int i=1;i<=n;i++) fa[i]=i;}int find(int x){ //寻找根节点 if(fa[x]!=x) fa[x]=find(fa[x]); return fa[x];}并查集模板题:P3367 【模板】并查集 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)#include<bits/stdc++.h>using namespace st

2022-03-13 20:57:26 470

原创 练习15,二分查找模板题数的范围【二分查找】

数的范围789. 数的范围 - AcWing题库给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。如果数组中不存在该元素,则返回 -1 。输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。接下来 q 行,每行包含一个整数 k,表示一个询问元素。输出格式共 q 行,每行包含两个整数,表示所求元素的起始位.

2022-03-09 20:22:44 55

原创 用行列式展开计算n阶行列式【c++/递归】

定理:n阶行列式等于它的任一行(列)的元素与其对应的代数余子式的乘积之和#include<bits/stdc++.h>using namespace std;#define lint long longint a[100][100],n;int solve(int m,int x,int y,int d[][100]){ int ad[100][100],f=0,ans=0; for(int i=1;i<=m+1;i++){ //求余子式

2022-03-09 19:43:24 312

原创 练习14,离散化思想火烧赤壁【二分查找+离散化】

P1496 火烧赤壁 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)#include<bits/stdc++.h>using namespace std;#define lint long longlint n,ans=0,add=0;lint c[40100]={0}; //数组c离散化储存原来的坐标int a[20100],b[20100],flag[40100]={0};int find(int num){ //二分查找 int l=1,r=a

2022-02-14 17:24:18 287

原创 练习13,USACO 打乱字母【二分法】

1996. 打乱字母 - AcWing题库#include<bits/stdc++.h>using namespace std;int n;string name[50010],a[50010],b[50010];int cmp(char sa,char sb){ return sa>sb;}int main(){ cin >> n; for(int i=1;i<=n;i++){ cin >> name

2022-02-14 11:11:20 281

原创 练习12,USACO Tractor S 拖拉机【双端队列BFS】

[USACO12MAR]Tractor SP1849 [USACO12MAR]Tractor S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)转换为最短路问题,有稻草的权值为1,没有的为0,向没有稻草的点移动放在队列顶端,向有稻草的点移动放队列末端,这样队列中前面一部分和后面一部分差值最大为1#include<bits/stdc++.h>using namespace std;#define lint long long#define pb push_ba

2022-02-05 02:18:29 591

原创 练习11,马的遍历【广搜BFS】

题目链接:P1443 马的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)#include<bits/stdc++.h>using namespace std;#define lint long longint n,m,ans[410][410]={0},d[410][410]={0};const int xx[8]={-1,-2,-2,-1,1,2,2,1};const int yy[8]={-2,-1,1,2,2,1,-1,-2};vector<

2022-01-16 18:58:07 391

原创 练习10,AcWing 2041. 干草堆【数学/差分】

差分:将数列中的每一项与前一项做差来得到一个新的数列(差分数列最后比原数列多一个数,因为最后一项是0减去原数列的最后一项)在原数列a中对区间[l,r]中的每一个数都加上x,相当于对差分数列b中 b[l]+=x , b[r+1]-=xeg: 数列a为 1 2 3 4 5 6那么a的差分数列b为 1 1 1 1 1 1 -6所以我们可以得出由差分数列求原数列的公式:a[n]=b[n]+a[n-1]由于 b[1]=a[1] 所以 a[2]=b...

2022-01-12 16:26:35 188

原创 练习9,DFS练习八皇后【深搜DFS】

dfs思路的八皇后#include<bits/stdc++.h>using namespace std;#define lint long longint l[110]={0},lx[110]={0},rx[110]={0},lj[110]={0};int n,ans=0;void dfs(int h){ if(h==n+1) { /* if(ans<3){ for(int i=1;i<=n;i++) c

2021-12-10 22:26:12 255

原创 练习8,半递增序列【数学】

半递增序列 - 问题 - USCOJ(新生赛筹备中~)蓝桥杯模拟题初见此题,第一个想法便是深搜,然后写出代码后发现只能计算很小的数字,大了就超时,对于题目中n<=1000无法满足#include<bits/stdc++.h>using namespace std;#define lint long longint n,c=0,ans=0;int a[1010]={0};void dfs(int j,int on,int en){ if(j==n) ans++

2021-11-30 23:37:48 519

Teleport Ultra pro 网页资源下载器

虽然它只有不到2MB大小可它的功能十分强大,它可以把原本网站上不能下载的东西下载。什么视频啊、压缩文件啊、图片啊、资源啊都可以。值得你拥有,10分真不贵

2016-02-04

DOS命令大全

DOS命令大全,包含一百多个DOS命令及功能解释。值得你拥有!

2016-02-03

USACO全部的测试数据

USACO全部的测试数据,历年比赛加USACO网站测试数据 只要1积分

2016-02-03

CV program C语言&VBS程序集合

C语言,VBS的程序集合,里面有许多小程序、小技巧。值得你拥有

2016-02-02

空空如也

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

TA关注的人

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