kuangbin
山东章鱼哥
这个作者很懒,什么都没留下…
展开
-
C - How Many Tables
本题在并查集的运用外,注意使用map来去重并同时进行统计,注意map的使用方式;#include#include#includeusing namespace std;const int maxn=1000+10;int dis[maxn],par[maxn];map num;int n,len;int find(int x){ return par[x]==x?x:par原创 2018-02-01 21:45:31 · 120 阅读 · 0 评论 -
L - Oil Deposits
本题运用深搜可做,应该广搜也可以,我写了一下,wa,不过深搜简单多了,注意再8种情况遍历的地方,要使用x+d[i][0]代入,x+=d[i][0],出错#include<cstdio>#include<queue>#include<iostream>#include<cstring>using namespace std;const int...原创 2018-02-13 12:39:15 · 162 阅读 · 0 评论 -
A - 棋盘问题
本题是dfs搜索训练,1.在输入数据时事先进行标记,哪些存在棋盘,2.在dfs中注意回溯就行了#include#include#includeusing namespace std;const int maxn=10;int vis[maxn],a[maxn][maxn];int k,n,m,cnt;void dfs(int x,int k){ if(k==m) { c原创 2018-02-07 15:38:04 · 135 阅读 · 0 评论 -
B - Dungeon Master
本题就是三维的dfs,第一次接触有点不熟练,之后就慢慢好了,另外注意在dfs中那些变量和结构体尽量声明新的,防止出错;还有一点就是,记住有6种情况要依次遍历#include#include#include#includeusing namespace std;const int maxn=50;char a[maxn][maxn][maxn];int vis[maxn][maxn原创 2018-02-07 17:20:22 · 177 阅读 · 0 评论 -
C - Catch That Cow
本题是bfs的应用,将所有的满足情况置入队列之中,然后再判断是否到达终点(满足条件)就行,注意本题不能使用stack来储存,只能使用queue#include#include#include#include#includeusing namespace std;int n,k,cnt;const int maxn=200000+100;int vis[maxn];struct原创 2018-02-07 19:49:04 · 160 阅读 · 0 评论 -
N - Find a way
运用bfs来做,并且运用一个三维数组来区分两个人分别走过的踪迹#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<algorithm>using namespace std;const int maxn=200+20;const...原创 2018-02-14 15:10:34 · 198 阅读 · 0 评论 -
M - 非常可乐
本题是广搜的题,一共有6种倒法;#include<iostream>#include<cstdio>#include<queue>#include<cstring>using namespace std;const int maxn=100+10;int v[maxn][maxn][maxn];int d[6][2]={{0,1},{0...原创 2018-02-14 19:58:10 · 133 阅读 · 0 评论 -
F - Prime Path
本题首先判断1000-9999哪些为素数,再读入数据进行判断#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<cmath>using namespace std;const int maxn=10000;int v[maxn]...原创 2018-02-15 15:21:40 · 306 阅读 · 0 评论 -
D - Fliptile
本题是二进制枚举,加上dfs来的,至于情况的区分上跟上题有异曲同工之妙,#include<iostream>#include<cstdio>#include<cstring>#include<string>using namespace std;const int maxn=20;const int INF=100000000;int ...原创 2018-02-08 15:33:51 · 239 阅读 · 1 评论 -
A - Jungle Roads
本题是一个裸的最小生成树,直接使用prime算法来进行计算,利用vector来进行容器计算即可#include<iostream>#include<cstdio>#include<queue>#include<cstring>using namespace std;const int maxn=30; struct node{ int ...原创 2018-02-17 19:26:03 · 171 阅读 · 0 评论 -
C - Building a Space Station
本题主要是建图比较难,之后就是kruskal了#include<iostream>#include<queue>#include<cstdio>#include<cstring>#include<cmath>using namespace std;const int maxn=100+10;int par[maxn];st...原创 2018-02-17 21:57:34 · 164 阅读 · 0 评论 -
I - Fire Game
同样是利用广搜来做,唯一不同是有了两个起点,并且还是遍历起点来进行判断,比较哪一种搭配最适合或走的步数最少,btw,如果出现runtime error情况,一般是数组或者结构体数组开小了#include<queue>#include<iostream>#include<cstdio>#include<cstring>using namespa...原创 2018-02-13 00:36:46 · 238 阅读 · 0 评论 -
J - Fire!
用先让火走的原则,再让人走,运用一个广搜即可,最后步骤不要忘了加一#include<cstdio>#include<queue>#include<cstring>using namespace std;const int INF=10000000;const int maxn=1000+100;int n,m;char str[maxn][maxn...原创 2018-02-12 14:50:13 · 520 阅读 · 0 评论 -
E - 食物链
关于本题和上题一样,运用一定的数学知识,这题我是百度才出来的,关于公式如何推出的还有点一知半解,初学还有很多要学啊#include#includeusing namespace std;const int maxn=50000+50;int par[maxn],r[maxn];int n,ans;int find(int x){ int k=par[x]; if(k!=x)原创 2018-02-02 16:25:07 · 246 阅读 · 0 评论 -
G - Supermarket
本题题意是很好理解的,输出最大的利润,但是我怎么都想不到运用并查集来做,后来百度,看了“无忧望月”的博客,才知道的,下面的代码也是看了他的才写出来的,ps,记得在操作之前初始化#include#include#include using namespace std;const int maxn=10000+100;int par[maxn];struct node{ int pi原创 2018-02-03 12:43:39 · 156 阅读 · 0 评论 -
J - A Bug's Life
本题跟是一个分类的并查集,我看了百度才出来的,关键是有一个数组来区分这个数据究竟属于哪一类#include#includeusing namespace std;const int maxn=2000+100;int val[maxn],par[maxn];int flag,n;int find(int x)//通过find来寻找父节点同时寻找性别关系 { int k=par[原创 2018-02-03 15:51:38 · 189 阅读 · 0 评论 -
G - Shuffle'm Up
模拟,来做#include<iostream>#include<string>using namespace std;int main(){ int n,m; string s1,s2,s,c,d,temp; //freopen("G.txt","r",stdin); cin>>n; for(int k=1;k<=n;k++) { ...原创 2018-02-10 13:37:05 · 128 阅读 · 0 评论 -
H - Pots
利用广搜来做,有6种情况要来做#include<cstdio>#include<queue>#include<cstring>using namespace std;const int maxn=110;int A,B,C;char a[10][10]={"FILL(1)","FILL(2)","DROP(1)","DROP(2)",原创 2018-02-10 14:05:23 · 133 阅读 · 0 评论 -
L - Connections in Galaxy War
本题题意为给定逐个点的力量值,再给出通道数,和询问数,要求给出询问点的来救援的点,本题我是百度出来的,下面写法也一致,本题是反过来输出结果,利用栈来实现#include#include#include#includeusing namespace std;const int maxn=20000+1000;const int Big=10000;int h[maxn],power原创 2018-02-05 20:37:42 · 211 阅读 · 0 评论 -
M - 小希的迷宫
本题关键一点在输入上,再之后就是再判断根节点是否有两个上,一般的条件是,如果两个父节点重复的话,则不满足情况,并且,在par数组上要初始化为0,对应的find函数也要改变#include#include#includeusing namespace std;const int maxn=100010;int par[maxn],p[maxn],t[maxn];int cnt,t原创 2018-02-06 14:52:59 · 131 阅读 · 0 评论 -
N - Is It A Tree?
本题跟M题很像,但比它简单,只要当0,0时判断就行了,之后再初始化#include#include#includeusing namespace std;const int maxn=100010;int par[maxn],p[maxn],t[maxn];int cnt,temp;bool flag; int find(int x){ //cout<<"here"<<end原创 2018-02-06 16:06:48 · 143 阅读 · 0 评论 -
H - Parity game
本题关键在父节点的初始化上,应该初始化为-1,这样才能方便判断#include#include#include#includeusing namespace std;const int maxn=10000+100;int par[maxn],val[maxn];int n,m,cnt;bool flag;map mp;int Insert(int x){ if(!mp原创 2018-02-06 17:42:47 · 274 阅读 · 0 评论 -
K - 迷宫问题
本题是广搜加深搜的题,注意要从0,0开始#include<cstdio>#include<queue>using namespace std;const int N=5;const int maxn=10;int d[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; int g[N][N];struct node{ int x,y;}f...原创 2018-02-12 13:24:57 · 131 阅读 · 0 评论 -
E - Find The Multiple
本题要求输出一个仅有0,1组成的数能过整除n,任意输出一个就行了,利用dfs来做,遍历到19位就行啦(其实我是百度的)#include<iostream>#include<cstdio>typedef long long ll;int n,flag;void dfs(int x,ll y){ if(x==19||flag) return; if(y%n==0)...原创 2018-02-08 16:29:15 · 101 阅读 · 0 评论