
题解
文章平均质量分 81
Love_Jacques
在二次元和三次元夹缝中晃荡的蒟蒻
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
题解 P3299 保护出题人 (斜率转化凸包+三分)
题目源自洛谷; 题目大意: 模拟植物大战僵尸的一排,可以理解成豌豆射手对第一个僵尸发射激光,造成持续伤害并且第一个僵尸死后第二个僵尸立马收到伤害。 然后不同的是,有n个回合,每回合在僵尸队列前端会添加一个僵尸,之后的僵尸会往后移动d个距离,n个回合单独计算。求n个回合杀死所有僵尸的最小攻击力(hp/s)。 题目讲解: 首先模拟一下样例,贪心的求:在第i个回合,能杀死前j个僵尸的攻击力,取最大值;数学表达就是max(sumi−sumj−1xi+(i−j)∗d)max(\frac{sum_i-sum_{j-1}原创 2021-10-21 20:40:33 · 387 阅读 · 3 评论 -
题解 P2638 安全系统 (dp递推/组合计数)
题目源自洛谷; 题目大意: 原版题目太阴间了,直接把人误导+过样例,然后一交全wa掉。。。。 n个箱子,a个百球,b个黑球,求装箱方案数,重点是球可以有剩余不装的,箱子可以是空的。 解题思路: <1. 递推 状态表示:f(i,j,k)表示前i个箱子装j个白球,k个黑球的方案数。 状态转移: 不同状态之间的联系就是后面的状态比前面的状态多了cnt1个白球,cnt2个黑球,所以转移时我们要枚举i,j,k,cnt1,cnt2五个变量(捂脸qaq)。 上一份用了高精的代码: #include <bits原创 2021-09-09 22:16:35 · 366 阅读 · 0 评论 -
题解 P2575 高手过招 (二进制压缩+记忆化sg/模型转换阶梯nim)
题目源自洛谷; 题目大意: n*20的棋盘,每行有若干个棋子。对于一个棋子,能将它向右移动一格,如果右边有棋子,则向右跳到第一个空格,如果右边没有空格,则不能移动这个棋子,如果所有棋子都不能移动,那么将输掉这场比赛。 解题思路: 思路1:暴力sg 根据题意可知每行进行操作都是独立的,所以整个游戏又可分为n个子游戏,这是sg定理的第一步。 下一步考虑每个子游戏的状态。可知当棋子紧邻着排在左边的时候为必败态,而其他状态的后继可以通过枚举每个棋子向右走一步得到。这样通过sg解题就差最后一步如何表示状态了,原创 2021-08-06 22:13:14 · 265 阅读 · 0 评论 -
题解 计算几何刷题记录
题单源自洛谷:16408 计算几何 - 从入门到跳楼: 入门: P1652 圆: 题意:给n个不相交的圆,求从Point1到Point2一条曲线最少穿越多少个圆。 思路:n个圆都不相交,且连接两点的曲线可以任意弯曲延展,则除了只包括point1或者只包括point2的圆不能避开,其他都可以避开(同时包括point1和point2不会被影响)。 代码: #include<bits/stdc++.h> #define eps 1e-6 using namespace std; struct p原创 2021-05-12 20:50:00 · 419 阅读 · 0 评论 -
学习记录 动态规划实时更新
写在读前: 此博客旨在系统的总结笔者学习动态规划问题的过程,仅当学习笔记供读者使用。 Part1 前景知识: 面向问题:多阶段决策问题。 前提条件: <1. 最优化原理:可以划分为若干有限个子结构,每个子结构的最优状态构成最终的问题最优解; <2. 无后效性原则:在当前状态进行动作不会影响已经形成的最优子结构。 基本概念: <1. 阶段:问题的子结构; 阶段变量:阶段的具象化表示。 <2. 状态:一个阶段具有若原创 2021-05-06 20:18:32 · 1030 阅读 · 0 评论 -
题解 F-Palindrome 出自第十八届浙大城市学院程序设计竞赛
扫了一眼数据,长度和小于1e4,很快啊,一个暴力代码出来了。 梦幻云端彩虹桥上的zcs仙女说过:“Think twice, code once. And debug for the rest of your life.” 由于对hash的理解不透彻,直到赛后才过了这题(痛哭)。 思路: 从最朴素的枚举算法入手,枚举两个位置的复杂度为O(n) ,那么就必须做到在O(1) 的复杂度内判断是否能构成回文串。而判断回文可以也使用 通过判断字符串正序逆序是否相等 的途径,于是自然而然就想到了*O(1)*判断字符串是否原创 2021-03-21 19:44:21 · 244 阅读 · 0 评论 -
题解 2020级HAUT新生周赛(二)
题解 2020级HAUT新生周赛(二)原创 2020-12-08 22:00:57 · 3478 阅读 · 6 评论 -
题解 NOIP提高组2003 神经网络(拓扑排序+向前星)
写在读前:坑点略多,但数据量较小; 此题解仅代表笔者的一己之见,若有所偏差或失误请读者多多指出并加以海涵; 若您有更好的理解及方法欢迎在评论区分享高见共同讨论。 先上题目地址请移步洛谷; 题目(题目截图用于学习): 输入: 5 6 1 0 1 0 0 1 0 1 0 1 1 3 1 1 4 1 1 5 1 2 3 1 2 4 1 2 5 1 输出: 3 1 4 1 5 1 题目分析与算法设计: 先说题目中的Ci和Ui,Ci与Ui包括边权都可以为0为负,但值得一提的是题目中所给的“输入层”一开始就处原创 2020-09-18 01:39:54 · 470 阅读 · 0 评论 -
题解 02-线性结构1 两个有序链表序列的合并(mooc浙大数据结构)
题目原地址请移步此处:点击此处 题目: 裁判测试样例: #include <stdio.h> #include <stdlib.h> typedef int ElementType; typedef struct Node *PtrToNode; struct Node { ElementType Data; PtrToNode Next; }; typedef PtrToNode List; List Read(); /* 细节在此不表 */ void P原创 2020-09-12 11:11:05 · 256 阅读 · 0 评论 -
题解 02-线性结构4 Pop Sequence(mooc浙大数据结构)
原题目地址请移步此处(习题集已关闭,无法提交):点击此处 题目: Input: 5 7 5 1 2 3 4 5 6 7 3 2 1 7 5 6 4 7 6 5 4 3 2 1 5 6 4 3 7 2 1 1 7 6 5 4 3 2 Output: YES NO NO YES NO 题目分析: 掌握了栈的原理之后用数组模拟即可; 代码: #include<stack> #include<cstdio> #include<cstring> using namespace原创 2020-09-12 11:01:30 · 440 阅读 · 0 评论 -
题解 02-线性结构3 Reversing Linked List(mooc浙大数据结构)
原题目地址请移步此处(习题集已关闭,无法提交):点击此处 题目: 题目大意: 给定一个链表L,划分为每段有K个单位的若干部分,将每部分独立反转,若末尾元素构不成一部分,则不做处理; Input: 00100 6 4 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 68237 12309 2 33218 Output: 00000 4 33218 33218 3 12309 12309 2 00100 00100 1 99999 9原创 2020-09-12 10:33:40 · 317 阅读 · 0 评论 -
题解 02-线性结构2 一元多项式的乘法与加法运算(mooc浙大数据结构)
原题目地址请移步此处(习题集已关闭,无法提交):点击此处 题目 题目分析 在课程内何钦铭老师讲解了用链表处理的方法,在此笔者提供一种完全用数组模拟的方法 其实是因为懒得写链表 纯暴力模拟,没什么好说的; 代码: #include<bits/stdc++.h> using namespace std; int base1[1005],base2[1005],n1,n2,len1,len2; int cul[100005],sum[100005],counter=0; int counter1=原创 2020-09-12 10:04:08 · 429 阅读 · 0 评论 -
题解 PTA数据结构习题集 01复杂度1、2 最大子列和问题的多解法与延申问题Maximum Subsequence Sum
题目: 输入: 输入第1行给出正整数K (≤100000);第2行给出K个整数,其间以空格分隔。 输出: 在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。 输入样例: 6 -2 11 -4 13 -5 -2 输出样例: 20 题目分析: 解法一:枚举; 枚举全部的子序列和,找出其中最大值;采用三重for循环,第一重循环确定子序列起点,第二重循环确定子序列终点,第三重循环计算子序列和。 复杂度O(n^3) 提交结果: 解法二:枚举; 解法一的改进版,采用二重循环枚举全部子序列和,在确定起原创 2020-07-11 00:45:25 · 469 阅读 · 0 评论 -
题解 Ugly Numbers (UVA136)紫书P120priority_queue的应用
Vjudge地址移步此处; 题目: 丑数是指不能被2,3,5以外的其他素数整除的数。把丑数从小到大排列起来,结果如下: 1,2,3,4,5,6,8,9,10,12,15…… 求第1500个丑数 无输入 输出:The 1500’th ugly number is x.(x代表数字); 题目分析: **数据结构:**利用具有自动排序功能的优先队列储存丑数; **算法设计:**暴力循环; **模块设计:**定义与预处理–初始化–计算–输出–return 0; 代码: #include<queue> #原创 2020-07-03 17:20:48 · 318 阅读 · 0 评论 -
题解 Team Queue(UVa540)紫书P118queue的应用
先上Vjudeg地址:点击这里; 题目: 有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友身后。如果没有任何一个队友排队,则他会排到长队的队尾。输入每个团队中所有队员的编号,要求支持如下3种指令(前两种指令可以穿插进行)。 ENQUEUE:编号为X的人进入长队。 DEQUEUE:长队队首出队。 STOP:停止模拟。 对于每个DEQUEUE指令,输出出队的人的编号。 输入: 输入文件中有一组或多组测试数据。 每组测试数据开始有t个团队。下面t行,每行的第一个原创 2020-07-03 13:16:42 · 433 阅读 · 0 评论 -
题解 The SetStack Computer(UVa12096)紫书P116STL的综合应用
先上Vjudge地址:点击这里 题目: 有一个专门为了集合运算而设计的“集合栈”计算机。该机器有一个开始为空的栈并且支持以下操作。 1.PUSH:空集“{}”入栈。 2.DUP:把当前栈顶元素复制一份后在入栈。 3.UNION:出栈两个集合,然后把二者的并集入栈。 4.INTERSECT:出栈两个集合,然后把二者的交集入栈。 5.ADD:出栈两个集合,然后把先出栈的集合加入到后出栈的集合中,把结果入栈。 例如,栈顶元素是A = { {},{{}} },下一个元素是B = { {}, {{{}}} },则:原创 2020-07-03 01:59:03 · 284 阅读 · 0 评论 -
题解 Ananagrams(UVa156)紫书P113map的应用
紫书P113;set的应用;UVa146 Ananagrams; Vjudge题目链接请点击此处 题目大意: 输入一些单词(输入包含若干行,每行不超过80个字符,由一些单词组成。单词由不超过20个大小写字母组成),找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本的另外一个单词。在判断是否满足条件时,字母不分大小写,但在输出时应保留输入的大小写,按字典序排列。 Sample Input ladder came tape soon leader acme RIDE lone Dreis peat原创 2020-06-24 14:20:06 · 313 阅读 · 0 评论 -
题解 Andy s First Dictionary(UVa10815)紫书P112set的应用
紫书P112;set的应用;Andy’s First Dictionary(UVa10815); Vjudge题目地址请移步此处 题目大意: 输入一个文本(最多500行,每行最多200个字符,以EOF结尾),找出所有不同的单词,按照字典序从小到大输出以小写输出(一行一单词)。 Sample Input Adventures in Disneyland Two blondes were going to Disneyland when they came to a fork in the road. The原创 2020-06-23 03:24:25 · 440 阅读 · 0 评论 -
题解 The Blocks Problem(UVa101)紫书P110vector的应用
紫书P110;vector的应用;UVa101 The Blocks Problem 原题目地址在这里 题目大意: 输入n,得到编号为0到n-1的木块,分别摆放在顺序排列编号为0到n-1的位置。现对这些木块进行操作,操作分为四种。 move a onto b:把木块a、b上的木块放回各自的原位,再把a放到b上; move a over b:把a上的木块放回各自的原位,再把a发到含b的堆上; pile a onto b:把b上的木块放回各自的原位,再把a连同a上的木块移到b上; pile a over b:原创 2020-06-22 22:54:33 · 333 阅读 · 0 评论 -
题解 Pie(POJ3122)超详细易懂的二分入门
POJ3122 Pie 二分入门题目详细注释题解。原创 2020-02-02 03:27:30 · 1057 阅读 · 1 评论