- 博客(25)
- 收藏
- 关注
原创 【游记】NOIP2018爆炸记
好在我还年轻啊DAY -40国庆节的某一天,清北的大佬在讲台上滔滔不绝,然而我基本上听不进去什么东西。毕竟对考试什么的没有概念,基本上一路听下来,脑袋都是大的。。只能靠自己了,开书,看几篇文章,拔网线,自个去研究消化前几天的课。这几天敲了几个数据结构、dp算法的模板,自认为大概有所长进吧。DAY 0考前的一天晚上,常规作业什么的一律不管,补习课全部推掉,一心坐在电脑前面敲字。开始先打...
2018-12-02 10:58:43 252 1
原创 题解 BOI2003【团伙】
其实绿色有点看高了此题。此题只需要加一个“敌人的敌人就是我的朋友”就可以了,而只要一个人X与另一人Y是敌人,X就和Y的第一个敌人是朋友就可以将X弄进Y的敌人团伙,而Y的敌人将全在那个团伙中下面是代码#include<bits/stdc++.h>using namespace std;int bcj[5010];int e[5010]; //每个人的首个敌人int grou...
2018-12-08 13:55:16 282
原创 题解 luogu P1551 【亲戚】
蒟蒻并查集首题!!其实就是道模板题,昨晚就可以去水模板了。下面是代码// luogu-judger-enable-o2 O2部分,不管#include<bits/stdc++.h>using namespace std;int bcj[5010]; int gets(int x){ if (bcj[x]==x)return x; return bcj[...
2018-12-08 13:55:10 222
原创 题解 luogu P1087 【FBI树】
蒟蒻花了一个下午才A我同桌大佬5分钟A的水题。。。首先是建树,建树流程为:根据已给数据向上递归建树,题目数据是10001011,最下一层也就是IBBBIBII。向上递归,若左子树不等于右子树,父亲为’F’。反之,父亲左子树右子树。我是用数组保存的树。递归过程为从最后一项(2^n)*2-1往前递归,每次递归由树数组的当前项(a[i])和前一项a[i-1]判断它的父亲a[i/2]是什么(二叉树的...
2018-12-08 13:55:01 211
原创 题解 luogu P1229 【遍历问题】
只有一个子节点的节点才会在相同前序后序下有不同的中顺序,此题是不可以构树什么的。所以直接找一个儿子的节点即可。。。#include<bits/stdc++.h>using namespace std;char a[5000],b[5000];int main(){ int i,j,x,y,n,ans=0; gets(a);gets(b); for (i=0;i...
2018-12-08 13:54:53 255
原创 题解P1746 luogu 【离开中山路】
基础的广搜题就是按照它的行走规矩一顿瞎搜就可以了!记得要把队列开大点,要不然会爆炸RE。你还可以把判重数组和地图数组放一起,走过就把那个地点标为1(反正走过一次再走一次就慢了)#include<bits/stdc++.h>using namespace std;char a[2000][2005];int t[1111100][3];//队列大一点int s[5]={0...
2018-12-02 11:00:52 311
原创 题解 luogu P1747 【好奇怪的游戏】
BFS大法好!!!首先是确定12个走向x[20]={-2,-2,-1,1,2,2,1,-1,2,2,-2,-2};y[20]={-1,1,2,2,1,-1,-2,-2,2,-2,2,-2};用一个二维BOOL数组去重,用两个数组分别表示棋盘X轴和Y轴。。注意边界是50 * 50和 1 * 1然后就愉快的开始搜索#include<bits/stdc++.h>using ...
2018-12-02 11:00:39 176
原创 题解 luogu P1135 【奇怪的电梯】
DFS题首先,思想是一个队列,一个数组判楼层是否重复,还有一个楼层数组记录当前楼层数(我之前把head和楼层混为一谈,导致RE无数遍)#include<bits/stdc++.h>using namespace std;int t[250][3];int b[250];bool k[250];//三个数组int main(){ int i,j,x,y,n,a,c,h...
2018-12-02 11:00:21 167
原创 题解 luogu P1588 【丢失的牛】
此题用bfs一定要记得特判过10000和小于0!!!#include<bits/stdc++.h>using namespace std;int head,tail;int a[3][500000];bool t[500000];int main(){ int i,j,x,y,n,z=0; cin>>n; for (j=1;j<=n;j++)...
2018-12-02 11:00:08 236
原创 题解 luogu P1090 【合并果子】
下面是插排的做法总之就是每次将最小的合并,但是有些网上的变态数据卡插排,所以我们接下来写一个优先队列#include<bits/stdc++.h>using namespace std;int a[10050],n;int main(){ long long i,y=0,j;// freopen("fruit.in","r",stdin);// freope
2018-12-02 10:59:58 158
原创 题解 luogu P1803 【凌乱的yyy】
这题是一个基本的贪心思想,由于我们要让一个比赛给后面的比赛空出尽可能多的时间,我们要让每个出现在日程表上比赛的结束时间越早越好。先排序,再根据结束时间顺序选择。#include<bits/stdc++.h>using namespace std;int a[1010000][3];void haha(int l,int r){ int i,j,x,y,n; x=a[...
2018-12-02 10:59:45 202 1
原创 题解 luogu P1024 【一元三次方程求解】
这道题的二分原理题目已给出:f(x)*f(x+1)<0时,x至x+1中必有一根。那么,我们只需要循环-100至100,再用分治考虑小数部分就可以了。下面附上代码:#include<bits/stdc++.h>using namespace std;double a,b,c,d;double _(double x){ return a*x*x*x+b*x*x+c*...
2018-12-02 10:59:34 544
原创 题解 luogu P2083 【找人】
蒟蒻学完并查集,看啥都是并查集。于是我就神奇的用并查集解出了此题思路就是从1至n*m扫一圈,将当前房间所在位置与它指向房间merge注意必须把它merge到它指向房间的儿子节点。最后,你就会发现同学家正好是一个根节点样例merge后样子如下,但样例中无死循环情况,这题是可能出现小明反复绕圈的情况的,所以我们要判定一下。 2,3 3,...
2018-12-02 10:59:13 185
原创 题解 luogu P3366 【【模板】最小生成树】
最小生成树kruskal算法!最弱红名的首道图论题贪心算法,按边的权值排序,然后看当前指定的两点有木有已经在一棵树上,如果有,不管,没有,merge。然后ans加上那条边的权值。#include<bits/stdc++.h>using namespace std;struct path{ int k,l,q;}p[200000];int bcj[200000];in...
2018-12-02 10:59:07 145
原创 题解 luogu P1547 【Out of Hay】
图论基本题第一道!kruskal算法!!#include<bits/stdc++.h>using namespace std;struct path{ int k,l,q;}p[200000];int bcj[200000];int get(int x){ if (bcj[x]==x)return x; else return bcj[x]=get(bcj[x]...
2018-12-01 16:39:14 132
原创 题解 luogu P1536 【村村通】
非常弱的一道黄题。明明裸并查集还是要加一个“生成树”的标签。并查集判同村,若不同村就ans++下面贴代码#include<bits/stdc++.h>using namespace std;int bcj[5010];int get(int x){ if (bcj[x]==x)return x; else return bcj[x]=get(bcj[x]);}v...
2018-12-01 16:38:46 193
原创 题解 luogu P2360 【地下城主】
感谢奆佬王总!sto orz简单广搜,多一维而已,并没有什么区别。。。话说我博客的证书是什么鬼。。。别人的博客都进得去,我的还要添加例外?!#include<bits/stdc++.h>using namespace std;int x[10]={0,1,0,0,-1,0,0};int y[10]={0,0,1,0,0,-1,0};int z[10]={0,0,0,1,...
2018-12-01 16:38:30 298
原创 题解 luogu P2757 【[国家集训队]等差子序列】
首先,用一个桶保存每个数的位置因为等差数列只需三个便可成立,所以我们可以直接暴力枚举前两个数,然后直接用桶判断第三个数是否在前两个数后面就可以了,直接输出‘Y’#include<bits/stdc++.h>using namespace std;int b[100100];int a[100100];int main() { int i,j,x,y,n,k,m,o; c...
2018-12-01 16:37:55 161
原创 手动滑稽 洛谷 P1804 【【保留题目】
这就是传说中的深渊(abyss)!传说,在这道题的底部,有着过去诸多大佬被封印起的力量。。。它是邪恶的象征。任何人只要一面对这道题的本质,就会吓得口吐白沫,倒地不起。几乎没人可以AC它,无数的提交率,无数的勇士。都只换来了WA与屎名。。。今天,我站在了它面前,凝视着它,然后,输出了“无”。深渊缓缓开启,封印在底部的,会是什么呢?#include<bits/stdc++.h>...
2018-12-01 16:37:24 365
原创 【算法】线段树
之前由于不会延迟标记一直没写这题。那么今天就写一个总结来加深印象吧!首先,延迟标记的作用就是在于当某个区间遭到改变,但又用不上(不用输出)时。将所有先前改变都标记上去,等到要用到了,一次直接改。#include <bits/stdc++.h>#define maxn 100005using namespace std;struct segment_tree{ int...
2018-12-01 16:36:42 209
原创 【算法】 splay
感谢yyb大佬的博客!splay,初看像是个十分羞耻高逼格的名字,splay也确实是一个神级的数据结构,虽然同机房大佬rayment不停推荐treap,但我还是决定先写一波splaysplay不得不介绍的,便是它的旋转(rotate)操作了,双旋splay可以毫无压力的将二叉查找树保持平衡,从而轻易使查找等操作保持在O(logn)的复杂度。stl大法好!有像set、rope这样的东西,我要它...
2018-12-01 16:36:14 191
原创 题解 luogu P2068 【统计和】
小水题话说rayment大佬嘘寒问暖两天,差点教会我怎么用splay求区间和。这题我差点就下狠手使用splay了。线段树1的退化版,change区间变成了change一个数,延迟标记?不存在!所以我们只需要简单建一棵线段树,然后轻松模拟就好了。建树其实只需要将树的区间搞出来,区间和由于初始值为0,所以根本不需要求。#include <bits/stdc++.h>#define...
2018-12-01 16:35:47 158
原创 题解 P3353 【在你窗外闪耀的星星】
本来是奔着线段树来的,然后看完标签,二话不说直接打了个线段树的模板,然后开始认真看题。这××用得着线段树??其实直接前缀和再傻瓜模拟就好了,真的不知道为什么要用线段树。#include <bits/stdc++.h>#define gg 100010using namespace std;int a[gg];int sum[gg];bool cmp(int x,int ...
2018-12-01 16:35:10 330
原创 背包整理
背包整理01背包01背包顾名思义,就是0与1放或不放的问题。首先挂上最重要的状态转移方程f[i][v]=max(f[i][v-w[i]]+c[i],f[i-1][v]);V表示不超过V的重量。f[i][v]也就是第I件物品#include<bits/stdc++.h>using namespace std;int a[20001],c[20001],b[30001],m,...
2018-12-01 16:34:17 361
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人