- 博客(121)
- 收藏
- 关注
原创 20220721挨揍内容
求最大值最小,普遍方法是用二分法,给定一个值bound,判断路线中比bound大的值是否小于等于k个,如果是的话,说明bound是合法的,可以增大bound;这道题目和平时做的最短路问题不一样的地方是涉及到全排列的问题,就是我们从一开始,先走到1到5这五个点哪一点,再有下一个点走到下下个点,他有不同的排序方式,因此,我们就要考虑dfs这种解决方法。该题的题意为,给定一个无向图,求一条从节点1到节点N的路线,去除掉该路线的前k大的值,比较剩下的最大的值,目标是找到最小的值;每个牧区的坐标都是不一样的。...
2022-07-22 12:31:00
232
1
原创 QDU暑假集训第一周限时训练1
我写这道题的时候首先考虑的是prim算法,导致我一直在思考一个问题,首先是我考虑生成树不是唯一的,所以说会不会出现这样一种情况,就是一个点到集合有一条相比起最小生成树更短的边但是他不是最小生成树,然后符合条件,然后发现我脑残了,因为既然最小生成树确保了边权之和最小,那么我们入过某条边选择了更短的,是不是就意味着要有一条更长的边,那么这个亚索的攻击距离就不能和这个边比较了,得和最长的边比较,所以说脑子不好用了,送上门的。主要是排序,这样就能确保每边从小到大,每次都往集合中加入边权最下的边。...
2022-07-20 20:20:28
207
原创 城堡问题(很有意思的一道题目
图1是一个城堡的地形图。请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。城堡被分割成 m∗nm∗n个方格区域,每个方格区域可以有0~4面墙。注意:墙体厚度忽略不计。输入格式第一行包含两个整数 mm 和 nn,分别表示城堡南北方向的长度和东西方向的长度。接下来 mm 行,每行包含 nn 个整数,每个整数都表示平面图对应位置的方块的墙的特征。每个方块中墙的特征由数字 PP 来描述,我们用1表示西墙,2表示北墙,4表示东墙,8表示南墙,PP 为该方块包含墙的数字之和。例如,如果一个方块的 PP 为3,
2022-07-10 13:55:01
601
1
原创 龟速乘和快速幂
龟速乘和快速幂主要需要的是预处理。对于龟速乘 a * b,由于两个大数相乘会超出longlong的表示范围,但是相加并不会,因此我们可以把乘法转换成加法进行运算,但是由于挨个进行运算时间复杂度太高,我们预处理出来a, 2a, 4a 。。。。。然后对b进行位运算, 如果b & 1的话,就让结果加上a, 然后每一次都需要让a变为原来的二倍, 也就是a = a + a;举个例子。 3 * 77的二进制表示是111, 3 * 7 = 3 + (3 + 3) + (6 + 6) //每一次a都变为原来的二倍这样就可以
2022-07-07 14:36:04
280
原创 分解质因数
给定 nn 个正整数 aiai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。输入格式第一行包含整数 nn。接下来 nn 行,每行包含一个正整数 aiai。输出格式对于每个正整数 aiai,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。每个正整数的质因数全部输出完毕后,输出一个空行。数据范围1≤n≤1001≤n≤100,2≤ai≤2×1092≤ai≤2×109输入样例:输出样例: 分解质因数就要考虑,怎么求出它所有的质因子,并且
2022-07-02 14:28:09
242
原创 Kruskal算法求最小生成树
目前求最小生成树我们已经写了prim这样一种方式,也可以用并查集的形势去写这样的一个kruskal算法。首先我们用结构体储存边,然后用运算符重载 < 号,然后从小到大依次加入,让f[fidn(q[i].a)] == f[fidn(q[i].a)] , 如果一开始f[a] == f[b]说明在没加入a和b之间的边时,他们已经是联通的了,如果加上这条边,他们就形成了环,不符合最小生成树的要求,如果循环到cnt = 1的时候就结束了。给定一个 nn 个点 mm 条边的无向图,图中可能存在重边和自环,边权可能为负数
2022-07-02 14:26:04
245
原创 试除法判断质数
给定 nn 个正整数 aiai,判定每个数是否是质数。输入格式第一行包含整数 nn。接下来 nn 行,每行包含一个正整数 aiai。输出格式共 nn 行,其中第 ii 行输出第 ii 个正整数 aiai 是否为质数,是则输出 ,否则输出 。数据范围1≤n≤1001≤n≤100,1≤ai≤231−11≤ai≤231−1输入样例:输出样例: 主要考虑如何降低复杂度,防止tle只需要保证i * i ...
2022-07-02 14:20:44
214
原创 Prim求最小生成树
首先什么是最小生成树呢,通俗一点我们可以理解为,有n个城市,不同之间的城市之间的距离, 我们需要求出最短的路径之和,使得所有的城市都是联通的。给定一个 nn 个点 mm 条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出 。给定一张边带权的无向图 G=(V,E)G=(V,E),其中 VV 表示图中点的集合,EE 表示图中边的集合,n=|V|n=|V|,m=|E|m=|E|。由 VV 中的全部 nn 个顶点和 EE 中 n−1n−1 条边构成的无向连通
2022-07-02 10:51:41
157
原创 flyod求最短路
给定一个 nn 个点 mm 条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定 kk 个询问,每个询问包含两个整数 xx 和 yy,表示查询从点 xx 到点 yy 的最短距离,如果路径不存在,则输出 。数据保证图中不存在负权回路。输入格式第一行包含三个整数 n,m,kn,m,k。接下来 mm 行,每行包含三个整数 x,y,zx,y,z,表示存在一条从点 xx 到点 yy 的有向边,边长为 zz。接下来 kk 行,每行包含两个整数 x,yx,y,表示询问点 xx 到点 yy 的最短距离。输出格式共
2022-07-01 14:37:29
131
原创 spfa求存在负权边的最短路
spfa是bellman——ford的队列优化版本,通过bfs:优化的是dist[b] = min(dist[b], dist[a]+w)因为只有dist[a]更新之后变小, dist[b]更新之后才有可能变小需要st[i]数组,保证队列里面只有一个i;给定一个 nn 个点 mm 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出 11 号点到 nn 号点的最短距离,如果无法从 11 号点走到 nn 号点,则输出 。数据保证不存在负权回路。输入格式第一行包含整数 nn 和 mm。接下来 m
2022-07-01 01:34:59
205
原创 有边数限制的最短路问题
给定一个 nn 个点 mm 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出从 11 号点到 nn 号点的最多经过 kk 条边的最短距离,如果无法从 11 号点走到 nn 号点,输出 。注意:图中可能 存在负权回路 。输入格式第一行包含三个整数 n,m,kn,m,k。接下来 mm 行,每行包含三个整数 x,y,zx,y,z,表示存在一条从点 xx 到点 yy 的有向边,边长为 zz。点的编号为 1∼n1∼n。输出格式输出一个整数,表示从 11 号点到 nn 号点的最多经过 kk 条边的最短距
2022-06-30 23:48:16
341
原创 Dijkstra求单源最短路
这道题目采用邻接矩阵储存稠密图。g[M][M]存储邻接表。dist[M]存储每一个点到原点的距离。dist[1] = 0;st[M]表示这个点是否曾经被用作更新其他点过。1:memset g和dist, 将两个点之间的距离和点到原点的距离设置为0x3f3f3f3f;2:函数内部dijkstra() : 首先要将dist[1]设置为零, 然后由于有n个点,我们需要更新n次, 所以写n个大循环3:每次寻找之前没有用于更新过其他的点,并且距离原点最近的点的坐标t4:用dist[t]去更新其他点的距离: di
2022-06-30 11:04:56
93
原创 拓扑排序食用方式
首先我们要知道什么是拓扑排序,在介绍这一概念之前,我们首先要认识一下什么叫入度和出度。入度:是指一个点被多少条边指向。出度:是指着一个点出去了多少边。通俗点理解拓扑排序就是,只有从前指向后边的点,没有从后边指向前边的边。拓扑排序就是要将入度为零的点放入队列,然后删去该点,指向的所有边,入队的顺序就是拓扑排序。因此我们可以推断,只要没有自环,一定存在拓扑排序,如果有自环,一定有拓扑排序。另外还需要注意,拓扑排序也不是唯一的。给定一个 nn 个点 mm 条边的有向图,点的编号是 11 到 nn,图中可能存在重边
2022-06-30 09:39:04
446
原创 树的dfs和bfs
给定一颗树,树中包含 nn 个结点(编号 1∼n1∼n)和 n−1n−1 条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。输入格式第一行包含整数 nn,表示树的结点数。接下来 n−1n−1 行,每行包含两个整数 aa 和 bb,表示点 aa 和点 bb 之间存在一条边。输出格式输出一个整数 mm,表示将重心删除后,剩余各个连通块中点数的最大值。数据范围1≤n≤10
2022-06-29 21:43:17
270
原创 803_Div3(3SUM Closure)
C. 3SUM Closuretime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array 𝑎a of length 𝑛n. The array is called 3SUM-closed if for all distinct indices 𝑖i, 𝑗j, 𝑘k, the sum 𝑎𝑖+𝑎𝑗+𝑎𝑘a...
2022-06-29 16:13:30
272
原创 803_div2(Rising Sand, 接受军训!
B. Rising Sandtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere are 𝑛n piles of sand where the 𝑖i-th pile has 𝑎𝑖ai blocks of sand. The 𝑖i-th pile is called too tall if 1
2022-06-29 13:06:44
263
原创 位运算::Bitwise operation
最近学习做cf,第一题永远都是该死的Bitwise operation,好好学习了一下位运算的知识。NOT:The bitwise NOT, or bitwise complement, is a unary operation that performs logical negation on each bit, forming the ones' complement of the given binary value. Bits that are 0 become 1, and those that
2022-06-29 10:07:05
621
1
原创 803_div2(日常垫底- XOR Mixup
A. XOR Mixuptime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere is an array 𝑎a with 𝑛−1n−1 integers. Let 𝑥x be the bitwise XOR of all elements of the array. The number 𝑥x is added to the end of the...
2022-06-29 09:47:07
242
5
原创 Codeforces Global Round 21(只会俩题)
A. NIT orz!time limit per test1 secondmemory limit per test512 megabytesinputstandard inputoutputstandard outputNIT, the cleaver, is new in town! Thousands of people line up to orz him. To keep his orzers entertained, NIT decided to let them solve the foll
2022-06-29 09:11:48
572
原创 写一篇dp题目呀
上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。游戏规则是这样的:nn个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目。聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了mm次以后,又回到小蛮手里。两种传球方法被视作不同的方法,当且仅当这两种方法中,
2022-05-21 09:23:18
107
原创 我也不知道他是啥题目之佬们带带我吧
You are given an array consisting ofnnon-negative integersa1, a2, ..., an.You are going to destroy integers in the array one by one. Thus, you are given the permutation of integers from1tondefining the order elements of the array are destroyed.A...
2022-05-14 17:48:21
144
原创 问题 H: Tallest Cow
时间限制:1.000Sec内存限制:128 MB提交状态题目描述FJ's N (1 ≤ N ≤ 10,000) cows conveniently indexed 1..N are standing in a line. Each cow has a positive integer height (which is a bit of secret). You are told only the height H (1 ≤ H ≤ 1,000,000) of the tallest co...
2022-05-09 20:29:17
316
原创 3358. 放养但没有完全放养
一个鲜为人知的事实是,奶牛拥有自己的文字:「牛文」。牛文由2626个字母a到z组成,但是当奶牛说牛文时,可能与我们所熟悉的abcdefghijklmnopqrstuvwxyz不同,她会按某种特定的顺序排列字母。为了打发时间,奶牛 Bessie 在反复哼唱牛文字母歌,而 Farmer John 好奇她唱了多少遍。给定一个小写字母组成的字符串,为 Farmer John 听到 Bessie 唱的字母,计算 Bessie 至少唱了几遍完整的牛文字母歌,使得 Farmer Joh...
2022-05-01 21:10:26
209
1
原创 M - Matrix Problem
A teacher gives his students a problem to test his students' construction skills.The teacher has two0 / 10/1matricesAAandBBwithnnrows andmmcolumns, where all the11of both matrices separately form a44-connected block. "Form one 4-connected bl...
2022-05-01 19:31:09
509
原创 Codeforces Round #784(Div4) D Colorful Stamp
D. Colorful Stamptime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputA row ofnncells is given, all initially white. Using a stamp, you can stamp any two neighboring cells such that one be..
2022-04-27 16:02:33
566
原创 Junk-Mail Filter HDU - 2473
题目涉及到并查集的删点操作, 自己也是第一次接触, 看了一些题解, 有一些心得。首先是不能简单地使用f[a] = a;来处理删点, 应该另外开一个数组idx表示一种映射状态, 也就是说我们每一次删除一个点, 就让idx[i] = n + num(num表示已经有得删点数量) 然后让f[n + num] = n + num; 就实现了f[idx[i]] = n + m的操作代码:#include <algorithm>#include <cstring>#includ
2022-04-25 16:47:23
273
原创 Acwing 187. 导弹防御系统
这道题目采用了dfs也就是说我们每一次需要考虑将他归入上升还是下降中, 其实区别并不大, 重要是思想, 可以参考我上一篇。为了对抗附近恶意国家的威胁,RR国更新了他们的导弹防御系统。一套防御系统的导弹拦截高度要么一直严格单调上升要么一直严格单调下降。例如,一套系统先后拦截了高度为33和高度为44的两发导弹,那么接下来该系统就只能拦截高度大于44的导弹。给定即将袭来的一系列导弹的高度,请你求出至少需要多少套防御系统,就可以将它们全部击落。输入格式输入包含多组测试用...
2022-04-23 20:32:31
224
原创 AcWing 1010. 拦截导弹
好久没写啦, 今天学acwing打算分享一下拦截导弹这样一道lis题目, 方法就是dp和贪心某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要
2022-04-23 19:07:49
290
1
原创 圆桌会议 HDU - 1214
HDU ACM集训队的队员在暑假集训时经常要讨论自己在做题中遇到的问题.每当面临自己解决不了的问题时,他们就会围坐在一张圆形的桌子旁进行交流,经过大家的讨论后一般没有解决不了的问题,这也只有HDU ACM集训队特有的圆桌会议,有一天你也可以进来体会一下哦:),在一天在讨论的时候,Eddy想出了一个极为古怪的想法,如果他们在每一分钟内,一对相邻的两个ACM队员交换一下位子,那么要多少时间才能得到与原始状态相反的座位顺序呢?(即对于每个队员,原先在他左面的队员后来在他右面,原先在他右面的队员在他左面),这当然难
2022-04-18 20:13:09
242
1
原创 More is better HDU - 1856
Mr Wang wants some boys to help him with a project. Because the project is rather complex,the more boys come, the better it will be. Of course there are certain requirements.Mr Wang selected a room big enough to hold the boys. The boy who are not been ch.
2022-04-18 19:13:19
295
原创 How Many Tables HDU - 1213
Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know each other, and all the friends do not want to stay with strangers.O
2022-04-18 18:41:03
148
原创 Gluttony CodeForces - 891B
一道思维题, 做法就是用两个数组储存数值, 然后b数组用来排序, a数组用来保存原始输入, 然后让b排序, 然后用一个map让q[b[i]] = q[b[(i + 1) % n]] 实现了b[i]对应着i的下一位元素, 然后我不是很理解原理, 可以看其他博主的博客。代码:#include <iostream>#include <cstring>#include <algorithm>#include <map>using namespace
2022-04-18 15:57:51
377
原创 The Meaningless Game CodeForces - 833A
Slastyona and her loyal dog Pushok are playing a meaninglessgamethat is indeed very interesting.Thegameconsists of multiplerounds. Its rules are very simple: in each round, a natural numberkis chosen. Then, the one who says (or barks) it faster ...
2022-04-17 21:46:02
428
原创 不容易系列之(3)—— LELE的RPG难题 HDU - 2045
人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.以上就是著名的RPG难题.如果你是Cole,我想你一定会想尽办法帮助LELE解决这个问题的;如果不是,看在众多漂亮的痛不欲生的Col
2022-04-17 13:12:16
153
原创 Fire UVA - 11624
我的心也被燃烧了Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of the maze neglected to create a fire escape plan. Help Joe escape the maze. Given Joe’s location in the maze and which squares of the maze are on fire,
2022-04-16 22:05:54
477
2
原创 Virtual Friends
These days, you can do all sorts of things online. For example, you can use various websites to make virtual friends. For some people, growing their social network (their friends, their friends' friends, their friends' friends' friends, and so on), has b..
2022-04-16 21:05:59
667
原创 阿牛的EOF牛肉串 HDU - 2047
今年的ACM暑期集训队一共有18人,分为6支队伍。其中有一个叫做EOF的队伍,由04级的阿牛、XC以及05级的COY组成。在共同的集训生活中,大家建立了深厚的友谊,阿牛准备做点什么来纪念这段激情燃烧的岁月,想了一想,阿牛从家里拿来了一块上等的牛肉干,准备在上面刻下一个长度为n的只由"E" "O" "F"三种字符组成的字符串(可以只有其中一种或两种字符,但绝对不能有其他字符),阿牛同时禁止在串中出现O相邻的情况,他认为,"OO"看起来就像发怒的眼睛,效果不好。你,NEW ACMer,EOF的崇拜者,能帮阿牛
2022-04-16 20:08:57
214
原创 折线分割平面 HDU - 2050
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。Input输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<=10000),表示折线的数量。Output对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。SampleInputcopy Outputcopy ..
2022-04-16 19:48:51
634
原创 dfs全排列出现重复元素
今天做题突然想到这一种情况,于是打算写一下:方法是使用一个idx来进行标记, 表示当前下标, 然后在dfs回溯的过程中进行判断:核心:if (!i || a[i] != a[idx]) {}代码如下:#include <iostream>using namespace std;const int N = 1e06 + 10;int a[N];bool st[N];int q[N];int num;void dfs(int n) { if (n == num
2022-04-12 09:03:15
515
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅