![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 54
丿繁年
一起来交流
展开
-
超级市场(并查集+贪心)
超级市场 POJ - 1456一家超市有一组产品在售。它为每个产品 x∈Prod 在截止日期 dx 内销售的每个产品赚取利润 px,该截止日期 dx 以从销售开始的时间单位的整数数来衡量。每件产品的销售时间恰好是一个单位。销售时间表是产品 Sell ≤ Prod 的有序子集,使得每个产品 x∈Sell 的销售,根据 Sell 的顺序,在截止日期 dx 之前或恰好在 dx 到期时完成。卖出计划的利润为 Profit(Sell)=Σ x∈Sell px。最佳销售时间表是具有最大利润的时间表。例如,考虑产品原创 2021-09-03 22:02:03 · 96 阅读 · 0 评论 -
食物链 (带权并查集+ %3 循环节)
食物链 POJ - 1182 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y",表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话原创 2021-09-03 17:29:55 · 228 阅读 · 0 评论 -
有多少答案是错误的(维护持续区间,带权并查集)
有多少答案是错误的 HDU - 3038 TT和FF是……朋友。呃…非常非常好的朋友-________-bFF是个坏孩子,他总是拉着TT跟他玩下面的游戏。这是一个非常单调的游戏。首先,TT 应该写下一个整数序列-_-!!(无聊)。然后,FF 可以从中选择一个连续的子序列(例如从第三个到第五个整数的子序列)。之后FF会问TT他选择的子序列的总和是多少。接下来,TT来回答FF的问题。然后,FF 可以重做这个过程。最后,FF 必须计算出整个整数序列。无聊无聊很无聊的游戏!!!TT根本不想玩FF。为了惩罚F原创 2021-09-03 17:14:12 · 154 阅读 · 0 评论 -
多少张桌子(判断部落数)
多少张桌子 HDU - 1213 今天是伊格内修斯的生日。他邀请了很多朋友。现在是晚餐时间。Ignatius 想知道他至少需要多少张桌子。你要注意,并不是所有的朋友都互相认识,所有的朋友都不想和陌生人呆在一起。这个问题的一个重要规则是,如果我告诉你 A 认识 B,B 认识 C,这意味着 A、B、C 彼此认识,所以他们可以留在一张桌子上。例如:如果我告诉你A认识B,B认识C,D认识E,那么A、B、C可以在一张桌子上,而D、E必须在另一张桌子上。所以伊格内修斯至少需要 2 张桌子。输入输入以整数 T(原创 2021-09-03 16:19:34 · 540 阅读 · 0 评论 -
嫌疑人(找是其他人否与x同一个部落)
嫌疑人 POJ - 1611严重急性呼吸系统综合症 (SARS) 是一种病因不明的非典型肺炎,于 2003 年 3 月中旬被确认为全球威胁。为了尽量减少向他人传播,最好的策略是将嫌疑人与他人分开。在 Not-Spreading-Your-Sickness University (NSYSU),有很多学生团体。同一个小组的学生经常互相交流,一个学生可以加入几个小组。为了防止SARS的可能传播,南中大收集了所有学生团体的成员名单,并在其标准操作程序(SOP)中制定了以下规则。一旦群组中的某个成员成为嫌疑原创 2021-09-03 16:02:15 · 63 阅读 · 0 评论 -
布局(牛的距离,约束差分)
布局 POJ - 3169和其他人一样,奶牛在排队喂食时喜欢靠近它们的朋友。FJ 有 N (2 <= N <= 1,000) 头奶牛,编号为 1…N 站在一条直线上等待喂食。奶牛以与编号相同的顺序站立,并且由于它们可能相当咄咄逼人,因此有可能两头或多头奶牛可以在完全相同的位置排成一排(也就是说,如果我们认为每头奶牛都位于在数轴上的某个坐标处,则有可能两头或多头奶牛共享相同的坐标)。有些奶牛彼此喜欢,并希望彼此保持一定的距离。有些人真的很讨厌对方,想要至少分开一定的距离。ML (1 <原创 2021-09-03 15:31:28 · 147 阅读 · 0 评论 -
图中的最短路径(复杂分层的图+虚拟层节点)
Nya图中的最短路径 HDU - 4725 这是一个非常简单的问题,您的任务只是计算 el camino mas corto en un grafico,以及 solo hay que cambiar un poco el algoritmo。如果您不理解本段中的一个词,请继续。Nya 图是具有“层”的无向图。图中的每个节点都属于一个层,共有N个节点。你可以从 x 层的任何节点移动到 x + 1 层的任何节点,成本为 C,因为道路是双向的,从 x + 1 层移动到 x 层也允许以相同的成本。此外,还原创 2021-08-28 20:40:18 · 237 阅读 · 0 评论 -
2021-08-26
萨格勒布的电车网络由许多交叉路口和连接其中一些的铁路组成。在每个十字路口都有一个开关指向从十字路口出来的轨道之一。当有轨电车进入交叉路口时,它只能按开关所指的方向离开。如果司机想走其他路,他/她必须手动改变开关。当驾驶员确实从交叉路口 A 开车到交叉路口 B 时,他/她会尝试选择能够最大限度地减少他/她必须手动更换开关的次数的路线。直接到达w设为0,其余分叉的w就设为1;编写一个程序,计算从交叉路口 A 行驶到交叉路口 B 所需的最少换道次数。输入输入的第一行包含整数 N、A 和 B,由单个空原创 2021-08-26 21:10:09 · 162 阅读 · 0 评论 -
昂贵的聘礼(有等级限制的最短路)
昂贵的聘礼 POJ - 1062 年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了就是说从皮袄到酋长只需要8000元,而自己直接到酋长则需要10000元。水晶球到酋长需要5000元。。"探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用原创 2021-08-26 19:11:17 · 79 阅读 · 0 评论 -
地铁 POJ - 2502
地铁你刚刚从一个安静的滑铁卢社区搬到了一个喧闹的大城市。不用每天骑自行车上学,您现在可以步行和乘坐地铁。因为您不想上课迟到,所以您想知道到学校需要多长时间。你以 10 公里/小时的速度行走。地铁以40公里/小时的速度行驶。假设你很幸运,只要你到达地铁站,就有一列火车可以立即上车。您可以多次上下地铁,也可以根据需要在不同的地铁线路之间切换。所有地铁线路都是双向的。输入输入包括您家和学校的 x,y 坐标,然后是几条地铁线路的规格。每条地铁线路按顺序由线路上每个站点的非负整数 x,y 坐标组成。您可以假设原创 2021-08-26 17:13:07 · 136 阅读 · 0 评论 -
糖果(约束差分与最短路)
糖果 POJ - 3159 在幼儿园的日子里,飞鼠是他班的班长。偶尔,班主任给飞鼠班的孩子带来一大袋糖果,让飞鼠分发。所有的孩子都非常喜欢糖果,并经常将他们得到的糖果数量与其他人进行比较。一个孩子 A 可以有这样的想法,尽管可能是另一个孩子 B 在某些方面比他更好,因此有理由应该得到比他更多的糖果,但他永远不应该得到比 B 少的一定数量的糖果不管他实际得到多少糖果,他都会感到不满意,然后去找校长抱怨flymouse的偏见分配。当时史努比和飞鼠一起上课。飞鼠总是将他的糖果数量与史努比的数量进行比较。他希望原创 2021-08-20 11:26:26 · 88 阅读 · 0 评论 -
邀请卡(正向和反向建图,跑dij)
邀请卡 POJ - 1511 在电视时代,参加戏剧表演的人并不多。Malidinesia 的古董喜剧演员都知道这一事实。他们想宣传戏剧,最重要的是宣传古董喜剧。他们打印了包含所有必要信息和节目的邀请卡。许多学生受雇来向人们分发这些请柬。每个学生志愿者都指定了一个公交车站,他或她整天呆在那里,并邀请乘坐公交车旅行的人。开设了一门特殊课程,学生们学习如何影响他人以及影响和抢劫之间的区别。交通系统非常特别:所有线路都是单向的,正好连接两个站点。巴士每半小时与乘客一起离开始发站。到达目的地站后,他们空车返回始发原创 2021-08-20 10:11:09 · 78 阅读 · 0 评论 -
仲裁 POJ - 2240(SPFA判断正环)
仲裁 POJ - 2240 套利是利用货币汇率的差异将一个单位的货币转换为多个单位的同种货币。例如,假设1美元买0.5英镑,1英镑买10.0法郎,1法郎买0.21美元。然后,通过转换货币,聪明的交易者可以从 1 美元开始,买入 0.5 * 10.0 * 0.21 = 1.05 美元,赚取 5% 的利润。您的工作是编写一个程序,该程序将货币汇率列表作为输入,然后确定是否可以进行套利。输入输入将包含一个或多个测试用例。在每个测试用例的第一行有一个整数 n (1<=n<=30),代表不同货币的原创 2021-08-19 22:19:06 · 123 阅读 · 0 评论 -
MPI大漩涡(单纯的floyd)
MPI大漩涡 POJ - 1502 BIT 最近交付了他们的新超级计算机,这是一台带有分层通信子系统的 32 处理器 Apollo Odyssey 分布式共享内存机器。瓦伦丁麦基的研究顾问杰克斯威格特要求她对新系统进行基准测试。“由于 Apollo 是分布式共享内存机器,内存访问和通信时间并不统一,”瓦伦丁告诉斯威格特。``共享同一内存子系统的处理器之间的通信速度很快,但不在同一子系统上的处理器之间的通信速度较慢。阿波罗和我们实验室机器之间的通信还比较慢。” “阿波罗的消息传递接口 (MPI) 端口如原创 2021-08-19 21:21:00 · 115 阅读 · 0 评论 -
虫洞(SPFA判断负环)
在探索他的许多农场时,法默约翰发现了许多惊人的虫洞。虫洞非常奇特,因为它是一条单向路径,可以在您进入虫洞之前的时间将您送到目的地!FJ 的每个农场都包含N (1 ≤ N ≤ 500) 个田地,方便地编号为 1… N、M (1 ≤ M ≤ 2500) 条路径和W (1 ≤ W ≤ 200) 个虫洞。由于 FJ 是一个狂热的时间旅行迷,他想做以下事情:从某个场地开始,穿过一些路径和虫洞,并在他最初出发前的某个时间返回出发场地。也许他将能够见到自己????。即判断是否存在负环。为了帮助 FJ 确定这是否原创 2021-08-19 21:07:12 · 91 阅读 · 0 评论 -
奶牛比赛 (flody传递闭包算排名)
奶牛比赛 POJ - 3660 N (1 ≤ N ≤ 100) 头奶牛,方便地编号为 1… N,正在参加编程竞赛。众所周知,有些奶牛比其他奶牛编码得更好。每头奶牛都有一定的恒定技能等级,这在竞争对手中是独一无二的。比赛分几轮进行,每轮在两只奶牛之间进行。如果奶牛A的技能水平比奶牛B 高(1 ≤ A ≤ N;1 ≤ B ≤ N;A ≠ B),那么奶牛A总是会击败奶牛B。农夫约翰正在尝试按技能水平对奶牛进行排名。给定M (1 ≤ M ≤ 4,500) 两轮奶牛的结果列表,确定可以从结果中精确确定等级的奶牛原创 2021-08-19 17:49:32 · 443 阅读 · 0 评论 -
货币兑换(判断正环)
货币兑换 POJ - 1860 我们城市有几个货币兑换点。让我们假设每个点专门研究两种特定的货币,并且只与这些货币进行兑换操作。可以有多个点专门用于同一对货币。每个点都有自己的汇率,A到B的汇率就是1A得到B的数量。此外,每个交换点都有一些佣金,即您必须为交换操作支付的金额。佣金始终以来源货币收取。例如,如果您想在兑换点将 100 美元兑换成俄罗斯卢布,汇率为 29.75,佣金为 0.39,您将获得 (100 - 0.39) * 29.75 = 2963.3975RUR。您肯定知道在我们的城市中您可以原创 2021-08-18 17:30:23 · 279 阅读 · 1 评论 -
Silver Cow Party(最短路+反向建图的含义)
Silver Cow Party POJ - 3268 来自N 个农场 (1 ≤ N ≤ 1000) 中每一个的一头奶牛,编号为 1… N将参加在农场 # X (1 ≤ X ≤ N )举行的大型奶牛派对。共有M (1 ≤ M ≤ 100,000) 个单向(单向道路连接成对的农场;道路i需要T i (1 ≤ T i ≤ 100) 个单位的时间来遍历。每头牛都必须步行去参加聚会,聚会结束后,回到她的农场。每头牛都是懒惰的,因此选择了最短时间的最佳路线。由于道路是单向的,一头牛的返回路线可能与她原先的路线不同原创 2021-08-16 22:44:20 · 372 阅读 · 0 评论 -
重型运输 POJ - 1797(过程中最小的)
重型运输 POJ - 1797 背景Hugo Heavy 很高兴。在 Cargolifter 项目破裂后,他现在可以扩展业务。但是他需要一个聪明的人来告诉他是否真的有办法从他的客户建造巨型钢起重机的地方到所有街道都可以承受重量的地方。幸运的是,他已经有了一个城市的平面图,包括所有的街道和桥梁以及所有允许的重量。不幸的是,他不知道如何找到最大承重能力来告诉他的客户起重机可能会变得多重。但你肯定知道。问题给出城市的平面图,由交叉路口之间的街道(有重量限制)描述,从 1 到 n 编号。你的任务是找到从路原创 2021-08-15 22:27:41 · 288 阅读 · 0 评论 -
青蛙 POJ - 2253(变形最短路)
青蛙 POJ - 2253弗雷迪青蛙坐在湖中央的一块石头上。突然他注意到坐在另一块石头上的Fiona Frog。他打算去看望她,但由于水很脏,而且到处都是游客的防晒霜,他不想游泳,而是通过跳跃来接触她。不幸的是,Fiona 的石头超出了他的跳跃范围。因此,弗雷迪考虑使用其他石头作为中间停靠点,并通过几次小跳跃的顺序到达她。要执行给定的跳跃序列,青蛙的跳跃范围显然必须至少与序列中发生的最长跳跃一样长。因此,两块石头之间的青蛙距离(人类也称为最小最大距离)被定义为两块石头之间所有可能路径上的最小必要跳跃原创 2021-08-15 21:33:13 · 91 阅读 · 0 评论 -
Til the Cows Come Home(简单的最短路)
Til the Cows Come HomeBessie 在外地,想要在 Farmer John 叫醒她早上挤奶之前回到谷仓尽可能多地睡觉。Bessie 需要她的美容觉,所以她想尽快回来。Farmer John 的田地中有 N (2 <= N <= 1000) 个地标,唯一编号为 1…N。地标 1 是谷仓;Bessie 整天站立的苹果树树林是 N 的地标。奶牛使用 T (1 <= T <= 2000) 条地标之间不同长度的双向牛道在田间行进。Bessie 对自己的导航能力没有信心原创 2021-08-13 21:58:46 · 263 阅读 · 0 评论 -
Find a way HDU - 2612(两次bfs)
Find a way HDU - 2612 在杭州经过一年的学习,一分飞终于抵达了家乡宁波。离开宁波一年,一分飞有很多人要见面。尤其是好朋友 Merceki。Yifenfei的家在农村,而Merceki的家在市中心。于是一分飞和Merceki约好在肯德基见面。宁波有很多肯德基,他们想选择一个总时间最少的。现在给你一张宁波地图,一分飞和Merceki都可以上、下、左、右移动到相邻的道路,花费11分钟。输入输入包含多个测试用例。每个测试用例包括前两个整数 n,m。(2<=n,m<=200原创 2021-08-13 21:42:11 · 193 阅读 · 0 评论 -
非常可乐(没有刻度的平均分水问题)
#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;struct node { int c; int a; int b; int step;};queue<node> q;int vist[105][105][105];int C,A,B,flag;void bfs() { if(C&原创 2021-08-08 21:41:43 · 144 阅读 · 0 评论 -
油田(判断联通块数目)
Oil Deposits HDU - 1241 GeoSurvComp 地质调查公司负责探测地下油藏。GeoSurvComp 一次处理一个大的矩形土地区域,并创建一个将土地划分为许多方形地块的网格。然后分别分析每个地块,使用传感设备来确定地块是否含有石油。包含石油的地块称为口袋。如果两个油袋相邻,则它们是同一个油藏的一部分。油藏可能非常大,并且可能包含许多油袋。您的工作是确定网格中包含多少种不同的油藏。输入输入文件包含一个或多个网格。每个网格以一行包含 m 和 n(网格中的行数和列数)开始,由一个空格原创 2021-08-08 10:49:20 · 108 阅读 · 0 评论 -
迷宫(输出路径方法)
迷宫问题 POJ - 3984 定义一个二维数组:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。Input一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。Output左上角到右下角的最短路径,格式如样例所示原创 2021-08-08 10:30:45 · 661 阅读 · 0 评论 -
Fire Game(判断联通块+2元起点)
Fire Game FZU - 2150胖哥和迷宫在 N*M 棋盘(N 行,M 列)上玩一种特殊的(无尽)游戏。一开始,这个板的每个网格都由草组成或只是空的,然后他们开始发射所有的草。首先他们选择两个由草和火组成的网格。众所周知,火可以在草丛中蔓延。如果网格 (x, y) 在时间 t 触发,则与该网格相邻的网格将在时间 t+1 触发,该时间指的是网格 (x+1, y), (x-1, y), (x, y+1), (x, y-1)。当没有新网格起火时,此过程结束。如果然后所有由草组成的网格都被烧毁,胖哥和迷原创 2021-08-04 21:31:08 · 148 阅读 · 1 评论 -
Pots 用bfs模拟2杯子体积分别为A,B通过一系列操作把其中一杯子变为C升水
Pots POJ - 3414 给你两个罐子,分别有A升和B升的体积这里开始的时候A和B的杯子都是没有水的。可以执行以下操作:1,FILL(i)从水龙头填充锅i (1 ≤ i ≤ 2);2,DROP(i) 将锅i排空至排水管;3,POUR(i,j) 从锅i倒入锅j;在此操作之后,要么锅j已满(锅i 中可能还有一些水),要么锅i是空的(并且其所有内容都已移到锅j 中)。编写一个程序,找出这些操作的最短可能序列,以便在其中一个锅中产生恰好C升的水。输入第一行也是唯一一行是数字A、B和C。原创 2021-07-30 15:35:37 · 259 阅读 · 0 评论 -
Prime Path(bfs加素数)
Prime Path题意:给出2个素数(4位的数字)A和B,要求从A每次边一个位置上的数字且是素数,通过几次变换后,求变到B的最少步数,当然是bfs思路:一 一改变位置上的数并判断素数;#include<iostream>#include<cstring>#include<vector>#include<queue>#include<climits>#include<algorithm>using namespace原创 2021-07-30 12:44:37 · 102 阅读 · 0 评论 -
Find The Multiple(bfs+构造)
Find The Multiple 给定一个正整数 n,**编写程序找出 n 的非零倍数 m即是找m%n==0;**,它的十进制表示只包含数字 0 和 1。你可以假设 n 不大于 200,并且对应的 m 不大于 100十进制数字。输入输入文件可能包含多个测试用例。每行包含一个值 n (1 <= n <= 200)。包含零的行终止输入。输出对于输入中的每个 n 值,打印一行包含相应的 m 值。m 的十进制表示不能超过 100 位。如果对于给定的 n 值有多个解决方案,则其中任何一原创 2021-07-30 12:32:23 · 91 阅读 · 0 评论 -
二进制枚举
翻转 POJ - 3279 农夫约翰知道,一头智力满足的奶牛是一头会产更多奶的快乐奶牛。他为奶牛安排了一项聪明的活动,让奶牛操纵一个M × N网格(1 ≤ M ≤ 15;1 ≤ N ≤ 15)的正方形瓷砖,每块瓷砖的一侧为黑色,另一侧为白色。正如人们所猜测的那样,当一个白色的瓷砖被翻转时,它会变成黑色;当翻转单个黑色瓷砖时,它会变为白色。奶牛在翻转瓷砖时得到奖励,使每块瓷砖的白色面朝上。然而,奶牛有相当大的蹄子,当它们试图翻转某个瓷砖时**,它们也会翻转所有相邻的瓷砖(与翻转的瓷砖共享完整边缘的瓷砖)*原创 2021-07-27 14:59:07 · 80 阅读 · 0 评论 -
Catch That Cow【直接改变数值的一维bfs】
Catch That Cow POJ - 3278 农夫约翰已被告知一头逃亡母牛的位置,并希望立即抓住她。他从数轴上的点N (0 ≤ N ≤ 100,000) 开始,而奶牛在同一数轴上的点K (0 ≤ K ≤ 100,000) 处。Farmer John 有两种交通方式:步行和传送。行走:FJ 可以在一分钟内从X点移动到X - 1 或X + 1点传送:FJ 可以在一分钟内从X点移动到 2 × X点。如果母牛不知道它的追逐,根本不动,农夫约翰需要多长时间才能取回它?输入第 1 行:两个空格分隔原创 2021-07-26 10:55:48 · 131 阅读 · 0 评论 -
地牢大师【三维地图bfs】
地牢大师您被困在 3D 地牢中,需要找到最快的出路!地牢由单位立方体组成,这些立方体可能充满也可能不充满岩石。向北、向南、向东、向西、向上或向下移动一个单位需要一分钟。你不能对角移动,迷宫四面都是坚固的岩石。有没有可能逃脱?如果是,需要多长时间?输入输入由许多地牢组成。每个地牢描述都以一行包含三个整数 L、R 和 C(大小均限制为 30)开始。L 是构成地牢的层数。R 和 C 是构成每个级别的计划的行数和列数。然后将跟随 L 块 R 行,每行包含 C 个字符。每个字符描述地牢的一个单元。装满岩原创 2021-07-26 10:11:16 · 289 阅读 · 0 评论 -
棋盘问题POJ - 1321
棋盘问题 POJ - 1321在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案.Input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n当为-1 -1时表示输入结束。随后的n行描述了棋盘的形状:每行有n个字符,其中 #原创 2021-07-26 09:56:02 · 73 阅读 · 0 评论 -
迪杰斯特拉优化
Dijkstra?1,运用优先队列缩短每次找最小的时间2,用vector建图,遍历更新dis时缩短时间#include<iostream>#include<vector>#include<queue>#include<cstring>using namespace std;typedef long long ll;struct node{ ll dian; ll zhi; friend bool operator<(const n原创 2021-07-24 13:34:33 · 88 阅读 · 0 评论 -
马拉车回文算法
算法原理奇偶变换:为处理字符串方便,现将给定的任意字符串进行处理,使所有可能的**奇数/偶数长度的回文子串都转换成了奇数长度。具体就是在每个字符的两边都插入一个特殊的符号。比如hhjj变成 #h#h#j#j#, aba变成 #a#b#a#;为防止数组越界,可以在字符串的开始加入另一个特殊字符,比如“@#a#b#a#?” 。定义一个辅助数组int p[],p[i]表示以s_new[i]为中心的最长回文的半径,例如:r代表以s_new[id]为中心的最长回文最右边界,也就r=i+p[i]。 假设我原创 2021-07-17 20:12:42 · 124 阅读 · 0 评论 -
迪杰斯特拉算法
Djikstra算法算法特点:Dijkstra算法适用于计算正权图(边权为正)上的单源最短路,***即从单个源点出发,到所有节点的最短路。***该算法同时适用于有向图和无向图。算法思路:从已确定最短路径的节点Vi出发,找到其中权值最小的边,如果原点到Vi的权值和加Vi到Vj的权值小于已知原点到Vj的权值和,则将原点到Vi的权值和加Vi到Vj的权值作为原点到Vj的最小权和#include<iostream>#include<cstring>using namespace st原创 2021-07-17 17:48:58 · 124 阅读 · 0 评论 -
二分求解决方案
**B - Hamburgers**做三明治需要面包、香肠和奶酪,用B代表,S代表香肠,C代表奶酪,不同的三明治所含的这三种原料不同。杜老板的厨房现在有有nb块面包,ns块香肠和nc块奶酪。除此之外,这三种原料在附近的商店都有,价格是一片面包pb元,一片香肠ps元,一片奶酪pc元。杜老板有钱,他准备去买。他最多能做多少汉堡?你可以假设它不会破坏或切掉面包、香肠或奶酪的任何一块。除此之外,店里每种原料的数量都是无限量的。Input输入的第一行包含一个非空字符串,它描述了三明治的配方。字符串的长度不超原创 2021-07-11 16:57:42 · 163 阅读 · 0 评论 -
逆元的方法
~~一,大批量处理逆元~~#include<iostream>#include<vector>using namespace std;typedef long long ll;const ll maxn=1e6+20;ll inv[maxn]={0,1};//一的逆元为 1,0的逆元tan90度 int main(){ ll n,p,i; cin>>n>>p;//p要为素数 //要计算到多少n就为多少 for(i=2;i<原创 2021-07-04 18:21:48 · 71 阅读 · 0 评论 -
求素数的个数
Eratosthenes筛选法(埃拉托斯特尼筛法)#include<iostream>#include<cstring>#include<algorithm>using namespace std;int vist[1000000];int n,m;void suan(){ int i,j; for(i=2;i*i<=1000005;i++){//筛选1到 1000005的素数 ,注意第一个循环是i*i<=m if(!vist[i原创 2021-07-03 15:36:37 · 1582 阅读 · 0 评论 -
求组合数的方法
一 ,一个for的求法求的组合的数量不多的时候#include<iostream>using namespace std;int main(){ int n,k,i; long long ans; while(cin>>n>>k){ if(k==0&&n==0) break; if(n-k<k) k=n-k;//如Cn4 = Cn2(n==6时),此时的我们选择k比较小的那个即k=n-k; .原创 2021-07-03 13:20:59 · 110 阅读 · 0 评论