数据结构
数据结构
jqsh_
这个作者很懒,什么都没留下…
展开
-
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 · 799 阅读 · 0 评论 -
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 · 192 阅读 · 0 评论 -
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 · 570 阅读 · 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 · 189 阅读 · 0 评论 -
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 · 437 阅读 · 0 评论 -
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 · 790 阅读 · 0 评论 -
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 · 385 阅读 · 0 评论 -
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 · 122 阅读 · 0 评论 -
图论专版
省选临近,本蒟蒻 太菜没得选 ,精心选取了十分重要的图论来复习注: 下文中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 · 102 阅读 · 0 评论