
题解
文章平均质量分 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 · 360 阅读 · 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 · 337 阅读 · 0 评论 -
题解 P2575 高手过招 (二进制压缩+记忆化sg/模型转换阶梯nim)
题目源自洛谷;题目大意:n*20的棋盘,每行有若干个棋子。对于一个棋子,能将它向右移动一格,如果右边有棋子,则向右跳到第一个空格,如果右边没有空格,则不能移动这个棋子,如果所有棋子都不能移动,那么将输掉这场比赛。解题思路:思路1:暴力sg根据题意可知每行进行操作都是独立的,所以整个游戏又可分为n个子游戏,这是sg定理的第一步。下一步考虑每个子游戏的状态。可知当棋子紧邻着排在左边的时候为必败态,而其他状态的后继可以通过枚举每个棋子向右走一步得到。这样通过sg解题就差最后一步如何表示状态了,原创 2021-08-06 22:13:14 · 250 阅读 · 0 评论 -
题解 计算几何刷题记录
题单源自洛谷:16408 计算几何 - 从入门到跳楼:入门:P1652 圆:题意:给n个不相交的圆,求从Point1到Point2一条曲线最少穿越多少个圆。思路:n个圆都不相交,且连接两点的曲线可以任意弯曲延展,则除了只包括point1或者只包括point2的圆不能避开,其他都可以避开(同时包括point1和point2不会被影响)。代码:#include<bits/stdc++.h>#define eps 1e-6using namespace std;struct p原创 2021-05-12 20:50:00 · 402 阅读 · 0 评论 -
学习记录 动态规划实时更新
写在读前:此博客旨在系统的总结笔者学习动态规划问题的过程,仅当学习笔记供读者使用。Part1 前景知识:面向问题:多阶段决策问题。前提条件:<1. 最优化原理:可以划分为若干有限个子结构,每个子结构的最优状态构成最终的问题最优解;<2. 无后效性原则:在当前状态进行动作不会影响已经形成的最优子结构。基本概念:<1. 阶段:问题的子结构; 阶段变量:阶段的具象化表示。<2. 状态:一个阶段具有若原创 2021-05-06 20:18:32 · 975 阅读 · 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 · 232 阅读 · 0 评论 -
题解 2020级HAUT新生周赛(二)
题解 2020级HAUT新生周赛(二)原创 2020-12-08 22:00:57 · 3446 阅读 · 6 评论 -
题解 NOIP提高组2003 神经网络(拓扑排序+向前星)
写在读前:坑点略多,但数据量较小;此题解仅代表笔者的一己之见,若有所偏差或失误请读者多多指出并加以海涵;若您有更好的理解及方法欢迎在评论区分享高见共同讨论。先上题目地址请移步洛谷;题目(题目截图用于学习):输入:5 61 01 00 10 10 11 3 11 4 11 5 12 3 12 4 12 5 1输出:3 14 15 1题目分析与算法设计:先说题目中的Ci和Ui,Ci与Ui包括边权都可以为0为负,但值得一提的是题目中所给的“输入层”一开始就处原创 2020-09-18 01:39:54 · 448 阅读 · 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 · 245 阅读 · 0 评论 -
题解 02-线性结构4 Pop Sequence(mooc浙大数据结构)
原题目地址请移步此处(习题集已关闭,无法提交):点击此处题目:Input:5 7 51 2 3 4 5 6 73 2 1 7 5 6 47 6 5 4 3 2 15 6 4 3 7 2 11 7 6 5 4 3 2Output:YESNONOYESNO题目分析:掌握了栈的原理之后用数组模拟即可;代码:#include<stack>#include<cstdio>#include<cstring>using namespace原创 2020-09-12 11:01:30 · 430 阅读 · 0 评论 -
题解 02-线性结构3 Reversing Linked List(mooc浙大数据结构)
原题目地址请移步此处(习题集已关闭,无法提交):点击此处题目:题目大意:给定一个链表L,划分为每段有K个单位的若干部分,将每部分独立反转,若末尾元素构不成一部分,则不做处理;Input:00100 6 400000 4 9999900100 1 1230968237 6 -133218 3 0000099999 5 6823712309 2 33218Output:00000 4 3321833218 3 1230912309 2 0010000100 1 999999原创 2020-09-12 10:33:40 · 301 阅读 · 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 · 418 阅读 · 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 · 450 阅读 · 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 · 305 阅读 · 0 评论 -
题解 Team Queue(UVa540)紫书P118queue的应用
先上Vjudeg地址:点击这里;题目:有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友身后。如果没有任何一个队友排队,则他会排到长队的队尾。输入每个团队中所有队员的编号,要求支持如下3种指令(前两种指令可以穿插进行)。ENQUEUE:编号为X的人进入长队。DEQUEUE:长队队首出队。STOP:停止模拟。对于每个DEQUEUE指令,输出出队的人的编号。输入:输入文件中有一组或多组测试数据。每组测试数据开始有t个团队。下面t行,每行的第一个原创 2020-07-03 13:16:42 · 423 阅读 · 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 · 277 阅读 · 0 评论 -
题解 Ananagrams(UVa156)紫书P113map的应用
紫书P113;set的应用;UVa146 Ananagrams;Vjudge题目链接请点击此处题目大意:输入一些单词(输入包含若干行,每行不超过80个字符,由一些单词组成。单词由不超过20个大小写字母组成),找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本的另外一个单词。在判断是否满足条件时,字母不分大小写,但在输出时应保留输入的大小写,按字典序排列。Sample Inputladder came tape soon leader acme RIDE lone Dreis peat原创 2020-06-24 14:20:06 · 306 阅读 · 0 评论 -
题解 Andy s First Dictionary(UVa10815)紫书P112set的应用
紫书P112;set的应用;Andy’s First Dictionary(UVa10815);Vjudge题目地址请移步此处题目大意:输入一个文本(最多500行,每行最多200个字符,以EOF结尾),找出所有不同的单词,按照字典序从小到大输出以小写输出(一行一单词)。Sample InputAdventures in DisneylandTwo blondes were going to Disneyland when they came to a fork in theroad. The原创 2020-06-23 03:24:25 · 432 阅读 · 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 · 321 阅读 · 0 评论 -
题解 Pie(POJ3122)超详细易懂的二分入门
POJ3122 Pie 二分入门题目详细注释题解。原创 2020-02-02 03:27:30 · 1017 阅读 · 1 评论