ACM
文章平均质量分 54
练习题
MORE_77
做研究,对一个东西要有自己的认识,才能做出不一样的东西来。
展开
-
POJ 1256 变形词
题目分析这个存粹就是在考学生对于库函数的运用了,这里主要运用了两个库函数:一个是tolower()将大写字母转化为小写字母还有一个是next_permutation()是枚举函数;具体介绍:计算序列全排列的函数:next_permutation(start,end) prev_permutation(start,end)这两个函数作用是一样的,区别就在于前者求的是当前排列的下一个排列,后一个求的是当前排列的上一个排列。这里的“前一个”和“后一个”,我们把它理解为序列的字典序的前后原创 2021-12-12 11:45:24 · 101 阅读 · 0 评论 -
POJ 3617字典序最小问题
题目分析贪心算法,不断比较不知道为啥没通过(Presentation Error…就很神奇)代码#include<iostream>#define N 999999using namespace std;int n;char a[N];void sovle() { int x=0,y=n-1; while(x<=y) { int sign=0; for(int i=x,j=y; i<j; j--,i++) { if(a[i]<a[j])原创 2021-12-12 11:50:02 · 348 阅读 · 0 评论 -
POJ No.1852 蚂蚁
题目:蚂蚁题目分析分析:因为知道蚂蚁的位置,速度(都是一样的),那么求所有蚂蚁落下的最短时间——>转化为 求所有蚂蚁离两端最短距离,的最大值最长时间——>转化为 求所有蚂蚁离两端最长距离 ,的最大值代码//POJ No.1852#include<iostream>#define N 9999999using namespace std;int t;int L,n;int a[N];void solve() { int Min=0; for(int i原创 2021-12-12 10:47:32 · 429 阅读 · 3 评论 -
抽签 c++二分查找
【题目描述】:将写有数字的n个纸片放入口袋,抽取四次,每次抽取后记下数字后放回纸片,判断这四个数字和是否有可能为m?限制条件:1<=n<=501<=m<=10(8)1<=ki<=10(8)【分析】:因为是 4张,且是又放回抽取,假设数字是a,b,c,d;因此前两次抽取的值的和的有可能的情况(a+b) 和 后两者抽取的值的和的情况(c+d)是一样的,那么做题思路就出来了:先用一个二维数组记录出所有的两种数字组合的情况(相当于列举抽取的a+b的值)再用m-原创 2021-12-12 11:03:51 · 789 阅读 · 0 评论 -
POJ 1979 Red and Black-深度搜索
有点坑的就是他给的 n m,是列数和行数,与我们习惯性的输入不太一样,顺序颠倒了。原创 2022-09-30 17:09:53 · 86 阅读 · 0 评论 -
洛谷P2817-图m的着色问题-dfs+递归
给定无向连通图 G 和 m 种不同的颜色。用这些颜色为图 G 的各顶点着色,每个顶点着一种颜色。如果有一种着色法使 G 中每条边的2个顶点着不同颜色,则称这个图是 m 可着色的。图的 m 着色问题是对于给定图 G 和 m 种颜色,找出所有不同的着色法。第1行有3个正整数n,k 和m,表示给定的图 G 有 n 个顶点和 k 条边,m 种颜色。接下来的 k 行中,每行有 2 个正整数u,v,表示图 G 的一条边(u,v)。对于给定的无向连通图 G 和 m 种不同的颜色,编程计算图的所有不同的着色法。原创 2022-09-18 15:39:15 · 259 阅读 · 0 评论 -
并查集的简单学习笔记
【代码】并查集的简单学习笔记。原创 2022-09-18 13:07:48 · 110 阅读 · 0 评论 -
POJ 3253 Fence repair
题目分析每次分割的开销等于自己的长度,其实也等于切割后的小板的长度,那么如果使每次切割的小班的长度组合起来最小,就可以实现每次切割长度最小于是就把问题转化为——>每次求解最短板与第二短板组合(类比哈夫曼树)代码#include<iostream>using namespace std;typedef long long 11;#define N 999999int n L[N];void sovle() { ll ans=0;//计算开销的 while(n&原创 2021-12-12 12:22:50 · 438 阅读 · 0 评论 -
POJ 2431 远征
题目分析原创 2021-12-12 17:14:19 · 342 阅读 · 0 评论 -
迷宫最短路径——广度搜索
题目描述给出地图,求出从起点到重点的最短路径题目假定,一定可以到达S是起点 ,G是终点,#是不通路,.是通路分析用广度搜索,具体分析讲解看代码…(注释挺详细的~有问题可私聊or评论留言)代码#include<iostream>#include<queue>#define N 100+5#define INFINITY 9999999using namespace std;typedef pair<int,int> P;//typedef重命名 p原创 2021-12-12 11:28:09 · 658 阅读 · 0 评论 -
POJ No.2386 Lake Counting
题目分析整体思路:从任意w开始,不停的用“.”替代邻接部分的w,直到图中没有w,DFS几次,则有几个水洼。具体思路:一次深度搜索,就是把第一个w周围替换成“.”,如果其周围有w,则继续重复上述步骤,直至这个w周围全是‘.’。这样就实现了把一个水洼填平的操作,即计数一次。那么有多少次深度搜索,就有几个水洼。代码#include<iostream>#define N 100+5using namespace std;int n,m;char a[N][N];void df原创 2021-12-12 11:14:51 · 278 阅读 · 0 评论 -
ACM-POJ-No. 1182-食物链-并查集
(如果不太了解并查集的代码,可以参考下我的另外一篇博文:https://blog.csdn.net/qq_51219814/article/details/126916320)给每个动物赋予三个节点(n,2n,3n),那就将一个动物扩展到了3个(x——>x_A 、x_B。x_C),这样就将并查集的节点数量扩展到3n,用并查集维护这 3n 个节点的信息。坑:注意这里的输入用。不然会超时,通不过。原创 2022-09-18 14:51:04 · 258 阅读 · 0 评论 -
POJ 2376 Cleaning shifts 排序+贪心算法
有一些奶牛,每只奶牛负责一个时间段。问覆盖完全部的时间段最少需要多少只奶牛。若不能全部覆盖,输出-1。原创 2022-10-04 16:45:19 · 84 阅读 · 0 评论 -
POJ 3009 Curling 2.0-DFS
就像最强大脑里的一个游戏,从当前位置移动,撞到障碍物后才会停止(所以有可能会冲出地图姐界面),障碍物被撞后会消失,求到达终点的最短路径。但不同的是,如果路径上可以通过终点,也算到达了。原创 2022-10-03 16:25:58 · 731 阅读 · 0 评论 -
codeforces-1734C - Removing Smallest Multiples
给由0和1组成的字符串 T ,字符串长度为 n ,0表示该数字被删去,1表示存在,即T=010011的意思就是数字1~6中删去了数字1 3 4。定义一种操作:每操作一次,就删去一个数字(该数字为 字符串中 k 的最小公倍数。如果字符串 T 中 x个0,那么就是需要操作 x 次。将每次操作的 k 值相加,求和的最小值。这是我自己最开始写的,超时了,那么就需要删去2 3 5 7。原创 2022-09-25 19:31:40 · 523 阅读 · 0 评论 -
POJ-1050-To the Max -动态规划
给一个大小为 n*n 的矩阵,求解元素和最大的子矩阵。方法:动态规划+字符串前缀和。存储数组从i~j行的和。原创 2022-09-21 19:55:20 · 127 阅读 · 0 评论 -
POJ—1338-丑陋的数字
有序的情况下,函数返回指向第一个值不小于val的位置,也就是返回第一个大于等于val值的位置。: 迭代器在排序序列的起始位置和终止位置,使用的范围是[first,last)。判断向量 v 中是都存在了数字 x ,如果存在了就不再加入向量 v 和队列了。但是上述思路还存在一个小问题,就是会出现重复的数字,比如6=2*3=3*2。: 在[first,last)下,找到大于等于val值的位置。比如:1、2、3、4、5、6、8、9、10、12、…只有2、3或5是质因数的数字是丑陋的数字。原创 2022-09-21 17:04:31 · 227 阅读 · 0 评论 -
POJ1330-Nearest Common Ancestors-并查集
(1)最差的情况是,所有节点在一条线上,那么那个时候时间复杂度是 n + ( n - 1 ) + …+ 1 =n * ( n + 1)/2,即O( n ²);(2)最好的情况是,所有节点都连着根节点,除了根节点,所有节点都只被遍历一遍,时间复杂度为 O ( n ) .给你一颗树,结点编号为1~ n ,再给出两个点的编号,要求输出这两点的最近公共祖先。在初始化结点的深度的时候,自己也算自己的祖先。原创 2022-09-21 15:31:09 · 89 阅读 · 0 评论 -
集合相等问题-蒙特卡罗算法
蒙特卡罗算法。么思路就是:随机选择集合 S 中的元素与集合 T 中的元素进行比较,若随机选择很多次都能从集合T中找到与之对应的相等,则集合 S 和 T 相等。传入一个unsigned的参数,表示初始化随机种子,如果随机种子一样,那么输出的随机数(给定2个集合 S 和 T ,试设计一个判定 S 和 T 是否相等的蒙特卡罗算法。原创 2022-09-20 20:32:22 · 887 阅读 · 0 评论 -
工作分配问题-回溯法
设有 n 件工作分配给 n 个人。将工作 i 分配给第 j 个人所需的费用为Cij。试设计一个算法,为每一个人都分配1件不同的工作,并使总费用达到最小。接下来的n行,每行n个数,表示工作费用。输入数据的第一行有1 个正整数n。我们让每个工作选择一个人,每层。记录人是都被选择分配了工作;记录每个选择完后的费用总数;将计算出的最小总费用输出。表示工作m ,每个结点。时间复杂度为O(n²)原创 2022-09-20 19:08:13 · 657 阅读 · 0 评论 -
ACM_HUN_POJ10411_最小编辑距离-动态规划
设A和B是2个字符串。要用最少的字符操作将字符串 A 转换为字符串 B。字符操作包括(1) 删除一个字符;(2)插入一个字符;(3)将一个字符改为另一个字符。将字符串 A 变换为字符串 B 所用的最少字符操作数称为字符串 A 到 B 的编辑距离,记为d(A, B)。试设计一个有效算法,对任给的2个字符串 A 和 B ,计算出它们的编辑距离d(A, B)。原创 2022-09-20 18:29:27 · 301 阅读 · 0 评论 -
集合划分-递归分治
集合划分:给一个有 n 个元素的集合,将它划分为多个非空子集(可以包含自己),问有多少种划分?原创 2022-09-20 17:03:16 · 610 阅读 · 0 评论 -
半数集-递归
例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。在求解过程中,要求6的半数集就得先求16,26,36的半数集,因此就构成了递归。(2) 在n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;给定一个自然数n,由n 开始可以依次产生半数集set(n)中的数如下。对于给定的自然数n,计算半数集set(n)中的元素个数。(3) 按此规则进行处理,直到不能再添加自然数为止。注意半数集是多重集。原创 2022-09-20 15:34:01 · 252 阅读 · 0 评论 -
Silver Cow Party 两遍最短路径Dij
题目题意解析小牛要从自己的点(从1到n中任意一个位置除了x)到达x,再从x回到自己的点,即路径为从i到x,再从x到i。那么就有n-1只小牛(除x点以外,每个点都有一直小牛),每只小牛来回时均采取最短路径进行行走,求这n-1个小牛中用时最长的小牛的时间。代码思路先用最短路径Dij算法求从x点到各个点的最短路径的距离,再颠倒路径的方向(即修改地图 相邻矩阵)先用最短路径Dij算法求从x点到各个点的最短路径的距离(此时算出来的其实是原来地图中,从各点到x的路径)原来的错误想法:就硬算,算各个点到原创 2022-02-09 15:07:43 · 196 阅读 · 2 评论 -
Make it Divisible by 25
题目分析能被25整除的数的特点:末尾以00 50 25 75 结尾;因此可以先找出数中最末尾的0 5然后找出0前面最接近0的5 or 0,计算删去0后面的数字和0 与 0 or 5之间的数字;25 75同上 ,最后比较以0结尾和以5结尾两种方式哪种删去的数目更少,则输出答案代码#include<iostream>#include<cstring>#define N 9999999using namespace std;string x;void solve原创 2022-02-04 13:15:17 · 580 阅读 · 0 评论 -
Find The Multiple——广搜+打表
标题 Find The Multiple分析因为要求十进制数字中只能由0 1,这个数字从1 10 11 110 111…可看出来,均可从前一个数字*10 or *10+1得出;那么就通过广度搜索遍历得出数字,然后再判断是否符合整除条件即可。为了避免超时,采用打表方式进行先行计算。坑:最开始使用c++的编译环境,代码#include<iostream>#include<queue>using namespace std;int n;long long原创 2022-01-30 10:04:26 · 367 阅读 · 0 评论 -
棋盘问题——深度搜索
题目分析核心思维肯定还是广度搜素遍历,这里的新奇点是采用三位数组主要的踩坑点:①最初我把不放棋子的那一行dfs()放在了for循环内,导致了一个方案的重复计算②需要进行剪枝操作,不然好像会超时③各数据每次循环记得初始化代码#include<iostream>#include<algorithm>#include<string.h>using namespace std;int n,k;long long ans;char a[10][10];原创 2022-01-23 11:29:28 · 261 阅读 · 0 评论 -
Catch Taht Cow——一维广搜
题目分析以前学的广度遍历都是基于二维的,这个是一维的,还觉得满新奇的!代码和二维的差不多,就是需要注意下这里移动位置的操作容易超出数组的范围,因此采用了分类讨论,而不是常见的for循环代码#include<iostream>#include<queue>#define N 1000010using namespace std;int n,m;int visit[N];struct node{ int x,t;};node a,b;void bfs(){原创 2022-01-23 11:21:54 · 204 阅读 · 0 评论 -
ACM--Booklet Printing
Booklet PrintingTime Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 360, Accepted users: 334Problem 10211 : No special judgementProblem descriptionWhen printing out a document, normally the first page is printed firs原创 2021-08-21 15:42:51 · 211 阅读 · 0 评论 -
ACM--Peter‘s smokes
Peter’s smokesTime Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 2019, Accepted users: 1902Problem 10082 : No special judgementProblem descriptionPeter has n cigarettes. He smokes them one by one keeping all the but原创 2021-08-19 16:00:59 · 242 阅读 · 0 评论 -
ACM--Rounders
RoundersTime Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 745, Accepted users: 687Problem 10724 : No special judgementProblem descriptionFor a given number, if greater than ten, round it to the nearest ten, then (i原创 2021-08-18 10:48:14 · 93 阅读 · 0 评论 -
ACM--津津的储蓄计划
津津的储蓄计划Time Limit: 2000ms, Special Time Limit:4000ms, Memory Limit:32768KBTotal submit users: 1054, Accepted users: 936Problem 10373 : No special judgementProblem description津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。为了让津津学习如何储蓄,妈妈提原创 2021-08-18 10:34:26 · 260 阅读 · 0 评论 -
ACM--Number lengths
Number lengthsTime Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 1584, Accepted users: 1479Problem 10146 : No special judgementProblem descriptionN! (N factorial) can be quite irritating and difficult to compute for转载 2021-08-18 09:56:08 · 143 阅读 · 0 评论 -
ACM--Sorting by Swapping
Sorting by SwappingTime Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 1514, Accepted users: 1381Problem 10067 : No special judgementProblem descriptionGiven a permutation of numbers from 1 to n, we can always get th原创 2021-08-17 17:36:50 · 138 阅读 · 0 评论 -
ACM--Perfection
PerfectionTime Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 1410, Accepted users: 1181Problem 10051 : No special judgementProblem descriptionFrom the article Number Theory in the 1994 Microsoft Encarta: ``If a, b,原创 2021-08-17 17:06:58 · 135 阅读 · 0 评论 -
ACM---Dissatisfying Lift
Dissatisfying LiftTime Limit: 1000ms, Special Time Limit:2000ms, Memory Limit:65536KBTotal submit users: 1524, Accepted users: 1048Problem 10003 : No special judgementProblem descriptionThere’s a building with M floors. The amounts of tenants of every原创 2021-08-16 10:33:13 · 309 阅读 · 0 评论 -
ACM--Game Prediction
Game PredictionTime Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 1522, Accepted users: 1375Problem 10019 : No special judgementProblem descriptionSuppose there are M people, including you, playing a special card ga原创 2021-08-15 17:17:19 · 198 阅读 · 1 评论 -
ACM--Adding 1s, 2s, and 3s
Adding 1s, 2s, and 3sTime Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 1492, Accepted users: 1394Problem 10074 : No special judgementProblem descriptionInteger 4 can be expressed as a sum of 1s, 2s, and 3s in seven原创 2021-08-14 11:50:47 · 268 阅读 · 0 评论 -
ACM--Fibonacci Number
Fibonacci NumberTime Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBProblem 10072 : No special judgementProblem descriptionThe Fibonacci Numbers {0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …} are defined by the recurrence:F0 = 0F1 = 1Fi = F原创 2021-08-13 10:55:53 · 92 阅读 · 0 评论 -
ACM--Lowest Bit
Lowest BitTime Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KBTotal submit users: 2729, Accepted users: 2553Problem 10038 : No special judgementProblem descriptionGiven an positive integer A (1 <= A <= 109), output the lowest bit原创 2021-08-13 10:26:19 · 211 阅读 · 0 评论