<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jqsh_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jqsh_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jqsh_]]></copyright><item><title><![CDATA[P7073 [CSP-J2020] 表达式&2006：【20CSPJ普及组】表达式]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/119604750</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/119604750</guid><author>jqsh_</author><pubDate>Wed, 11 Aug 2021 14:06:27 +0800</pubDate><description><![CDATA[一本通传送门
洛谷传送门
感谢 OMG_wc大佬的宝贵思路

题干解析

看完题，可分析出以下几点：
1 本题是20年CSP-J 最难的题
2 读入是后缀表达式，用栈存储
3 计算过程要用位运算

大体思路

首先，读入，用栈存储
其次，求出初始（修改前）结果，并判断各数是否能影响到最终结果 。此处有详细解释
最后，判断就好了。

附录


位运算顺序不影响结果！！！！！


a^=1 是取反运算


代码
#include&lt;bits/stdc++.h&gt;
using namespace std.]]></description><category></category></item><item><title><![CDATA[1547：【 例 1】区间和]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/119177713</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/119177713</guid><author>jqsh_</author><pubDate>Wed, 28 Jul 2021 13:49:10 +0800</pubDate><description><![CDATA[一本通题干


标准模板题，看蓝书，用线段树。


代码


#include&lt;bits/stdc++.h&gt;
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&lt;x||l&gt;x) return;
	if(l==r&amp;&amp;l==x){
		dis[k]+=y;
		return;
	}
	int mi..]]></description><category></category></item><item><title><![CDATA[1540：打鼹鼠_二维树状数组 （数据加强版也能过）]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/118994256</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/118994256</guid><author>jqsh_</author><pubDate>Thu, 22 Jul 2021 11:30:50 +0800</pubDate><description><![CDATA[这道题我曾找过许多博客，没有能AC的，故特作此文。
题干传送门
先谈谈做本题的心路历程：
第一眼见：哇！二维的树状数组，虽然没见过，但是貌似不难
此时代码

#include&lt;bits/stdc++.h&gt;
using namespace std;
int n,m,dis[5001][5001],a,b,c,d,t,k;
int lowbit(int x){
	return x&amp;(-x);
}
void add(int x,int y,int z){
	while(x&lt;=n){
	.]]></description><category></category></item><item><title><![CDATA[1539：简单题]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/118994028</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/118994028</guid><author>jqsh_</author><pubDate>Thu, 22 Jul 2021 10:52:20 +0800</pubDate><description><![CDATA[题干
这道题也是模板题，用树状数组记录数位被反转的次数，然后看是否能被2整除即可
代码

#include&lt;bits/stdc++.h&gt;
using namespace std;
int n,m,t,l,r,k,c1[5000001],c2[5000001];
int lowbit(int x){
	return x&amp;(-x);
}
void add1(int x){
	while(x&lt;=n){
		c1[x]++;
		x+=lowbit(x);
	}
	return;
}
v.]]></description><category></category></item><item><title><![CDATA[1538：清点人数]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/118993583</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/118993583</guid><author>jqsh_</author><pubDate>Thu, 22 Jul 2021 10:40:21 +0800</pubDate><description><![CDATA[毫无新意的模板题
代码

#include&lt;bits/stdc++.h&gt;
using namespace std;
int n,k,m,p,c[5000001];
char ch;
int lowbit(int x){
	return x&amp;(-x);
}
void add(int x,int y){
	while(x&lt;=n){
		c[x]+=y;
		x+=lowbit(x);
	}
	return;
}
int sum(int x){
	int ans=0;
	while(x.]]></description><category></category></item><item><title><![CDATA[1537：【例 3】校门外的树]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/118655523</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/118655523</guid><author>jqsh_</author><pubDate>Sun, 11 Jul 2021 16:06:25 +0800</pubDate><description><![CDATA[一本通
题干与模板题不同，这道题是给出种树区间，所以，要按照种树的区间左与区间右各建一个树状数组，再求和。
代码

#include&lt;bits/stdc++.h&gt;
using namespace std;
int n,m,k,l,r,c2[1000001],c1[1000001];
int lowbit(int x){
	return x&amp;(-x);
}
void add1(int x){
	while(x&lt;=n){
		c1[x]++;
		x+=lowbit(x);
	}
	.]]></description><category></category></item><item><title><![CDATA[1536：【例 2】数星星 Stars]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/118613268</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/118613268</guid><author>jqsh_</author><pubDate>Fri, 09 Jul 2021 19:20:28 +0800</pubDate><description><![CDATA[传送门
这题，依旧没难度 然而并没有一次AC ，十分明显的树状数组
注意：
1.题目所给数据已排好序 所以说很水
2.题目有一个点到了数据极限 （详见代码）
代码

#include&lt;bits/stdc++.h&gt;
using namespace std;
int n,a[1000001][3],dis[1000001],c[1000001];
int lowbit(int x){
	return x&amp;(-x);
}
void add(int x,int y){
	while(x&lt;.]]></description><category></category></item><item><title><![CDATA[1535：【例 1】数列操作]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/118613186</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/118613186</guid><author>jqsh_</author><pubDate>Fri, 09 Jul 2021 19:12:42 +0800</pubDate><description><![CDATA[一本通传送门
模板啊，看蓝书好了。
代码

#include&lt;bits/stdc++.h&gt;
using namespace std;
int n,m,k,a,b,c[100001];
int lowbit(int x){
	return x&amp;(-x);
}
void add(int x,int y){
	while(x&lt;=n){
		c[x]+=y;
		x+=lowbit(x);
	}
	return;
}
int sum(int t){
	int ans=0;
	while(.]]></description><category></category></item><item><title><![CDATA[图论专版]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/115497835</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/115497835</guid><author>jqsh_</author><pubDate>Wed, 07 Apr 2021 22:49:23 +0800</pubDate><description><![CDATA[省选临近，本蒟蒻 太菜没得选  ，精心选取了十分重要的图论来复习
注： 下文中n均为点数，m均为边长

1 最短路径问题
Floyed

枚举断点起点终点（顺序很重要），本质上是DP，处理多源最短路
时间复杂度  O(n3) ,太大了，一般不用

for(int k=1;k&lt;=n;k++)
		for(int i=1;i&lt;=n;i++)
			for(int j=1;j&lt;=n;j++)
				if(i!=j&amp;&amp;j!=k&amp;&amp;i!=k)
					dis[i.]]></description><category></category></item><item><title><![CDATA[1469：似乎在梦中见过的样子]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/115473079</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/115473079</guid><author>jqsh_</author><pubDate>Tue, 06 Apr 2021 22:44:09 +0800</pubDate><description><![CDATA[一本通传送门

题干解析

没事闲的，找到了本题背景 神秘幽蓝的传送门，本题背景 太好看啦 没啥用，总结出来就是在一个字符串中找前后长&gt;=k的字符串，中间还要有空。

具体思路

寻找前后缀是极其明显的KMP，我们《只需》在正常KMP的基础上，将每次需寻找前后缀的字符串，并且枚举起始与终点出来，再用KMP找。（配合代码食用效果更佳）

代码
//  jqsh 2021.4.6 22:43
#include&lt;bits/stdc++.h&gt;
using namespace std;
int n.]]></description><category></category></item><item><title><![CDATA[P2512 [HAOI2008]糖果传递 & 1432：糖果传递]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/115469536</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/115469536</guid><author>jqsh_</author><pubDate>Tue, 06 Apr 2021 20:16:49 +0800</pubDate><description><![CDATA[一本通传送门
洛谷传送门
洛谷大神们的题解
本蒟蒻就不献丑了

代码
#include&lt;bits/stdc++.h&gt;
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.]]></description><category></category></item><item><title><![CDATA[1431：钓鱼]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/115449878</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/115449878</guid><author>jqsh_</author><pubDate>Tue, 06 Apr 2021 20:05:35 +0800</pubDate><description><![CDATA[毫无新意的一本通传送门

题干解析

这题… 与这题 传送门 有区别否？懒 题干明白，就不说啥了。

具体思路

本题可采取贪心，动规，贪心+堆优化的方法，这里只讲贪心



]]></description><category></category></item><item><title><![CDATA[1430：家庭作业]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/115449818</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/115449818</guid><author>jqsh_</author><pubDate>Mon, 05 Apr 2021 22:24:39 +0800</pubDate><description><![CDATA[一本通传送门
就是 这题

代码
#include&lt;bits/stdc++.h&gt;
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&lt;=p.w) return false;
	return true;
}
inline int read(){
	int k=0;
	char ch=ge.]]></description><category></category></item><item><title><![CDATA[1429：线段]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/115449514</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/115449514</guid><author>jqsh_</author><pubDate>Mon, 05 Apr 2021 22:10:12 +0800</pubDate><description><![CDATA[一本通传送门
-本题与ta极像。

代码
#include&lt;bits/stdc++.h&gt;
using namespace std;
int n,m,ans;
struct Node{
	int a,b;
}s[10000001];
bool cmp(Node o,Node p){
	if(o.b&gt;=p.b) return false;
	return true;
}
int main(){
	scanf("%d",&amp;n);
	for(int i=1;i&lt;=n;i++){
	.]]></description><category></category></item><item><title><![CDATA[P1181 数列分段Section I & 1428：数列分段]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/115449271</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/115449271</guid><author>jqsh_</author><pubDate>Mon, 05 Apr 2021 21:58:35 +0800</pubDate><description><![CDATA[洛谷传送门
一本通传送门

题干解析

我好懒  本题题干过于明显，又非阅读理解，请各位dalao自行体会。

具体思路

我******，好水，这是蓝书水准？白书入门题好不好。

代码
#include&lt;bits/stdc++.h&gt;
using namespace std;
int ans,sum,n,m,a[100001];
int main(){
	scanf("%d %d",&amp;n,&amp;m);
	for(int i=1;i&lt;=n;i++){
		scanf("%d",.]]></description><category></category></item><item><title><![CDATA[试一试]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/105035928</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/105035928</guid><author>jqsh_</author><pubDate>Mon, 05 Apr 2021 21:49:13 +0800</pubDate><description><![CDATA[第一次写博客
该说点什么好呢？
大家好，我叫
算了算了，好傻的样子。
有点不会用呀
emmmm…
算了

]]></description><category></category></item><item><title><![CDATA[1427：数列极差]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/115449065</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/115449065</guid><author>jqsh_</author><pubDate>Mon, 05 Apr 2021 21:47:44 +0800</pubDate><description><![CDATA[一本通题干

题干解析

小学生水准 敲了半天 ，正常理解即可

具体思路

小学学过，两个数相差越大，它们的乘积越小，反之亦然。按这个思路，只需每次找出最大两个数，最小两个数，分开乘就行。（应分别处理，详见代码）

代码
#include&lt;bits/stdc++.h&gt;
using namespace std;
int n,t,a[1000001],sum1,sum2,b[1000001];
int main(){
	scanf("%d",&amp;n);
	for(int i=1;i&lt;.]]></description><category></category></item><item><title><![CDATA[P1230 智力大冲浪 & 1426：【例题5】智力大冲浪]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/115448496</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/115448496</guid><author>jqsh_</author><pubDate>Mon, 05 Apr 2021 21:39:37 +0800</pubDate><description><![CDATA[洛谷传送门
一本通传送门
注：下文中任务均为小游戏。

题干解析

看题，由 看标签 《人类智慧》可得（在洛谷愚人节月赛上学废了），可知这题该用贪心，而题面又与活动安排极为类似，所以此题为正常贪心。

具体思路

以 wi 为关键字，进行排序，然后按由大到小的顺序遍历，在每次所能完成的时间段里，找最后的时间点完成该任务。

思路证明

本题中任务可分三种情况：


1 完成该任务不挤占其他任务
这没啥好说的…


2完成该任务挤占了其他任务
因为这题完成任务的价值是倒序（由大到小的），所以被挤占的任务价值.]]></description><category></category></item><item><title><![CDATA[1425：【例题4】加工生产调度]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/113870874</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/113870874</guid><author>jqsh_</author><pubDate>Fri, 19 Feb 2021 20:07:31 +0800</pubDate><description><![CDATA[一本通传送门
洛谷传送门

题干解析

题干… 没啥好说的

解题思路

首先读入，然后排序，计算总时间，输出
什么？怎么排序？玄学就好了 就是… 点这里
补一点别人没有的：
一本通上的不能快排，要用有稳定性的排序方法

洛谷解法
#include&lt;bits/stdc++.h&gt;
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(.]]></description><category></category></item><item><title><![CDATA[1573：分离与合体]]></title><link>https://blog.youkuaiyun.com/jqsh_/article/details/113623604</link><guid>https://blog.youkuaiyun.com/jqsh_/article/details/113623604</guid><author>jqsh_</author><pubDate>Thu, 04 Feb 2021 07:34:26 +0800</pubDate><description><![CDATA[题干

题干解析

很明显的 区间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[.]]></description><category></category></item></channel></rss>