
解题报告
文章平均质量分 79
stormjing7
这个作者很懒,什么都没留下…
展开
-
【CCF-CSP】201403-2 窗口(模拟)
【CCF-CSP】201403-2 窗口题目先给出 n 个窗口(窗口的左边范围),之后有 m 次点击(即一个坐标),每次点击输出当前坐标最顶层的窗口序号,同时将当前窗口移动到最顶层。分析用链表存窗口的优先级,每次点击按照优先级遍历所有窗口,看自己在哪个窗口的范围,并将找到的窗口移动到链表的前端。#include <bits/stdc++.h>using namespace ...原创 2020-04-17 21:15:21 · 304 阅读 · 0 评论 -
【CCF-CSP】201403-1 相反数(模拟)
#include <bits/stdc++.h>using namespace std;#define d(x) cout<<x<<endltypedef long long ll;const int INF = 0x3f3f3f3f;const int N = 2e3 + 10;int n, ans, num;int a[N], b[N];...原创 2020-04-17 21:11:16 · 255 阅读 · 0 评论 -
【CCF-CSP】201312-5 I’m stuck!(暴力bfs)
【CCF-CSP】201312-5 I’m stuck!题目给一个迷宫,50 * 50,S起点 T终点,每种符号代表下一步能走的方向,问满足以下条件的格子数:能从S出发到达从当前格子出发到达不了 T。分析迷宫很小,从一个点开始 BFS 最多 50 * 50,直接按照题目意思暴力 BFS 即可。先找从 S 出发能够到达的点,再 BFS 检验这个点是否满足第二个条件。O(50 * 5...原创 2020-04-02 11:48:07 · 500 阅读 · 0 评论 -
【CCF-CSP】201312-4 有趣的数 (划分状态dp)
【CCF-CSP】201312-4 有趣的数题目给一个数 n,求长度为 n 且满足一下条件的数字串的个数,结果取模。只包含 0, 1, 2, 3,且必须包含0 不作为开头所有 0 在 所有 1 前面,所有 2 在所有 3 前面分析遇到这样的题,肯定要先写几项,观察规律。可以看出 2 一定开头,因为数字 1、3都有限制,而 0 又不能作为开头。不过好像没什么用。在写规律的时候发现...原创 2020-02-22 23:14:27 · 406 阅读 · 1 评论 -
【CCF-CSP】201312-3 最大的矩形(单调栈)
【CCF-CSP】201312-3 最大的矩形题目给 n 个数,代表 n 个矩形的高度,将 n 个矩形平放,求能剪出的最大矩形的面积。n < 1e3。分析这题跟 POJ-2559 一样,不过数据很水,暴力也行。用单调栈可以达到 O(n) 的做法。对于每个数,找到向左向右第一个比当前数小的数的位置,就可以确定包含当前数的矩形的最大宽度,而高度即是当前数的值。#include &...原创 2020-02-21 18:37:46 · 521 阅读 · 1 评论 -
【CCF-CSP】201312-2 ISBN号码(模拟)
【CCF-CSP】201312-2 ISBN号码题目给出一个字符串代表 ISBN 号,按题目给出公式检查最后一个校验位是否正确,正确输出 “Right”, 反之输出正确 ISBN 号。分析#include <bits/stdc++.h>using namespace std;#define d(x) cout<<x<<endltypedef lo...原创 2020-02-21 17:33:25 · 311 阅读 · 0 评论 -
【CCF-CSP】201312-1 出现次数最多的数(模拟)
【CCF-CSP】201312-1 出现次数最多的数题目给 n 个数,求出现次数最多且值最小的数字。分析#include <bits/stdc++.h>using namespace std;#define d(x) cout<<x<<endltypedef long long ll;const int INF = 0x3f3f3f3f;co...原创 2020-02-21 17:08:20 · 224 阅读 · 0 评论 -
【PAT 甲级】1011 World Cup Betting (20分)(模拟)
1011 World Cup Betting (20分)题目有三场比赛,每场比赛都有三种结果 W-win,T-tie,L-lose,每种结果有一定的赔率,分别输出每场比赛赔率最大的结果,并输出按照题中公式输出最大利润。分析甲级题目不难,都是些模拟题,就是英语看的太捉急了【看不懂。。】#include <bits/stdc++.h>using namespace std;#...原创 2020-02-17 23:17:34 · 305 阅读 · 0 评论 -
【PAT 甲级】1010 Radix (25分)(二分)
1010 Radix (25分)题目字符串形式给出两个数 n1, n2,告诉其中一个数的进制 radix,要使两个数相等,求另外一个数的进制的最小取值,如果无法满足输出 “Impossible”。分析进制越大,数值越大,对于另外一个数二分找进制即可。上界,给出进制数 n1 的数值;下界,n2 中出现的最大的数 + 1。特殊情况,两个数为 0 0,输出 1。注意二分时 long long...原创 2020-02-17 14:31:50 · 348 阅读 · 0 评论 -
【PAT 甲级】1009 Product of Polynomials (25分)(模拟)
1009 Product of Polynomials (25分)题目多项式相乘,输入有两行,分别代表两个多项式的指数 exponent,和系数 coefficient。分析按题目模拟,两个循环。注意系数不为零的部分。#include <bits/stdc++.h>using namespace std;#define db(x) cout<<x<<...原创 2020-01-31 15:01:38 · 235 阅读 · 0 评论 -
【PAT 甲级】1008 Elevator (20分)(模拟)
1008 Elevator (20分)题目电梯开始在 0 层,给出一个序列,代表电梯要到达的顺序,上一层花费 6,下一层花费 4,每层停 5,计算总时间。分析直接模拟即可,#include <bits/stdc++.h>using namespace std;#define db(x) cout<<x<<endltypedef long lon...原创 2020-01-30 17:52:02 · 244 阅读 · 0 评论 -
【PAT 甲级】1007 Maximum Subsequence Sum (25分) (线性DP)
1007 Maximum Subsequence Sum (25分)题目求序列的最大连续子序列和。序列长度不超过 1e4。分析经典 DP 问题,原创 2020-01-29 21:22:30 · 239 阅读 · 0 评论 -
【PAT 甲级】1006 Sign In and Sign Out (25分) (模拟)
1006 Sign In and Sign Out (25分)题目给出每个人来和走的时间(时:分:秒),输出最早来和最晚走的人的名字。分析直接根据题意模拟即可。写两个比较函数分别以来和走的时间排个序。#include <bits/stdc++.h>using namespace std;#define db(x) cout<<x<<endlty...原创 2020-01-29 20:29:37 · 246 阅读 · 0 评论 -
【PAT 甲级】1005 Spell It Right (20分)(水)
1005 Spell It Right (20分)题目给一个 100 位以内的数,计算所有数字之和,并将结果的每一位用英文表示。分析直接模拟即可,注意特判 0。#include <bits/stdc++.h>using namespace std;#define db(x) cout<<x<<endltypedef long long ll;...原创 2020-01-28 20:36:50 · 285 阅读 · 0 评论 -
【PAT 甲级】1004 Counting Leaves (30分)(dfs水)
1004 Counting Leaves (30分)题目给一颗节点数不超过 100 的树,求每一层的叶子节点的个数。分析建树之后记录每个节点有无孩子,之后 dfs 一下记录每个节点在第几层。将信息归总统计一下即可得出每层叶子节点数。#include <bits/stdc++.h>using namespace std;#define db(x) cout<<x...原创 2020-01-28 20:13:42 · 190 阅读 · 0 评论 -
【PAT 甲级】1003 Emergency (25分)(dfs + STL)
1003 Emergency (25分)题目给一个顶点数不超过 500 的图,每个顶点有权值,边也有权值。给定起点和终点,求边权值最短的路径集合(也就是说最短的路径不止一条,而且每条最短路径对应一个顶点权值和),输出这个集合的路径个数,以及集合中顶点和的最大值。分析题目在求最短路径的基础上,还增加了每条路径对应的顶点权值和。所以可以用 dfs 求出所有最短路径,并将对应的权值和放入到 m...原创 2020-01-27 18:01:20 · 302 阅读 · 0 评论 -
【PAT 甲级】1002 A+B for Polynomials (25分)(map)
1002 A+B for Polynomials (25分)题目给出两个多项式的系数和指数,求相加后的多项式系数和指数。分析用 map 存系数和指数的对应关系,将系数加到相同的指数里面即可。注意只需要输出不为零的项。#include <bits/stdc++.h>using namespace std;#define db(x) cout<<x<<...原创 2020-01-15 19:59:26 · 321 阅读 · 0 评论 -
【PAT 甲级】 1001 A+B Format (20分)(水)
1001 A+B Format题目给两个数 a, b,输出 a + b 的和,但是输出格式有要求,每三个一组用逗号分开。分析先判断正负,模拟即可。#include <bits/stdc++.h>using namespace std;#define db(x) cout<<x<<endltypedef long long ll;const i...原创 2020-01-15 19:12:19 · 208 阅读 · 0 评论 -
AcWing 278. 数字组合(简单背包问题)
AcWing 278. 数字组合题目给你 n 个数,让你从中选出一些数,使其和为 m,问一共有多少方案?n <= 100, m <= 10000分析简单的背包问题。看成背包容量为 m,n 个物品。①:状态表示集合:dp[i][j]dp[i][j]dp[i][j] 表示用前 i 个数,和为 j 的所有方案的集合属性:方案的数量②:状态转移根据最后一位来划分集合,选...原创 2020-01-10 08:50:49 · 452 阅读 · 0 评论 -
AcWing 277. 饼干 (特殊的集合划分方式)
AcWing 277. 饼干题目有 m 块饼干分给 n 个人,要求每人至少分一块。同时每一个人有一个怨气值 a[i],假设有 g[i] 个人比他分到的饼干多,那么这个人产生的怨气就是 a[i] * g[i]。问最后怎么分配饼干使得怨气值总和最小,输出任意具体方案?分析所有分配方案的集合太大了。考虑缩小最优解集合。首先肯定要分配的尽可能一样,这样就不会产生怨气。如果不可避免的产生怨气,那么...原创 2019-11-26 20:32:00 · 446 阅读 · 0 评论 -
AcWing 276. I-区域(状态机 dp + Hard)
AcWing 276. I-区域题目给出 n 行 m 列矩阵,和一个参数 k,求 k 个格子组成的凸联通块最大权值和。(凸连通块就是形状是凸性的)。n < 30, m <分析此处凸包定义不严谨,可以直接理解成连续的若干行,每行的左端点列号先递减、后递增,右端点列号先递增、后递减。(这里的递增递减都是不严格的)那么这样就可以从每一行入手,考虑每行选取的起点和终点。①: 状态...原创 2019-11-14 22:39:50 · 273 阅读 · 2 评论 -
AcWing 275. 传纸条 (dp 状态优化)
AcWing 275. 传纸条题目给一个 m 行 n 列矩阵,当前位置在(1,1),需要走到(m,n)然后再走回来,走到一个点可以拿走当前的值,但是每个点只能走一次,求最后能得到的最大值。分析如果只有一条路线就很简单了。现在要回去,可以看成同时从(1,1)走两条不相交的路线,状态表示可以用 dp[x1][y1][x2][y2]dp[x1][y1][x2][y2]dp[x1][y1][x2]...原创 2019-11-14 19:31:04 · 263 阅读 · 0 评论 -
AcWing 274. 移动服务 (递推三种出边dp)
AcWing 274. 移动服务题目在平面上有 L 个点,有三个服务员在初始给出的三个点上,并且题目给出平面上点两两之间的距离。随后有 n 个请求,每发出一个请求,需要派一个服务员去(只能去一个),花费就是距离。问满足所有请求的最小花费。L < 200, n < 1000分析首先爆搜肯定能出结果,对于每个请求枚举三个服务员。思考如何用动态规划做:①: 状态表示(经验)集...原创 2019-11-13 22:12:16 · 259 阅读 · 0 评论 -
AcWing 273. 分级 (序列型DP + 前缀最值优化)
AcWing 273. 分级题目给一个序列 A,长度 n < 3e3。你需要构造出序列 B,且序列 B只能不增或者不降。求 S 的最小值。S=∑i=1N∣Ai−Bi∣S=\sum_{i=1}^{N}\left|A_{i}-B_{i}\right|S=i=1∑N∣Ai−Bi∣分析题目关键(性质):一定存在一组最优解 B,B 序列的每一个元素都在 A 序列中出现过。其实自己画几个...原创 2019-11-12 21:06:45 · 407 阅读 · 0 评论 -
AcWing 272. 最长公共上升子序列 (线性DP + 前缀最值优化)
AcWing 272. 最长公共上升子序列题目名字就是题目,给出两个序列A,B,求最长公共上升子序列。(n < 3e3)分析线性dp。①: 状态表示(经验)集合:dp[i][j]dp[i][j]dp[i][j] 表示所有在 A[1..i]A[1..i]A[1..i] 和 b[1..j]b[1..j]b[1..j] 中出现过,且最后以 b[j]b[j]b[j] 结尾的最长公共上升...原创 2019-11-12 19:44:01 · 243 阅读 · 0 评论 -
Acwing 271. 杨老师的照相排列(线性dp求方案数)
Acwing 271. 杨老师的照相排列题目分析https://www.bilibili.com/video/av69678938根据闫氏 dp 分析法,原创 2019-11-11 16:41:37 · 398 阅读 · 0 评论 -
51nod 1880 单词究错(模拟)
51nod 1880 单词究错题目:给你 n 个字符串当词典, 还有 m 个字符串当作查询,每次查询输出字典中与当前询问字符串差一个字符不一样的字符串(增加,减少,修改)。分析:模拟水题,直接暴力枚举即可。只不过做这个题时 oj 一直报错,最后才发现有个返回值为 int 的函数没有写返回语句导致 wa。记录一下。#include <bits/stdc++.h>using n...原创 2019-11-07 21:55:35 · 258 阅读 · 0 评论 -
LeetCode #12 双周赛题解(水 + 水 + 树形DP + 区间dp)
LeetCode #12 双周赛5097. 力扣排行榜题目:设计一个排行榜,满足插入、前缀和、排序。分析:数据范围很小,用不到 logn 的数据结构,直接暴力即可。用 mapmapmap 存编号对应成绩,每次查询暴力排序找前 k 和。class Leaderboard {public: map<int, int> mp; Leaderboard() {} ...原创 2019-11-03 21:44:17 · 311 阅读 · 0 评论 -
LeetCode #161 场周赛题解(思维 + 水 + 模拟 + 裴蜀定理)
LeetCode #161 场周赛(感觉 LeetCode 上的题不需要考虑复杂度,能想出来做法就能过5247. 交换字符使得字符串相同题目:给你两个只包含 ‘x’, ‘y’ 的字符串 s1,s2s1, s2s1,s2 ,每次操作可以交换两个分别位于两个字符串中的字符,问最少交换几次可以使字符串变为完全相同。分析:首先两个字符串 ‘x’,‘y’ 总数不是偶数,都是不行的。只关心字符串不...原创 2019-11-03 16:30:47 · 271 阅读 · 0 评论 -
51nod 1091 线段的重叠 (贪心)
51nod 1091 线段的重叠题目给出 nnn 条线段,问任意两条线段最大重叠区间长度。n<5e4n < 5e4n<5e4分析贪心,先按起点升序,终点降序排序,之后扫一遍所有区间。由于按起点升序,所以后面的区间起点一定小于前面的,因此对于当前区间,维护出现过的最远右端点 pospospos,考虑吧 pospospos 与当前区间的相对位置跟新答案即可。#include...原创 2019-11-01 18:45:56 · 215 阅读 · 0 评论 -
LeetCode #160 周赛题解(暴力 + 格雷码 + DFS + 矩阵最小正方形剖分)
LeetCode #160 周赛leetcode 题目不同于其他 oj 是黑盒测试,要提交完整可运行代码,而是完善封装好题目给出的函数即可1. 找出给定方程的正整数解题目:给出函数 f(x,y)f(x, y)f(x,y),和整数 zzz。求所有满足 f(x,y)=zf(x, y) = zf(x,y)=z 的 (x,y)(x, y)(x,y)。分析:由于 x,yx, yx,y 范围 1e3...原创 2019-11-01 15:18:45 · 387 阅读 · 0 评论 -
Comet OJ - Contest #13 C2 佛御石之钵 -不碎的意志 -(并查集 + 技巧)
Comet OJ - Contest #13 C2题意给出一个 n 行 m 列的 01 矩阵。有 q 次操作,每次操作选取一个子矩阵,将子矩阵变为全 1,每次操作后输出当前连通块个数,(上下左右算联通)。n, m < 1e4; q < 3e4.分析首先,==只有发生 0->1 的格子,才会导致连通块数目变化。==也就是说,对于每次操作只关注子矩阵里原本是 0 的格子,...原创 2019-10-28 17:01:23 · 272 阅读 · 2 评论 -
牛客练习赛53 C. 富豪凯匹配串 (bitset 优化 + 位运算)
C. 富豪凯匹配串题目分析代码#include <bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3f#define ll long long#define fuck(x) cout<<x<<endlconst int N = 1e3 + 10;const ll mod = 1e9 ...原创 2019-10-12 20:16:00 · 180 阅读 · 0 评论 -
SPOJ AMR11A Magic Grid(dp)
题目链接 : http://www.spoj.com/problems/AMR11A/题目大意:给出一个r * c大小的方格二维图,走到每个方格上需要加上上面的值,从左上角开始走,规定只能往下右两个方向,要求全程值都大于零,求最开始最小值。分析:倒着dp,开一个二维数组dp[r][c],dp[i][j]表示走到i, j位置所需最小值,可以得到初等关系:...原创 2018-07-09 20:37:50 · 295 阅读 · 0 评论 -
HDU-1277全文检索 (字典树)
题目链接:acm.hdu.edu.cn/showproblem.php?pid=1277题目大意:给出一个信息流文件由数字组成,然后再给出若干关键字,检索那些关键字出现过。分析:用字典树,将关键字序列构造为字典树,然后用信息流文件当做模式串,迭代模式串的每一位,并在字典树中查找是否存在子串,存在就输出.(注意:要检查关键字是否重复输出)代码...原创 2018-07-10 22:44:47 · 434 阅读 · 0 评论 -
牛客练习赛22-C简单瞎搞题(bitset优化dp)
题目链接:https://www.nowcoder.com/acm/contest/132/C题目描述 一共有 n个数,第 i 个数是 xi xi 可以取 [li , ri] 中任意的一个值。 设 ,求 S 种类数。输入描述:第一行一个数 n。 然后 n 行,每行两个数表示 li,ri。输出描述:输出一行一个数表示答案。...原创 2018-07-14 15:41:16 · 606 阅读 · 0 评论 -
HDU-5532 Almost Sorted Array (最长上升子序列 or 模拟)
传送门Almost Sorted ArrayTime Limit: 4000/2000 MS (Java/Others)Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 7512Accepted Submission(s): 1763Problem Description...原创 2018-07-15 10:45:30 · 233 阅读 · 0 评论 -
51nod 1049 最大子段和
1049最大子段和基准时间限制:1秒 空间限制:131072KB 分值:0难度:基础题收藏关注N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。Input&l...原创 2018-10-15 22:03:53 · 152 阅读 · 0 评论 -
51nod-1007正整数分组(简单dp)
传送门1007 正整数分组基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注将一堆正整数分为2组,要求2组的和相差最小。例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。Input第1行:一个数N,N为正整数的数量。第2 - N+1行,N个正整数。(N &amp;amp;lt;= 100, 所有正整数...原创 2018-10-23 21:41:11 · 261 阅读 · 0 评论 -
POJ-1321棋盘问题(dfs)
图论dfs入门题,纯暴力,题目要求在所给棋盘中,将棋子放入‘#’的位置,且同一行同一列只能放置一个棋子。注意dfs中递归的方式。分别以每行棋子开始进行dfs遍历,最后将结果相加。代码如下:#include &amp;lt;iostream&amp;gt;#include &amp;lt;cstring&amp;gt;#include &amp;lt;string&amp;gt;#include &原创 2018-11-15 17:44:44 · 189 阅读 · 0 评论