- 博客(17)
- 问答 (3)
- 收藏
- 关注
原创 数据结构——树(搬运知识点以及一些简单的解释)
1、树是n (n≥0) 个结点的有限集, 如果n=0,称为空树;如果n>0(1) 有且仅有一个称为根的结点root(2) n>1时,其余结点可分为m个互不相交的有限集T1 … Tn,其中每一个集合又是一棵树,称为根的子树2、度与节点¯(1)结点的度:结点拥有的子树的个数。¯(2)树的度:树内各结点的度的最大值。¯(3)叶结点:度为0的结点。¯(4)分支结点:度不为0的...
2022-05-27 11:59:06 231
原创 最佳编码
#include<queue>#include<xstring>#include<iostream>#include<cstring>#include<stdio.h>using namespace std;int n, m, ans;int num[30];string str;int bfs() { int sum = 0; priority_queue <int, vector<int>,.
2022-02-28 19:40:58 161
原创 救救dingba (和天使差不多)
先摆错误代码#include<iostream>#include<queue>using namespace std;int n, m,ans;char map[201][201];int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};struct state { int x; int y; int ti; friend bool operator<(state s1,state s2) { ret
2022-02-28 16:50:20 295
原创 s-nim(一道很麻烦的题)
首先会输入一个n 代表有n种抽牌方式,紧接着n个数字输入;然后是m表示有m组数据需要判断在这n种抽牌方式下第一个抽牌的人是输或是赢 最后输出m个L/W(这里不太会处理,直接用数组存了)最后输入0表示输入结束需要注意的就是需要将n种抽牌方式进行从小到大的排序,不然sg函数中的break要改为continue,还有就是sg函数的写法需要熟练#include<iostream>#include<cstring>#include<algorithm>u
2022-02-26 21:13:34 238
原创 Public Sale (输出获胜方式)
Problem Description拍卖的规则是这样的:刚开始底价为0,两个人轮流开始加价,不过每次加价的幅度要在1~N之间,当价格大于或等于田地的成本价 M 时,主办方就把这块田地卖给这次叫价的人。由于Lele字典序比Yueyue靠前,所以每次都是由Lele先开始加价,请问,第一次加价的时候,Lele要出多少才能保证自己买得到这块地呢?Input本题目包含多组测试,请处理到文件结束(EOF)。每组测试占一行。每组测试包含两个整数M和N(含义见题目描述,0<N,M<1100)
2022-02-26 20:17:55 103
原创 Being a Good Boy in Spring Festival(nim博弈的取胜方式数)一些超详细的推导
m堆牌,每次只能选择一堆牌抽取任意张(所以sg(n)=n)。用s储存所有sg函数的异或值。根据题意可以知道是如果选择a【i】(第i堆,牌数为a【i】)最多可以抽a[i]张(废话),怎么样可以取胜呢——令抽取了x张牌后的nim和等于0。也就是说,s^a[i]^(a[i]-x)==0; (s^a[i]等于除了a[i]之外所以数的异或值)又因为一个数和它本身求异或值的话也就等于0,所以可以得出s^a[i]==a[i]-x (抽任意张牌,x肯定大于0),又因为x到底是几我们不确定,但是肯定大于零,所以可以把判断
2022-02-26 13:20:10 560
原创 二分匹配 棋盘游戏
大意就是在棋子只能放在给定的格子之中,并且在某一格子(x,y)放了棋子后x行,y列不能再放棋子。重要点就是如果某一点不能放棋的话,可以放置棋子的最大数量就会减少。然后要求第n块棋盘有几个重要点,最多可以放几个棋子然后比较不同的地方就是求重要点。要用已经求出的最大匹配数 rd 与去掉某点之后的最大匹配数(将map[i][j]=0(屏蔽该点之后再调用函数hugary()))最后不要忘了令map[i][j]=1;进行复原操作。#include<iostream>#include<
2022-02-25 20:11:45 2811
原创 过山车 二分匹配的最大匹配
用了匈牙利算法,简单来说就是能不能把新的左点和右点连线#include<iostream>#include<cstring>using namespace std;int an, bn, k,a,b,ans;int map[501][501],linker[501]; bool vis[501];bool dfs(int a) { for (int b = 1; b <= bn; b++) { if (map[a][b] && !vis[
2022-02-24 16:10:04 61
原创 oil deposits (dfs)
题意:有油的地块和邻近八个方向的有油地块算作1片油田。看到题之后又是正常懵逼。用x,y的位置表示每个点的状态,然后如果符合条件就将地块标记为不符合条件的地块就好了。然后在怎么找符合条件的地块卡了一下。(其实遍历就好)两个for循环一上去,符合条件就dfs 然后计数君++#include<iostream>#include<cstring>#include<stdio.h>using namespace std;int Move[8][2] = {
2022-02-23 18:39:03 55
原创 手机的诱惑
#include<iostream>#include<cstring>using namespace std;int Move[4][2] = { {1,0},{-1,0},{0,1},{0,-1} };char map[9][9];int N, M, T; bool judge;int sx, sy, ex, ey;bool in(int a, int b) { return a > 0 && a <= N && b &g.
2022-02-23 16:26:49 514
原创 胜利大逃亡
又卡了一会原本想用优先队列加bfs的(改一改上一题的那个模板)反而还一直超出内存,因为没有用vis标记剪枝。又想了一会,为什么这个不用呢,因为他要求的时间是每一次行动所需都相同的,不像上个rescue里面有守卫需要2点行动力,所以就是正常用bfs就好了。然后是三维数组map[a][b][c],a表示层数(或者说是深度,高度)b表示行,c表示列这样。一开始想都没想,Move用了三维数组表示移动的情况,但是其实没必要,(浪费了好长时间)。#include<iostream>#includ
2022-02-22 22:09:44 61
原创 knight moves
整整一天!一开始想着用最基础的bfs(单向)并且最暴力的if()穷举8种走法,然后一直报错(还查不出来哪里错误了。)然后用循环 直接ac舒服了
2022-02-15 20:48:53 429
原创 piggy bank(背包算法)
为什么要发呢? 这个鬼题目卡了我整整5天(主要因为本人是懒狗,然后还粗心)一直ac不了 然后看别人的写法也和我差不多。最离谱的是最后才想到可能是输出的格式不对( 之前一直是piggy - bank)一定要引以为戒好吧
2022-02-15 11:22:23 348
原创 bfs 非常可乐
大体上也就是个bfs 只是情况多,然后个人感觉这算是比较麻烦的写法(但是也耗了好久,太粗心了if()后面总是漏掉{}然后一直报错。划重点:!大体上的思路就是三个杯子选两个互相倒水,不怎么动脑的话就是像上面这样,分情况写。然后就是根据当前杯子的可乐的量和目标杯子的剩余容量(也分情况,但是后面两个杯子的水量相加才等于第一个杯子的量,所以就可以直接省略掉一种情况)来决定倒水后怎么计算。
2022-02-15 11:18:08 186
空空如也
关于delete删除堆空间出错的问题
2022-05-22
sort函数中有关 将一个无效参数传递给了将无效参数视为严重错误的函数
2022-01-23
float输出显示的变化
2022-01-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人