- 博客(42)
- 收藏
- 关注
原创 一三计划(Day 11)Bridging signals
题目目的给定一个n;由n组测试数据给一个k有k个数字找出每一组样例的上身子序列的最大长度dp[i]=max(dp[k]+1,dp[i]);//意思为当前长度为i情况下最大长度的上升子序列复杂度为(n^2)因为每组数据里面有40000个数字所以肯定会超时因此我们不得不改变一下dp所对应的状态我们规定dp[i]为再长度为i的情况下的上升子序列的末尾数字详见参考https://blog.csdn.net/coolwriter/article/details/79916458代码#in
2021-04-22 11:11:11 115 1
原创 一三计划(Day 9)护卫队
题目描述护卫车队在一条单行的街道前排成一队,前面河上是一座单行的桥。因为街道是一条单行道,所以任何车辆都不能超车。桥能承受一个给定的最大承载量。为了控制桥上的交通,桥两边各站一个指挥员。护卫车队被分成几个组,每组中的车辆都能同时通过该桥。当一组车队到达了桥的另一端,该端的指挥员就用电话通知另一端的指挥员,这样下一组车队才能开始通过该桥。每辆车的重量是已知的。任何一组车队的重量之和不能超过桥的最大承重量。被分在同一组的每一辆车都以其最快的速度通过该桥。一组车队通过该桥的时间是用该车队中速度最慢的车通过该桥所
2021-04-20 23:30:19 120
原创 一三计划(DAY 5)链表(数据域为数据结构)和文件操作相结合
#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct student{ char xuehao[20]; char name[20]; int math; int eng; int sum;}STU;struct singlelist{ STU data; struct singlelist * next;};stru
2021-04-17 08:46:16 108
原创 一三计划(Day 1)
之后会随机更新了,不更新不代表没学习没做题目,最近写博客反而给我造成了一些压力,所以决定不定期更新对于打开文件的应用#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>int k=1;void createFile();//创建文件void insertData();//指定文件并插入学生新信息数据void insertAny();//指定文件插入任意信息
2021-04-12 23:31:32 93
原创 一二计划(Day 18)图形递归
题目代码#include <iostream>#include <cstring>using namespace std;char ans[1050][2050];int a[12];void dfs(int x, int y, int n){ if (n == 1) { ans[x + 2][y + 2] = '/'; ans[x + 2][y + 1] = '\\'; ans[x + 1][y + 3] = '/'; ans[x + 1][y
2021-04-07 23:13:22 79
原创 一二计划(Day 16)DFS,深度优先搜索
深度优先搜索基本模板int check(参数){ if(满足条件) return 1; return 0;} void dfs(int step){ 判断边界 { 相应操作 } 尝试每一种可能 { 满足check条件 标记 继续下一步dfs(step+1)
2021-04-05 23:06:03 155
原创 一二计划(Day 15)XIN GE和他的女神 (贪心)
题目描述我们前文说到XIN GE的女神是隔壁工地的花花,最近花花遇到了麻烦,她过来找XIN GE解决:工地最近进了一批转头,共有六种,规格分别是11h,22h,33h,44h,55h,66h (h为常量),而工地的拖拉机容量为66h,为了使运费降到最低,拖拉机数量必须最低,那么该如何装才能最大限度的利用拖拉机空间呢?有什么能难倒XIN GE呢? 果然机智的XIN GE马上想到了让你们帮他解决。输入多组测试案例,对于每组案例,输入6个整数,分别按顺序代表六种规格的砖头的数目,当6个数全为0时结束。
2021-04-04 23:58:09 123
原创 一二计划(Day 13)车辆安排
今天终于把学校上次训练的题刷完了也没什么很难得题除了一道车辆安排题目描述有n个队伍,每个队伍的人数小于等于5,每辆车最多坐5个人,要求一个队伍的人都在一辆车上,求最少的车数输入33 4 5输出3乍一看是水题(其实就是水题)一开始用if写写了好久,把自己得思路都写晕了(说明自己得思路并不是很清晰)后来看到网上有一个用while来写得,瞬间豁然开朗,用while写简明了然太牛了就分享一下用while得做法#include<stdio.h>int main(){
2021-04-02 23:47:10 133 2
原创 一二计划(Day 10)求最大子矩阵和
思路看到这思路时我被惊讶到了一下,着实想不到,而且有点dp的味道首先我们知道子矩阵和有行与列组成而且是随机的,而我们的目的是找出子矩阵和的最大值,那么就有一个问题怎么快速计算子矩阵和————————————————————————假设我们是N*M的矩阵,而我们要将N行它压缩成一个个一维数组用求最大连续子序列和的操作,来找出此时最大子矩阵的和————————————————————————最大连续子序列和最大连续子序列和就是给你一个一维数组,找出下标连续且和最大的值代码为for(int
2021-03-31 00:04:06 102
原创 一二计划(DAY 9)无所事事
昨日也就是day 8 没有写博客,因为那天上午写了学校的作业,下午上课,然后去轰趴了,就没怎么写题目,因为心里过意不去就写了几道水题,也就没有发到博客上面。今天又重新开始刷dp了,但发现牛客剩下的一些dp题是真的看不懂,对于别人的题解也不是很理解,想不清楚为什么。而且最重要的原因是最近内心很浮躁(感觉学校里有好多事情的deadline),希望乘这个清明将浮躁的内心冷静一下明天转战自己家学校的ACM平台去了。10000小时计划96h...
2021-03-29 23:35:45 107 2
原创 一二计划(Day 7)垃圾佬的MM
题目描述垃圾佬突然有了一个想法,他将他脑海中的所有MM的名字列成一排,并给她们编号1,2,3…n,然后给所有的MM都打了一个印象分P1,P2,P3…Pn(印象分都为整数)。这时候,垃圾佬想一次性选择多个MM出来,要满足以下要求:选择的MM的编号必须是连续的。这些MM的印象分的平均数为非负数。最最最重要的一点,垃圾佬想要选出的MM的个数越多越好。垃圾佬想知道他最多可以选出多少个MM。输入第一行一个数字T,代表有T组数据(T<=10)接来下有T组数据。对于每一组数据,第一行有一个数N,代
2021-03-28 00:16:31 71
原创 一二计划(Day 6)牛牛去买球
题目:https://ac.nowcoder.com/acm/problem/21668题目描述:一个人如果在他很小的时候就自己赚过钱,他的一生都会过得非常节俭,因为他知道财富来之不易.作为一个勤俭节约的好孩子,牛牛决定在生活中践行这一原则.有一天他想去商店买一些球来玩,他发现商店里有n个盒子,每个盒子外面有一张标签告诉你有ai个红球,bi个蓝球,需要ci的钱购买但是由于店主是一个粗心的人,他告诉你每个盒子球的总量是符合标签的说明的,但是具体的种类可能会有如下偏差,比如可能有(ai+1 ,bi-
2021-03-27 00:04:24 203
原创 一二计划(Day 5)牛牛数括号
题目:https://ac.nowcoder.com/acm/problem/21652#include <bits/stdc++.h>#define ll long longusing namespace std;const int mod = 1e9+7;char s1[2505],s2[2505];int dp[2505][2505],sum1[2505],sum2[2505];int main(){ cin >> s1 >> s2;
2021-03-25 23:12:44 165 4
原创 一二计划(Day5)求回文子序列个数
思想用DP完成,dp[i][j]表是i~j回问子序列的个数他们之间的关系为dp[i][j]=dp[i+1][j] + dp[i][j-1] - dp[i+1][j-1] , if(s[i]!=s[j])dp[i][j]=dp[i+1][j] + dp[i][j-1] +1 , if (s[i]==s[j])也就是对于任意字符串,如果头尾字符不相等,则字符串的回文子序列个数就等于去掉头的字符串的回文子序列个数+去掉尾的字符串的回文子序列个数-去掉头尾的字符串的回文子序列个数;如果头尾字符相等,则字符
2021-03-25 23:08:20 182 1
原创 一二计划(Day 4)牛牛的回文串
题目:https://ac.nowcoder.com/acm/problem/21337感受对于一个初学者一个小白太难了…只能看题解哎啥时候能自己解题啊以下为大佬的代码答题思路如下:用dp来计算每次区间移动,并成回文串的最小价值因此我们要记录处理每一个字符(使之能变成回文串的最小价值)void init(){ //处理出来cost_c数组的最小转化. for(int k=0;k<26;k++) { for(int i=0;i<26;i++)
2021-03-24 20:10:22 115
原创 一二计划(Day)3 美丽序列,DP+枚举
题目:https://ac.nowcoder.com/acm/problem/21313原先一直觉得枚举没简单,但做了这道题后,感受到了枚举暴力法的魅力,这道题昨天没看懂,今天看懂了不少#include<stdio.h>#include<stdlib.h>#include<string.h>#define Mod 1000000007long long dp[45][45][3][1605];// dp[i][j][1][k]代表当前 处理到第i个且值为j
2021-03-23 21:47:20 101
原创 一二计划(Day 2)DP 删括号
题目:https://ac.nowcoder.com/acm/problem/21303动态规划要找对变量以及变量之间的关系我们设置dp[i][j][k],主要的变量就是计算多余额外的左括号‘(’表示a字符串前i个删除k个左括号构成b字符串关系为i与i-1之间的关系详见代码#include<stdio.h>#include<string.h>int dp[110][110][110];//dp[i][j][k],表示a字符串前i个删除k个左括号,与前j相匹配int
2021-03-22 22:24:17 74
原创 一二计划(Day 1)今日学习,DP
首先,先庆祝自己完成了21天计划 (最后一天是奖励自己的一天,想干啥都行),如愿以偿,昨天去外面逛了一天,吃了很多东西今天也正式迈入第二个21天计划接着上次的题https://ac.nowcoder.com/acm/problem/20154这次仍然没有100%通过,但从20%通过率变成了30%因为如果时间不够时,要将之前消耗最多的时间与这次消耗的时间相比较,如果这次时间比较短,就舍弃那一次的,采用这一次的时间。因此我们需要大顶堆来存放每次消耗的时间#include<stdio.h>
2021-03-21 18:31:49 76 1
原创 一一计划(Day 20)
[JSOI2007]建筑抢修https://ac.nowcoder.com/acm/problem/20154淦 ,知识太少了,看别人的代码看不懂,自己的代码只能通过20%自己的思路:贪心先抢救剩余时间最少的建筑,所以先从小到大排序,然后用sum来统计已经消耗的时间,满足条件为 抢救改建的时间-已经消耗的时间是否大于抢救该建筑所需要的时间#include<stdio.h>void quicksort(int a[],int b[],int low,int high){ in
2021-03-20 00:07:51 60
原创 一一计划(Day 19) 今日学习
今日学习汇报因为今天的题目没做出几道,没做出的题目还在研究,希望明天能做出来虽然不做成啥事但也不能空着是吧,那就默写一遍数组栈#include<stdio.h>#include<stdlib.h>int a[30],n;void swap(int*a,int* b){ int temp; temp=*a; *a=*b; *b=temp;}void up(int p){ while(p>1&&a[p]&
2021-03-18 23:16:06 42
原创 一一计划(Day 18)数组栈
数组栈主要操作:堆是一种数据结构,主要只是三个操作:1.加入一个数字2.获取最大值3.删除最大值#include<stdio.h>#include<stdlib.h>int a[30],n;void swap(int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp;}void up(int p){ while(p>1&&a[p]>a[p/2])
2021-03-17 20:47:26 55
原创 一一计划(Day 17)一元三次方程解
题目有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值 ≥ 1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位代码#include<stdio.h>double l,r,a,b,c,d,mid;double answer(double x ){ return a*x*x*x+b*x*x+c*
2021-03-16 23:50:39 49
原创 一一计划(Day 16)聪明的质监员 和 借教室(二分)
第一题:聪明的质监员题目描述:小T是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n个矿石,从1到 n 逐一编号,每个矿石都有自己的重量wi以及价值vi。检验矿产的流程是:1、给定m个区间[Li,Ri];2、选出一个参数W;3、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值 Yi :且wj≥W,j是矿石编号这批矿产的检验结果Y为各个区间的检验值之和。即:若这批矿产的检验结果与所给标准值S相差太多,就需要再去检验另一批矿产。小T不想费时间去检验另一批矿产,所以他想通过调
2021-03-15 22:12:23 137
原创 一一计划(Day 15)推箱子游戏
人生第一款游戏,值得记录#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<conio.h>//地图 0 表示空地,1表示墙壁,3表示箱子的目的地,4表示箱子,6表示人,7表示箱子和目的地重合,9表示人站在目的地int Map[2][10][12] ={ { { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0,
2021-03-14 22:22:08 97
原创 一一计划(Day 14)邻接表法存储图,BFS广度优先遍历,DFS深度优先遍历
邻接表法存储邻接表发存储需要时无权无向图。用数组+链表的方式完成数组用来记录地点,链表来记录每一个地点对应的相邻地点1.构造一个数据结构来存放数组的序号以及指针用来指向链表2.创造结点,构建链表3.采用无表头链表表头插入法,来插入链表(此时链表的部分已经完成,可以顺利使1,3完成连接)4.构造数组,用来存放数据,以及每一个数据都带有的指针5.构造图,结构体里含有边数与顶点数,以及结构体数组(也就是第四步)6.创建图,因为我们要插入插入到链表(例如B插入A),所以要先找到A对应的数组位置(第七
2021-03-13 15:21:30 180
原创 一一计划(Day13)矩阵法存储有向带权图
矩阵法存储图用二维数组来标记点和对应的权值#include<stdio.h>#include<stdlib.h>#include<string.h>typedef char VertexType[4];typedef int VRType;#define MAX 10typedef struct graph{ int arcnum;//边数 int vexnum;//权数 VertexType vextex[MAX];//二维数组
2021-03-12 23:39:28 132
原创 一一计划(Day 12)二叉搜索树
二叉搜索树1.每一个数字都有唯一的关键字2.比根结点大的放右边,比根结点小的放左边3.二叉搜索树的任何一个子树都是二叉搜索树代码#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct dataPair{ int first;//数据关键字 char second[20];//数据}DATA,*LPDATE;//二叉树结构体typedef struct t
2021-03-11 22:49:33 65
原创 一一计划(Day 11)大顶堆
大顶堆的定义1.大顶堆相当于一维数组,用完整的二叉树去分析2.从第一个节点开始分析3.上一层永远比下一层大4.数组下标 child=parent*25.插入:向上渗透,插入元素永远从堆的最后面插入,整个过程就是调整堆的过程(每次调整于之的父节点相比较大小,若大于父节点则进行交换)删除:向下渗透, 从堆的最顶部删除,原理一样,只不过是与向上渗透相反,与孩子节点中的最大值相交换代码#include<stdio.h>#include<stdlib.h>#define M
2021-03-10 10:30:58 97
原创 一一计划(Day 10)今日事情(一些自己做的小小小游戏和二叉树数字特性)
二叉树的遍历打印void preOrderByStack(LPTree root){ if(root==NULL)//如果根节点为空退出循环 return; //准备栈 LPTree stack[10];//用数组栈比较方便,不用去写栈的代码 int stackTop = -1; //栈顶标记 LPTree pMove=root; while(stackTop!=-1 || pMove)//当栈顶不为空或根节点不为空 {
2021-03-09 23:54:34 88
原创 一一计划(Day 9)(静态树,便于理解)
ps:因为今天是从早上到晚8点没有太多的时间学习,只能学一点,但一点也是一点也要学!保持学习的状态静态树静态数是死板的创建过程,无实际作用,只是为了更好的理解二叉树(静态二叉树)利用递归的方法,采用先序的方法 : 根 左 右#include<stdio.h>#include<stdlib.h>#define NULL 0typedef struct treeNode{ char date ; struct treeNode* LChild;
2021-03-08 23:05:25 193
原创 一一计划(Day 7)枚举
枚举枚举类似于define 宏定义代码举例#include<stdio.h>enum Hero{Guanyu=45,Liubei=47,Zhangfei=60};int main(){ enum Hero hero = Guanyu; printf("hero=%d",hero);}输出结果为hero=45;也可与部分枚举赋值若全部不赋值,默认为0;若部分赋值例如:Guanyu,Liubei=47,Zhangfei,Caocao则赋值后面的数据依次+1,
2021-03-06 22:46:32 91
原创 一一计划(Day 6 )今日学习(二分,前缀和,差分)
二分(dichotomy)[daɪˈkɑːtəmi]基本代码#include<stdio.h>int binarySerch(int str[],int n,int num){ int left=0,right = n-1; while(left<right) { int mid = (left+right)/2; if(num==str[mid]) return mid ; else
2021-03-05 22:57:40 116
原创 一一计划(day 5(补录昨天))有点失败的一天
昨天的自己令我很失望,晚上都没有学习,都是在玩中度过。想要以后的生活好过,今日的自己就一定要努力。一定要有一项硬本领。10000小时计划18H
2021-03-05 20:25:09 78
原创 一一计划(Day 4)今日学习
做出的决定原先报了英语口语的,为了以后能再找工作上提供一些帮助.自己也学习了一期课程,效果确实是有,但有点不喜欢他们表演的授课形式。原先的自己又报了后两期的课程共1w ,但现在发现精力不够,而且性价比不是很高,因此我决定尝试自学,采用自己与自己对话的方式以及看瑞克和莫蒂去模仿,同样也能学习语音语调.一定要努力学,不要让未来的自己后悔!学习成果今天第一天看系统课,看了很多基本的东西,发现有很多基础是不知道以及不熟的下面一一罗列,去巩固自己的记忆,也警示自己,学习要踏实,可以的话学过一个阶段后再回头重
2021-03-03 21:29:38 62 1
原创 一一计划(Day 3)今日感想
原计划写出有关广度优先搜索的代码,但是看了很多博文,由于现在的我数据结构还是小白,原理懂了但很多中间代码看不懂,上网一一查也废了我的很多时间,也没弄出所以然个来。最后加入了B站一个很喜欢的up主课程,希望在他的带领下我的编程思维能得到巨大的提升10000小时计划:共学习编程时长11.5h明日再接再励....
2021-03-02 22:23:30 70
原创 一一计划(Day 2 )链式栈
链式栈顾名思义这里的栈是与链表相挂钩,因为链表和栈有个共同的性质就是先进后出,所以写法与链表相似基本思路1.写出栈的数据结构2.创建栈也就是初始化过程3.写出节点的数据结构(因为入栈前得要用东西可以入到栈里面)4.创建节点5.入栈(也就是插入节点写法与链表相同)6.获取栈顶元素7.出栈(也就是删除节点写法与链表相同)8.万金油函数,判断是否为空代码#include<stdio.h>#include<stdlib.h>#define Null 0struc
2021-03-01 21:32:18 79
原创 一一计划(Day 2)双向链表
双向链表与单向链表的区别1.单向链表因为只有一个指针指向下一个指针,所以只能从前往后找,速度慢2.为了更迅速,于是就在加了一个前指针,也就变成了双向链表1) 新节点的前指针指向上一个节点;2) (新)节点的后指针指向下一个节点;3.两者写法基本相似,重点要画图理解双向链表的含义代码#include<stdio.h>#include<stdlib.h>#define Null 0struct doublelist{ int date; struct
2021-03-01 14:02:24 59
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人