03 2022 档案

摘要:一、A题 (1)题目描述 (2)解题思路 这个题就是一个模拟题,如果我当前位置为0,那么我试着往下找1,找到连续的一串1,如果连续的这串一的个数大于等于2个的话,我的答案就不用改变,否则我就需要加上2 - sum(连续的一的个数),然后直到结尾就可以了。 (3)代码实现 1 #include "bi 阅读全文
posted @ 2022-03-28 18:46 scannerkk 阅读(59) 评论(0) 推荐(0) 编辑
摘要:一、学习进度 1.java开始学习JDBC 2.cf补题补 3.天梯赛打到1600 4.打了一场atcoder 二、任务截图 三、总结 最近状态不是很好,精力不够集中,看书效率慢,做题思路也不是很灵活,希望下周能够早点调整好,抽点时间去跑跑步。 阅读全文
posted @ 2022-03-27 21:17 scannerkk 阅读(16) 评论(0) 推荐(0) 编辑
摘要:一、A题 解题思路 这个题把式子化简一下就可以得到了a[i]和a[j]为最小和最大值就行了,所以答案就是最小值和最大值的下标 代码实现 1 #include "bits/stdc++.h" 2 #define PII pair<int,int> 3 #define rep(i,z,n) for(in 阅读全文
posted @ 2022-03-25 19:55 scannerkk 阅读(21) 评论(0) 推荐(0) 编辑
摘要:一、A题 题目意思是我做一次把某个区间逆转的操作,然后输出可能得到的最大的相邻两数之和。很明显,这个题无论如何都能让最大的和次大的两个数相加。因此我们只需要排个序,然后输出最大两个数的和就行了。 代码实现 1 #include "bits/stdc++.h" 2 #define PII pair<i 阅读全文
posted @ 2022-03-24 19:52 scannerkk 阅读(74) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这个题用常规的dp是行不通的,应为数据量太大了。那么应该怎么优化呢。 答案是采用矩阵优化 我们构造一个这样的矩阵,然后乘以以F1、F2构造得2*1的矩阵 为了发现规律,我们再乘一次 我们发现每一次左乘一个我们构造得这样的矩阵,我们都会得到下一个数列。分析下标关系可知,我们 阅读全文
posted @ 2022-03-23 22:02 scannerkk 阅读(60) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这题其实就是枚举每个位置,然后根据这个位置判断需要剔除几个人,反向思考,我们需要剔除几个人。 pos之前的部分做一个最长递增子序列的dp,用前面的总人数减去最长递增就是前面部分需要剔除几个人 pos之后的部分做一个最长递减子序列的dp,用前面的总人数减去最长递减就是后面部 阅读全文
posted @ 2022-03-23 21:51 scannerkk 阅读(39) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这道题是一个贪心的问题。不能想当然的直接按照面积直接装,因为箱子是一个整个的,不可以分开。 首先是6*6的箱子,你可以直接装 然后是5*5的箱子,你在装完一个5*5之后,最多只能再装11个1*1,是1*1尽量往这里面装。一直到5*5的箱子装完 然后是4*4的箱子,装完一个 阅读全文
posted @ 2022-03-23 21:46 scannerkk 阅读(233) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这题是一个概率DP题,我们考虑三种情况 我们用dp[i][j]代表i张印章能凑出j种,设p = 1 / n 显然第一种情况 当i<j时,dp[i][j]=0,因为不可能凑出j种 第二种情况 当j = 1时,此时选出的i张里面都是某一种,概率是(p^i),又因为可能都是n中 阅读全文
posted @ 2022-03-22 18:26 scannerkk 阅读(36) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 每次插入一个元素我就进行一次堆的调整,不要存着最后再进行堆调整。用一个map记录每个元素在队中的位置,剩下的就是读入的问题了。 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 const int inf 阅读全文
posted @ 2022-03-20 22:00 scannerkk 阅读(79) 评论(0) 推荐(0) 编辑
摘要:一、学习进度 1.本周看了一下java的面向对象,然后配置了一下java fx的环境 2.PTA刷到了指定要求 3.写了PTA的L2的大部分的题解 4.打了一场新星杯,还是有点菜,有个题一直卡在没有加,而是一直赋值。 二、总结 本周的学习进度有点慢,不怎么想看书,最近开始看视频学java了,东西有点 阅读全文
posted @ 2022-03-20 20:42 scannerkk 阅读(21) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 我们枚举n的因子,然后枚举这个因子的最大长度,然后做个标记。最后在输出答案的时候反推就可以了。 三、代码实现 1 #include "bits/stdc++.h" 2 #define PII pair<int,int> 3 #define rep(i,z,n) for(i 阅读全文
posted @ 2022-03-19 16:27 scannerkk 阅读(170) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这里我们直接枚举1的个数,然后看看是否能够整除,就是个大数除法的内容。这里注意中间可能有为0的情况,列如530 / 5 = 106中间这个0要注意。 这里大数除法是这样进行的。 比如说123 / 5 第一次1 / 5为0,那么第一个就为0,余数为1 第二次利用上次的余数* 阅读全文
posted @ 2022-03-19 16:23 scannerkk 阅读(116) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 用map模拟这个链表,然后用vis数组去重,用两个vector存答案,一个存去重后的链表,另一个存去重的节点。 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 struct node{ 4 string 阅读全文
posted @ 2022-03-19 16:17 scannerkk 阅读(202) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这是个简答的贪心题,就直接按照平均价位从大到小排序,然后一直取就行了,直到所有的吨用完了。 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 struct node{ 4 double num; 5 do 阅读全文
posted @ 2022-03-19 16:13 scannerkk 阅读(27) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 首先根据他的原规则建树,然后根据原规则相反建树。最后遍历这两棵树中是否有一颗的前序和输入序列相同,相同就输出这棵树的后序。题目很简单,就是做起来挺麻烦的。 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 阅读全文
posted @ 2022-03-19 16:11 scannerkk 阅读(45) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 首先这个题意讲的我迷糊,最后才知道这个Nc就是交集,Nt就是并集。然后我老老实实用set,map做,T了一个点。最后上网一搜,发现别人用了神奇的stl大法求交集并集。 三、代码实现 1 #include "bits/stdc++.h" 2 #define PII pair 阅读全文
posted @ 2022-03-19 16:07 scannerkk 阅读(90) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这个题就是个暴力枚举题,分两种情况。 (1)——奇数情况:我们可以这样搜,从某个位置开始向两边枚举,直到到边界 (2)——偶数情况:对于每一个位置,我们从当前位置向左,从当前位置的下一个位置向右。 三、代码实现 1 #include "stdio.h" 2 #includ 阅读全文
posted @ 2022-03-19 16:04 scannerkk 阅读(87) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这个题排个序就可以了,在输入的时候用个vis数组去重就行了。 三、代码实现 1 #include <bits/stdc++.h> 2 using namespace std; 3 double b[100010]; 4 int red[100010]; 5 struct 阅读全文
posted @ 2022-03-19 15:58 scannerkk 阅读(52) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 刚开始想到的是直接暴力模拟算出答案,然后超时了,后来发现其实对于每个轨道,如果需要新增轨道,那么最后那个列车的编号一定是递增的,那么此时我们可以采用二分优化这个搜索过程。优化后成功AC。 比如样例 你会发现每次插入都是递增的,故可以采用二分优化算法。 三、代码实现 1 # 阅读全文
posted @ 2022-03-19 15:47 scannerkk 阅读(309) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 对于每个成绩排个序,去掉最高和最低就行了,然后把平均分放入vector就行了。再把vector排个序输出 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 int n,m,k; 4 double ave[ 阅读全文
posted @ 2022-03-19 15:37 scannerkk 阅读(85) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 要想两边的差距尽可能大,而且要人数尽可能平均,那么这就是一个典型的贪心的问题了。我们只需要把数组排个序,然后从前到一半,从一半到最后,统计一下和。然后输出即可。但是这个题有个问题就是当人数为奇数时,你要考虑把中间那个人加到左边还是右边答案更优。 三、代码实现 1 #inc 阅读全文
posted @ 2022-03-19 15:34 scannerkk 阅读(102) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 定义一个map,set,vector,vector负责存答案,map负责统计人和分数的映射,最后遍历答案串的时候,如果他没有在set里面出现过,并且他的map映射的分数大于平均分,那么就是答案,直接输出就可以。 三、代码实现 1 #include "bits/stdc++ 阅读全文
posted @ 2022-03-19 15:30 scannerkk 阅读(63) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 利用map存储这个链表的顺序。前面那个string代表当前节点,映射的是一个结构体,里面存了下一个节点的信息,遍历一遍全部存入一个vector里面,然后从两边输出就行了。 三、代码实现 1 #include "bits/stdc++.h" 2 using namespac 阅读全文
posted @ 2022-03-19 15:24 scannerkk 阅读(91) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 一个普通的bfs模板题,但是要用链式前向星优化内存,不然机会内存超限。在bfs过程中不断更新答案,也就是最小点。 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 int heads[10010]; 4 阅读全文
posted @ 2022-03-19 15:21 scannerkk 阅读(23) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 用数组模拟建完全二叉树,可知节点个数,若为完全二叉树,则前n个节点没有为0的,若前面有为0的,那么我们就输出No。至于输出节点,我们可以一直遍历到找到n个数再退出。刚好从前到后满足层次遍历。 三、代码实现 1 #include "bits/stdc++.h" 2 usin 阅读全文
posted @ 2022-03-19 15:18 scannerkk 阅读(47) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这题设计两个栈就可以做出来了,属于简单数据结构的应用,判断一下除零的情况即可 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 stack <int> s1; 4 stack <char> s2; 5 i 阅读全文
posted @ 2022-03-19 15:14 scannerkk 阅读(298) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 利用map,vector进行映射,然后读出来就可以了,本题是一个stl的妙用。 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 map <vector<int>,int> mp; 4 int main( 阅读全文
posted @ 2022-03-19 15:12 scannerkk 阅读(178) 评论(0) 推荐(0) 编辑
摘要:模板:P1403 [AHOI2005]约数研究 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 1 #include "bits/stdc++.h" 2 #define PII pair<int,int> 3 #define rep(i,z,n) for(int i = z;i < 阅读全文
posted @ 2022-03-15 16:26 scannerkk 阅读(27) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 用mp记录前面出现过的数字,如果后面的数字的因子出现过,则这个数不加入答案。最后把答案正着打一遍,倒着打一遍就行了。 三、代码实现 1 #include "bits/stdc++.h" 2 #define PII pair<int,int> 3 #define rep(i 阅读全文
posted @ 2022-03-15 15:36 scannerkk 阅读(65) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 并查集模板题,只不过输出的时候不是输出a[i]而是要再查一次,输出find(a[i]) 三、代码实现 1 #include "bits/stdc++.h" 2 #define PII pair<int,int> 3 #define rep(i,z,n) for(int i 阅读全文
posted @ 2022-03-15 15:32 scannerkk 阅读(51) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这个题打比赛的时候以为是”马拉车“就直接跳过了,打完比赛回来想了两分钟发现这个题就是个LCS的模板题。亏大了!!!!直接把原串翻转,然后对原串和翻转后的原串做DP,最后dp[n][n]就是答案。 三、代码实现 1 #include "bits/stdc++.h" 2 us 阅读全文
posted @ 2022-03-15 15:25 scannerkk 阅读(28) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这题是一个拓扑排序的模板题,所谓拓扑排序就是每次把度为0的依次输出,但是要做到字典序最小该怎么办呢? 上网学了手,用优先队列(小根堆)每次会把最小的放在队首,故最终的答案一定是最小的字典序。 三、代码实现 1 #include "bits/stdc++.h" 2 usin 阅读全文
posted @ 2022-03-15 15:22 scannerkk 阅读(76) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 我们把tj的马和qw的马从小到大排个序 情况1:如果tj最大的马比qw最大的马快,则答案加1 情况2:如果tj最慢的马比qw最慢的马快,则答案加1 情况3:如果tj最慢的马比qw最快的马慢,则答案减1(也就是用最慢的马去耗qw最快的马) 情况4:如果tj最慢的马和qw最快 阅读全文
posted @ 2022-03-15 15:20 scannerkk 阅读(160) 评论(0) 推荐(1) 编辑
摘要:一、题目描述 二、解题思路 这个题难的点在于阅读理解,导致我比赛的时候知道他是个并查集,但是没有写出来。这里我们并不是把人数合并,而是把爱好合并,最后遍历爱好就可以找到答案了。 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 ma 阅读全文
posted @ 2022-03-15 15:16 scannerkk 阅读(65) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 简单做法用c++中的stl中string类的find函数一句话解决 三、代码实现 1 #include "bits/stdc++.h" 2 #define PII pair<int,int> 3 #define rep(i,z,n) for(int i = z;i <= 阅读全文
posted @ 2022-03-15 15:12 scannerkk 阅读(211) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这个题打的时候没写出来,脑子抽了,很久没用栈写过题了,所以非常sb。思路非常简单,就是当栈不为空时,匹配输入的元素和栈顶,如果匹配了就弹出栈顶,不然就加入栈顶。最后如果栈区元素不为空,则不匹配。 三、代码实现 1 #include "bits/stdc++.h" 2 us 阅读全文
posted @ 2022-03-15 15:09 scannerkk 阅读(196) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 简单贪心问题,先根据他的右端点从小到大排序,再根据左端点从小到大排序。最后开始遍历寻找答案,如果后一个的左端点大于等于前一个的右端点答案就加一,因为没有相交的地方,所以后面的点一定不会与前一个点相交。 三、代码实现 1 #include "bits/stdc++.h" 2 阅读全文
posted @ 2022-03-15 15:06 scannerkk 阅读(38) 评论(0) 推荐(0) 编辑
摘要:一、学习进度 1、上周独自配完了JAVA的环境,学习了Java的基本语法。 2、补完了所有需要补的题,打了两场CF 3、打了三场PTA天梯赛,排名不是很好 二、总结 上周完成了一部分任务,但是没有达到自己的要求,CF还是没有在场上做出来第三题,但是补题的时候做出来了。天梯赛容易卡题,基础知识还不是很 阅读全文
posted @ 2022-03-14 10:30 scannerkk 阅读(27) 评论(0) 推荐(0) 编辑
摘要:解题思路 很容易看出来这两个操作最后的赢者一定是2^n - 1,故直接输出2^n - 1就是答案 代码实现 1 #include "bits/stdc++.h" 2 #define PII pair<int,int> 3 #define rep(i,z,n) for(int i = z;i <= n 阅读全文
posted @ 2022-03-12 13:07 scannerkk 阅读(17) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 利用map把每一次该层所对应的数值的各个位置存进去,然后进行dfs调用,当发现到了第n - 1层的话就可以比较一下答案了,需要再加上一个剪枝操作,就是当当前的步数已经比答案的步数相等,或者已经大于答案的步数时,再搜下去已经没有必要了。 三、代码实现 1 #include 阅读全文
posted @ 2022-03-10 21:59 scannerkk 阅读(33) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 弄个string的栈,把这些全部存进栈,然后从栈顶一直往下走,碰到两个数字和一个操作符就进行一次操作,再入栈就行。(注意除号和减号不要写反了,不然跟我一样调一个小时) 三、代码实现 1 #include "bits/stdc++.h" 2 #define PII pair 阅读全文
posted @ 2022-03-10 21:56 scannerkk 阅读(81) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 kruscal模板题 三、代码实现 1 #include "bits/stdc++.h" 2 #define PII pair<int,int> 3 #define rep(i,z,n) for(int i = z;i <= n; i++) 4 #define per(i 阅读全文
posted @ 2022-03-10 21:51 scannerkk 阅读(234) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 这题是经典的bfs题,但是因为这个守卫每次都会多用掉1个时间,但是我们bfs每次只会扩展一步,所以就会提前到达终点,但是不是最优解的情况 比如说下面这种情况 我们都知道两点之间直线最短。但是这个直线上的士兵这么多,最后花费的时间可能会比走弯道更多。所以我们的解决方法是,设 阅读全文
posted @ 2022-03-10 21:47 scannerkk 阅读(38) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 mp模板题,注意输入即可 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 map <string,string> mp; 4 int main() 5 { 6 string a,b; 7 while(1 阅读全文
posted @ 2022-03-10 21:36 scannerkk 阅读(55) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 首先想到的是dfs进行逐个遍历,但是会有两个错 第一个:如果出现不能整除的情况,那么答案就会丢失,因此我们需要设置一个精度,在这个范围内的答案我们都要去接受他。 第二个:如果出现(a + b)* (c + d) == 24的这种情况,我们的dfs逐个遍历就不能做到这种,因 阅读全文
posted @ 2022-03-10 21:30 scannerkk 阅读(255) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 首先利用string把整个字符串读入 然后用逗号进行分隔成三个字符串,然后用find和rfind函数解决即可。 三、代码实现 1 #include "bits/stdc++.h" 2 using namespace std; 3 int main() 4 { 5 stri 阅读全文
posted @ 2022-03-10 21:24 scannerkk 阅读(244) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 简单dp,dp数组的含义为前i个数的最长上升子序列,因为这里的数据范围很小,故不需要二分进行优化,最后扫一遍整个数组的最大值就是答案。 三、代码实现 1 #include "bits/stdc++.h" 2 #define PII pair<int,int> 3 #def 阅读全文
posted @ 2022-03-10 21:20 scannerkk 阅读(97) 评论(0) 推荐(0) 编辑
摘要:一、题目描述 二、解题思路 简单暴力解即可以,当然可以在if条件出进行优化,if这个数能被2整除一定不是素数,然后再是判断是否是回文,再判断是否是素数,这样能最大减小常数。 三、代码实现 1 #include "bits/stdc++.h" 2 #define PII pair<int,int> 3 阅读全文
posted @ 2022-03-10 21:17 scannerkk 阅读(429) 评论(0) 推荐(0) 编辑
摘要:一、题目分析 解题思路:分析可知,每次operation都会把相邻的两个字符消掉,又因为字符串的长度是奇数,所以一定会把偶的消掉。故如果目标字符出现在奇数位置,即可通过接下来的操作消掉其他字符,使这个字符串成为目标字符。 代码实现: 1 #include "bits/stdc++.h" 2 #def 阅读全文
posted @ 2022-03-09 18:43 scannerkk 阅读(29) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示