自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 P7073 [CSP-J2020] 表达式&2006:【20CSPJ普及组】表达式

一本通传送门洛谷传送门感谢 OMG_wc大佬的宝贵思路题干解析看完题,可分析出以下几点:1 本题是20年CSP-J 最难的题2 读入是后缀表达式,用栈存储3 计算过程要用位运算大体思路首先,读入,用栈存储其次,求出初始(修改前)结果,并判断各数是否能影响到最终结果 。此处有详细解释最后,判断就好了。附录位运算顺序不影响结果!!!!!a^=1 是取反运算代码#include<bits/stdc++.h>using namespace std.

2021-08-11 14:06:27 932 1

原创 1547:【 例 1】区间和

一本通题干标准模板题,看蓝书,用线段树。代码#include<bits/stdc++.h>using namespace std;int n,m;long long dis[40000001];int a,b,k;void add(int k,int l,int r,int x,int y){ if(r<x||l>x) return; if(l==r&&l==x){ dis[k]+=y; return; } int mi..

2021-07-28 13:49:10 233

原创 1540:打鼹鼠_二维树状数组 (数据加强版也能过)

这道题我曾找过许多博客,没有能AC的,故特作此文。题干传送门先谈谈做本题的心路历程:第一眼见:哇!二维的树状数组,虽然没见过,但是貌似不难此时代码#include<bits/stdc++.h>using namespace std;int n,m,dis[5001][5001],a,b,c,d,t,k;int lowbit(int x){ return x&(-x);}void add(int x,int y,int z){ while(x<=n){ .

2021-07-22 11:30:50 633 1

原创 1539:简单题

题干这道题也是模板题,用树状数组记录数位被反转的次数,然后看是否能被2整除即可代码#include<bits/stdc++.h>using namespace std;int n,m,t,l,r,k,c1[5000001],c2[5000001];int lowbit(int x){ return x&(-x);}void add1(int x){ while(x<=n){ c1[x]++; x+=lowbit(x); } return;}v.

2021-07-22 10:52:20 221

原创 1538:清点人数

毫无新意的模板题代码#include<bits/stdc++.h>using namespace std;int n,k,m,p,c[5000001];char ch;int lowbit(int x){ return x&(-x);}void add(int x,int y){ while(x<=n){ c[x]+=y; x+=lowbit(x); } return;}int sum(int x){ int ans=0; while(x.

2021-07-22 10:40:21 491

原创 1537:【例 3】校门外的树

一本通题干与模板题不同,这道题是给出种树区间,所以,要按照种树的区间左与区间右各建一个树状数组,再求和。代码#include<bits/stdc++.h>using namespace std;int n,m,k,l,r,c2[1000001],c1[1000001];int lowbit(int x){ return x&(-x);}void add1(int x){ while(x<=n){ c1[x]++; x+=lowbit(x); } .

2021-07-11 16:06:25 865

原创 1536:【例 2】数星星 Stars

传送门这题,依旧没难度 然而并没有一次AC ,十分明显的树状数组注意:1.题目所给数据已排好序 所以说很水2.题目有一个点到了数据极限 (详见代码)代码#include<bits/stdc++.h>using namespace std;int n,a[1000001][3],dis[1000001],c[1000001];int lowbit(int x){ return x&(-x);}void add(int x,int y){ while(x<.

2021-07-09 19:20:28 437

原创 1535:【例 1】数列操作

一本通传送门模板啊,看蓝书好了。代码#include<bits/stdc++.h>using namespace std;int n,m,k,a,b,c[100001];int lowbit(int x){ return x&(-x);}void add(int x,int y){ while(x<=n){ c[x]+=y; x+=lowbit(x); } return;}int sum(int t){ int ans=0; while(.

2021-07-09 19:12:42 139

原创 图论专版

省选临近,本蒟蒻 太菜没得选 ,精心选取了十分重要的图论来复习注: 下文中n均为点数,m均为边长1 最短路径问题Floyed枚举断点起点终点(顺序很重要),本质上是DP,处理多源最短路时间复杂度 O(n3) ,太大了,一般不用for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(i!=j&&j!=k&&i!=k) dis[i.

2021-04-07 22:49:23 113

原创 1469:似乎在梦中见过的样子

一本通传送门题干解析没事闲的,找到了本题背景 神秘幽蓝的传送门,本题背景 太好看啦 没啥用,总结出来就是在一个字符串中找前后长>=k的字符串,中间还要有空。具体思路寻找前后缀是极其明显的KMP,我们《只需》在正常KMP的基础上,将每次需寻找前后缀的字符串,并且枚举起始与终点出来,再用KMP找。(配合代码食用效果更佳)代码// jqsh 2021.4.6 22:43#include<bits/stdc++.h>using namespace std;int n.

2021-04-06 22:44:09 814

原创 P2512 [HAOI2008]糖果传递 & 1432:糖果传递

一本通传送门洛谷传送门洛谷大神们的题解本蒟蒻就不献丑了代码#include<bits/stdc++.h>using namespace std;long long n,m,a[1000001],s[1000001],mid,sum,ans;inline long long read(){ long long k=0,k1=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-') k1=-1; ch=getcha.

2021-04-06 20:16:49 156

原创 1431:钓鱼

毫无新意的一本通传送门题干解析这题… 与这题 传送门 有区别否?懒 题干明白,就不说啥了。具体思路本题可采取贪心,动规,贪心+堆优化的方法,这里只讲贪心

2021-04-06 20:05:35 211

原创 1430:家庭作业

一本通传送门就是 这题代码#include<bits/stdc++.h>using namespace std;long long n,m,hash[10000001],s;struct Node{ long long t,w;}a[10000001];bool cmp(Node o,Node p){ if(o.w<=p.w) return false; return true;}inline int read(){ int k=0; char ch=ge.

2021-04-05 22:24:39 243

原创 1429:线段

一本通传送门-本题与ta极像。代码#include<bits/stdc++.h>using namespace std;int n,m,ans;struct Node{ int a,b;}s[10000001];bool cmp(Node o,Node p){ if(o.b>=p.b) return false; return true;}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ .

2021-04-05 22:10:12 204

原创 P1181 数列分段Section I & 1428:数列分段

洛谷传送门一本通传送门题干解析我好懒 本题题干过于明显,又非阅读理解,请各位dalao自行体会。具体思路我******,好水,这是蓝书水准?白书入门题好不好。代码#include<bits/stdc++.h>using namespace std;int ans,sum,n,m,a[100001];int main(){ scanf("%d %d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d",.

2021-04-05 21:58:35 138

原创 试一试

第一次写博客该说点什么好呢?大家好,我叫算了算了,好傻的样子。有点不会用呀emmmm…算了

2021-04-05 21:49:13 45

原创 1427:数列极差

一本通题干题干解析小学生水准 敲了半天 ,正常理解即可具体思路小学学过,两个数相差越大,它们的乘积越小,反之亦然。按这个思路,只需每次找出最大两个数,最小两个数,分开乘就行。(应分别处理,详见代码)代码#include<bits/stdc++.h>using namespace std;int n,t,a[1000001],sum1,sum2,b[1000001];int main(){ scanf("%d",&n); for(int i=1;i<.

2021-04-05 21:47:44 352

原创 P1230 智力大冲浪 & 1426:【例题5】智力大冲浪

洛谷传送门一本通传送门注:下文中任务均为小游戏。题干解析看题,由 看标签 《人类智慧》可得(在洛谷愚人节月赛上学废了),可知这题该用贪心,而题面又与活动安排极为类似,所以此题为正常贪心。具体思路以 wi 为关键字,进行排序,然后按由大到小的顺序遍历,在每次所能完成的时间段里,找最后的时间点完成该任务。思路证明本题中任务可分三种情况:1 完成该任务不挤占其他任务这没啥好说的…2完成该任务挤占了其他任务因为这题完成任务的价值是倒序(由大到小的),所以被挤占的任务价值.

2021-04-05 21:39:37 1097 4

原创 1425:【例题4】加工生产调度

一本通传送门洛谷传送门题干解析题干… 没啥好说的解题思路首先读入,然后排序,计算总时间,输出什么?怎么排序?玄学就好了 就是… 点这里补一点别人没有的:一本通上的不能快排,要用有稳定性的排序方法洛谷解法#include<bits/stdc++.h>using namespace std;int n,m,sum1,sum2,x[10001],y[10001],t;struct Node{ int a,b,c,k,s;}s[10001];bool cmp(.

2021-02-19 20:07:31 296

原创 1573:分离与合体

题干题干解析很明显的 区间dp,刷过板子题的dalao们肯定可以看出来。所以dp部分就是板子题。思路详解这题dp就是按题目说的去做就好。(还能再明显吗)3 2 1 开大!!!dis[i][j]=max(dis[i][k]+dis[k+1][j]+(a[j]+a[i])∗a[k]);dis[i][j]=max(dis[i][k]+dis[k+1][j]+(a[j]+a[i])*a[k]);dis[i][j]=max(dis[i][k]+dis[k+1][j]+(a[j]+a[.

2021-02-04 07:34:26 304

原创 1572:括号配对

部分思路来源,感谢:大佬博客题目:传送门题干解析这题非常明显是区间dp,模板套一下就行。具体思路与大佬不同: 倒叙枚举iii,正序枚举jjj,再正序枚举kkk。(详见代码)代码#include<bits/stdc++.h>using namespace std;int n,m,f[1001][1001];string s;int main(){ cin>>s; n=s.size(); for(int i=n;i>=0;i--){ fo.

2021-02-02 20:22:52 687

原创 1569:【 例 1】石子合并 & P1880 [NOI1995] 石子合并

洛谷一本通注:此题一本通测点更为严谨。题干分析此题与这题差不多,就是多了化环为链的过程(其实就是*2)思路这题博客食用效果更佳 明明是偷懒 ,具体区别详见代码,而最大最小一个max一个min。代码#include<bits/stdc++.h>using namespace std;int n,m,a[1001],f[1001][1001],dis[1001][1001];int main(){ scanf("%d",&n); memset(f,127.

2021-02-01 13:48:18 648 1

原创 1444:埃及分数

题干闲话 (无兴趣可空降)这题折磨了我好久,为了调试,打了800多个字符(要知道我的正解才700多个字符),很短的代码,是我的心血。在漫漫OI路上,我总是被一些小错误,卡住一周甚至更多 也许是实力问题? ,但也在其中收获很多。最后,也要感谢我的老师,为我引路。ps.调试前后代码对比调试中:#include<bits/stdc++.h>using namespace std;int n,m,a,b,s,ans[10001],sum[10001],d=0;inline int.

2021-01-17 08:26:21 566

原创 1443:【例题4】Addition Chains

必不可少的题干 然而并没有什么鸟用题干解析没啥,暴搜,思路详见代码剪枝ps.不懂请留言 然而并不一定能及时被看见剪枝1:迭代搜索,层数超了就返回。剪枝2:上限判断,如若剩余数的最大值加一起也小于n,返回。剪枝3:搜索顺序,从大到小枚举。剪枝4:如果当前值已经大于n,返回。剪枝5~N:很多在循环条件中的小剪枝。#include<bits/stdc++.h>using namespace std;int n,m,a[100001],u[100001],s[1000.

2021-01-16 22:31:22 567 1

原创 P1120 小木棍 [数据加强版] & 1442:【例题3】小木棍

没什么用的题干题目分析要自动滤掉大于50的长度… 心中******** 已开启自动过滤剩下的,纯暴搜: 就是枚举原始木棍长度,然后试着拼疯狂剪枝剪枝1:排序,剪枝的根本(正序倒序无所谓,别人都是倒序,就我是正序)+计算木棍长度总和剪枝2:由于原始木棍一定大于等于当前最大的木棍,所以从当前最大的木棍开始枚举原始木棍长度。枚举到木棍长度总和。(还可以有一个小优化,见代码)剪枝3:如果搜到答案直接退出 这不是废话吗剪枝4:感谢排序,如果当前长度的木棍不能搜到答案,那么后面等长的木棍也不行.

2021-01-16 20:59:03 413

原创 1441:【例题2】生日蛋糕&P1731 [NOI1999] 生日蛋糕

ps.做的年代有些久,有半周了。圆柱暴力枚举即可,顺序在这题中也没甚用(这里说的是圆柱从上往下的顺序,而下文是指枚举圆柱长宽高的顺序)。唯一(二?)重要的记得预判剩余体积是否够用并且要倒序枚举。#include<bits/stdc++.h> using namespace std; int n,m,s,k,v[101],r[101],h[101]; inline void jqsh(int t,int l,int k,int z){ if(k>=s) return;.

2021-01-12 17:28:33 364

原创 1440:【例题1】数的划分

并没用什么鸟用的题干这题很水,就不注解了。#include<bits/stdc++.h>using namespace std;int n,k,ans;inline void jqsh(int f,int x,int y){ if(y>x||f>(x/y)) return; if(y==1){ ans++; return; } for(int i=f;i<x;i++){ jqsh(i,x-i,y-1); } return;}int ma.

2021-01-12 17:18:51 238

原创 1987:【20CSPS提高组】括号树&P5658 [CSP-S2019] 括号树

题干题目分析emmm…NOIP2020 考完后在写要用栈代码#include<bits/stdc++.h>using namespace std;int n,f[500001],sum1,sum2,l[500001];long long ans,sum[500001],dis[500001];char a[500001];vector<int>s[500001];inline int read(){ int k=0,k1=1; char ch=ge.

2020-11-30 19:48:03 685

原创 CSP-J/S 2020游记

人在江湖飘~ 啊~ ,哪能不挨刀~ 呀~今年被现实狠狠地暴揍了一顿,普及——飘啊——要AK——考挂了,int提交前脑残改long long导致T2爆零,T3两个小时没搞出来,爆零。T4想出正解,没时间了,爆零。提高——哎,——飘啊——要一等——75~,T1模拟挂了,T4好一点骗40,一共骗来75。总结:全线大崩溃。会的挂了,不会的反倒骗到点。...

2020-11-20 21:03:18 237

原创 1985:【19CSPJ普及组】加工零件

那年普及组考的挺好,不像2020,哎,说多了都是泪题干:散发着幽幽蓝光的传送门题干分析这道题看上去很难 确实很难 ,但是有一点很重要,就是相邻两个工人可以不停要求对方提供零件,直到原材料,两个工人,可以理解为不停减2,奇偶性不变。然后就要考虑用各种方法求最短路了具体思路...

2020-11-20 16:20:18 930

原创 1299:糖果

简单的动规在正常的操作上加一个取模就好了代码#include<bits/stdc++.h>using namespace std;int n,k,a[1001],f[1001][1001];int main(){ scanf("%d %d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<k;i++) f[0][i]=-21474836; for(int i=.

2020-11-20 15:49:51 402

原创 CSP-J 2020方格取数

今年CSP-J考挂了,int提交前脑残改long long导致T2爆零,T3两个小时没搞出来,爆零。T4想出正解,没时间了,爆零。今年CSP-J考的痛苦极了~~~好了,话不多说 明明说了很多题干:蓝色的传送门题干分析这明显是dp,最正常不过的dp上下右三个设置决定了要开三维数组(顶礼膜拜用二维(或更少)的大神们)注意:方向向右不能向左,所以dp时要按列dp!!!,因为每一个格都只能走一次,所以要向上后不能向下,向下后不能向上。具体思路从右上向左下,先按列后按排dp(具体见代码).

2020-11-20 15:44:11 1135 5

转载 每次用新电脑时都有,烦死啦!!!

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-11-20 15:25:41 73

原创 同余方程

题干在此题干分析 & 思路讲解ax=1(mod b),分析这个式子,可得ax+by=1(不懂看蓝书),然后用扩展欧几里得算法 可求方程的特解x0,然后再求通解x:x=(x0+b)%b x=(x _0+b)%bx=(x0​+b)%bb就是题目中的b,将x+b后%b可以保证x为正整数,并且小于零ps. 蓝书的标程比这个复杂多了(小小的得意一下)程序在此// 2020.10.17 jqsh 好难... #include<bits/stdc++.h>usin.

2020-10-23 15:55:35 225 1

原创 扩展欧几里得算法

蓝书的,主要是因为写同余方程学的定理: 设a和b不全为0,则存在整数x和y,使得 ax+by=gcd(a,b) ax+by=gcd( a,b) ax+by=gcd(a,b)证明 -开始装大神-用欧几里得算法也就是辗转相除法时当在最后一步,即b=0时gcd(a,b)=a gcd(a,b)=agcd(a,b)=a所以1∗a+0∗0=a1*a+0*0=a1∗a+0∗0=a当递归回去时bx’+(a%b)y’=gcd(b,a%b)=gcd(a,b)因为a%b=a-a/b*b..

2020-10-17 19:53:34 136

原创 1850:【07NOIP提高组】树网的核

传送门题干分析这是一道图论的题(没学过?别怕),分析可知 分析了两个小时 我们要求在找到小于s长的线段,并且满足到该线段最远的点最小。具体思路用二维数组存下点与点之间的联系,然后用 floyed 求出每两点之间的最短长度(没学过?啃书去),随后我们只需枚举线段,找到最小值即可。点与线段间距离公式:(f[k][i]+f[k][j]−f[i][j])/2 (f[k][i]+f[k][j]-f[i][j])/2(f[k][i]+f[k][j]−f[i][j])/2ps. f 数.

2020-10-03 13:55:46 176

原创 NOIP全国联赛提高组 1996年 数制转换

题干:题干很简单的一道模拟题… 做了好久…具体思路对于任意数制,我们都要先将其转化为十进制,再将它转换为想要的进制对于每一数位来说,其十进制的值都是(当前进制)当前数位-1然后再以同样的方法将十进制表示的数转换成我们想要的进制即: 用十进制减去上述式子,然后输出代码#include<bits/stdc++.h>using namespace std;long long n,sum,l,b,c,a,x,y,ans[1001],f[3][101];char c.

2020-10-01 10:20:46 281

原创 1424:【例题3】喷水装置

老样子,题干题干分析 & 解题思路看题,先将题目转化为一维问题,即: 求圆心(即喷头位置)与两条边交点的位置(求哪条都行)想不明白的上图:看图可知,蓝色区域与红色区域无用,所以我们只需求灰色矩形上下,任意一条边的两端点即可。由勾股可得,第三边的距离即为:sqrt(r∗r−W∗W/4.0) sqrt(r*r-W*W/4.0)sqrt(r∗r−W∗W/4.0)所以,线段前后两端点为:前:O−sqrt(r∗r−W∗W/4.0)前:O-sqrt(r*r-W*W/4.0)前:O.

2020-09-10 22:24:01 626

原创 问题 D: 分配时间

机房练习题题干ps. 闲人… 免进 … 看就看吧言归正传,这道题是分组背包(我用的01…,后来…,好吧,其实本来用的就是分组,自己都不知道)。pps. 分组背包的题在 这里ppps. 刚教完小师弟,手指头都紫了(粉笔的颜色)先推导大表,如下图: (最好自己从新画一遍)这里能够看出,每一个数均可从上一个推导而来(注意,不是一定!!!)。例如,(3,3)可以从(2,3)推导而来与此同时,它也可以从另一个位置推导。即 :$$...

2020-09-10 21:40:46 285 1

原创 1259:【例9.3】求最长不下降序列

题干:点TA题干分析这道题和数字三角形有一定的相似之处,我们只需将可能的继承范围扩大至当前搜索点之前,求所有点长度的最大值即可。算法思路用当前值与之前所有值对比,如果当前的 ai 比 aj 大,就取最大值。ps.由于要存储队列,所以就要把方程拆开 (详见代码)代码#include<bits/stdc++.h>using namespace std;int t,n,m,a[2001][4];int main(){ memset(a,0,sizeof(a)).

2020-08-31 22:31:23 608

devcpp.rar

50个字,没办法,凑吧。Dev-C++是一个Windows环境下的一个适合于初学者使用的轻量级 C/C++ 集成开发环境(IDE)。它是一款自由软件,遵守GPL许可协议分发源代码。

2020-05-13

空空如也

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

TA关注的人

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