- 博客(19)
- 收藏
- 关注
原创 Codeforces Round #797 (Div. 3)F G
FPolycarp 找到了字符串 s 和排列 p。结果证明它们的长度相同并且等于 n。n 个元素的排列 — 是一个长度为 n 的数组,其中从 1 到 n 的每个整数恰好出现一次。例如,[1,2,3] 和 [4,3,5,1,2] 是排列,但是 [1,2,4], [4,3,2,1,2] 和 [0,1 ,2] 不是。在一次操作中,他可以将 s 与 p 相乘,因此他将 s 替换为字符串 new,其中对于从 1 到 n 的任何 i,newi=spi 是真的。例如,当 s=wmbe 和 p=[3,1,4,2] 时,操作
2022-07-03 20:28:14 200
原创 Codeforces Round #794 (Div. 2) D. Linguistics
题目大意:Alina 发现了一种奇怪的语言,它只包含 4 个单词:A、B、AB、BA。事实证明,这种语言中没有空格:一个句子是通过将其单词连接成一个字符串来编写的。Alina 找到了一个这样的句子 s,她很好奇:它是否可能恰好由 a 词 A、b 词 B、c 词 AB 和 d 词 BA 组成?换句话说,确定是否可以以某种顺序连接这些 a+b+c+d 单词,以便生成的字符串为 s。每个 a+b+c+d 单词在连接中必须只使用一次,但您可以选择它们连接的顺序。输入输入的第一行包含一个整数 t (
2022-05-27 17:10:42 288
原创 Educational Codeforces Round 129 (Rated for Div. 2) E. Labyrinth Adventures
思路:我们既然要找最小移动距离,而且一层只存在两个门而且一个门朝上一个门朝东,那么我们就可以先移动到当前门的位置,然后根据我们所在的位置,我们可以根据类似于st表的倍增思想,一步步向前扩展到底需要多少的步数。又因为我们所在的位置和我们的终点这个距离总是能划为二进制数来到达,因此我们可以先预处理倍增后的i层到2的j次方从第一扇门还是第二扇门到第一扇门还是第二扇门的距离从而待会可以进行一波二进制跳跃。然后我们可以开始处理询问了,我们只需要先查明是从第几层跳到第几层的,然后用二进制跳到它的上一层然后再进行
2022-05-26 18:27:08 145
原创 Educational Codeforces Round 129 (Rated for Div. 2) F. Unique Occurrences
题目大意:给你一棵树,由 n 个顶点组成。 每条边上都写有一个整数值。令 f(v,u) 是在顶点 v 和 u 之间的简单路径的边缘上恰好出现一次的值的数量。计算所有顶点对 v 和 u 上的 f(v,u) 之和,使得 1≤v<u≤n。输入第一行包含一个整数 n (2≤n≤5⋅105) — 树中的顶点数。接下来的 n−1 行中的每一行都包含三个整数 v,u 和 x (1≤v,u,x≤n)——边的描述:它连接的顶点和写在上面的值。给定的边形成一棵树。输出打印一个整数——所有顶
2022-05-25 20:23:32 118
原创 Codeforces Round #793 (Div. 2) D. Circular Spanning Tree
题目大意:有n个节点按顺时针顺序排列在从1到n编号的圆圈中。您还得到一个长度为 n 的二进制字符串 s。您的任务是在满足以下两个条件的给定 n 节点上构造一棵树,或者报告不存在这样的树:对于每个节点 i (1≤i≤n),如果 si=0,则节点度为偶数,如果 si=1,则为奇数。树的两条边在圆的内部没有相交。允许边缘在圆周上相交。请注意,所有边都绘制为直线段。例如,树中的边 (u,v) 被绘制为连接圆上 u 和 v 的线段。n 个节点上的树是具有 n-1 条边的连通图。思路:这是一个很
2022-05-23 21:41:26 143
原创 Codeforces Round #791 (Div. 2) ABCD
A.AvtoBus没啥好说的,分类讨论#include "bits/stdc++.h"using namespace std;#define int long longint t,n,res1,res2;signed main(){ cin>>t; while(t--){ cin>>n; if(n&1||n<4){ puts("-1"); continue;
2022-05-18 00:26:41 104
原创 牛客挑战赛60 ABC题解
笔者能力有限,目前就补了abc。A:对于c 是 a 的倍数,且 c>a。 gcd(a,b)=gcd(b,c)。对于这两个条件,打破了笔者想着只要等于a就可以的小心思。。。毕竟这不是小白赛。所以我们可以开始先把第二个条件变成:a和b已经互质,而且b和c也互质,而且c是a的倍数。为什么可以这样变化呢,因为我们可以两边同除原gcd(a,b)的值,让他们都变成互质,即设u=gcd(a,b)。gcd(a/u,b/u)=gcd(b/u,c/u)成立,那么我们可以很容易得知c/a的倍数与b也是互
2022-05-15 19:53:59 534
原创 Codeforces Round #783 (Div. 2) D. Optimal Partition
题意:给定一个由 n 个整数组成的数组 a。 您应该将 a 划分为连续的非空子数组(有 2n-1 种方法可以做到这一点)。令 s=al+al+1+…+ar。 子数组 al,al+1,…,ar 的值为:(r−l+1) 如果 s>0,0 如果 s=0,-(r-l+1) 如果 s<0。使用分区可以获得的最大值总和是多少?输入输入由多个测试用例组成。 第一行包含一个整数 t (1≤t≤5⋅105) — 测试用例的数量。 测试用例的描述如下。每个测试用例的第一行包含一个整数 n
2022-04-21 20:56:55 241
原创 2021 icpc南京 H. Crystalfly
题目大意:Paimon 正在树上捕捉水晶蝴蝶,这是提瓦特的一种特殊蝴蝶。树是由 n 个顶点和 (n-1) 个无向边组成的连通图。在第 i 个顶点上最初有 ai 个晶体。当派蒙到达一个顶点时,她可以立即捕捉到该顶点上所有剩余的水晶蝇。然而,水晶蝇很胆小。当 Paimon 到达一个顶点时,所有相邻顶点上的晶体都会受到干扰。对于第i个顶点,如果顶点上的晶体在第t'秒开始时第一次受到干扰,它们将在第(t'+ti)秒结束时消失。在第 0 秒开始时,Paimon 到达顶点 1 并在第 1 秒开始之前停留在那
2022-03-17 21:00:39 721
原创 [HAOI2015] 树上染色
这题其实就是一个树上背包的裸题,但是因为刚刚接触背包,因此萌新感觉做起来很困难,所以就写了这篇题解用来加深印象。我们可以逐段代码进行分析。首先是主函数,这没啥好说的,其实就是输入n和k和加入边之间的关系,记得要双边加哦,然后一个初始化,一个从1开始的0为父节点的dfs和一个输出最终结果的输出,这就是主函数的全部了。为什么要初始化呢,我的理解是这样的,就是因为我们可能会遇上一些没有被转移到的转移状态,当这些转移状态没出现的时候,那么就是-1了,那我们就可以不使用这些状态进行转移。int main
2022-03-17 14:48:12 900
原创 [HAOI2008]糖果传递(个人对题目的分析)
这题与其说是贪心,我觉得不如说是数学来着,整个人没看到其他大佬的解法之前是一脸懵逼的,打表也打不出规律啥也整不出来。。。。鉴于本人能力有限于是去参考其他大佬的解法得到了自己简单的想法。。。首先,我们先明确我们要求的答案是什么,是要求最小的操作数,那这个操作数的话就是所有n个相邻两个传递的糖果数,因为两面传太烦了,所以我们规定只能左边传右边,为什么可以只规定一边呢,因为和矢量差不多,我们可以规定传递了负数个嘛。我们需要找到一个地方开始传,但我们又不知道哪里可以开始传,那我们索性就假设某一点开始传,然后
2022-02-27 18:05:06 237
原创 2022年牛客寒假算法基础集训营第一场
因为笔者太菜了,所以不仅在比赛期间过题数不高,而且赛后补题也没补完,但是因为先总结一下自己补题和当时过题时的想法,所以写了这一篇。。。。其实主要给我自己看的。A.九小时九个人九扇门当时这一题比赛期间没写出来,主要是由于出现了一些小bug导致我输出的连样例都没过,因为太急躁了,所以没有继续做下去。先贴代码#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;l
2022-01-26 00:18:29 141
原创 Educational Codeforces Round 121 (Rated for Div. 2) D. Martial Arts Tournament
题目大意:招收了n个拳击手,想让他们按照重量分成三类,每个都要符合2的幂次方。这n个人不能减少,但是可以在每组多增加招人,问最少需要招多少人。解法:我们简单思考可以直接二重枚举轻量级和中量级,直接枚举的时间复杂度大概是n(logn)(logn),对于2e5的n来说不会超时,很符合我们希望的时间。于是代码如下#include<stdio.h>#include<iostream>#include<algorithm>#include<cmat
2022-01-18 11:08:16 299
原创 Educational Codeforces Round 121 (Rated for Div. 2) C. Monsters And Spells
题目大意:Monocarp 又在玩电脑游戏了。他是一个巫师学徒,只知道一个咒语。幸运的是,这个法术可以伤害怪物。 他当前所在的级别包含 n 个怪物。他们中的第 i 个在关卡开始后出现 ki 秒,并且有 hi 生命值。作为附加约束,对于所有 1≤i≤n,hi≤ki。所有的ki都不一样。 Monocarp 可以在关卡开始后正整数秒的时刻施法:1,2,3,... 法术的伤害计算如下。如果他在前一秒没有施法,则伤害为1。否则,让前一秒的伤害为x。然后他可以选择伤害为 x+1 或 1。法术使用法力:施展伤害为 x
2022-01-17 17:09:34 772
原创 HHKB Programming Contest 2022(AtCoder Beginner Contest 235)C - The Kth Time Query
题目大意:题目大意:我们有一个数组,我们要对这个数组做一个操作,那就是查询第几个这个数字在这个数组的哪个位置。题解:简单想法就是用一个map存数然后之后每次出现一次加一。定义一个结构体既有值又有次数还有当前位置,将这个结构体读入。然后按照值排序,如果值一样就按照次数排序,这样我们可以进行二分查找,查找到这个值,然后看看它此时的次数,然后就可以知道当前这个要找的次数在哪个位置,输出它那时候存放的位置。代码如下:#include<stdio.h>#include<ios
2022-01-16 16:58:45 577 2
原创 Codeforces Round #766 (Div. 2) B. Not Sitting
题目大意:拉胡尔和蒂娜期待着在大学开始新的一年。当他们进入新教室时,他们观察到学生的座位排列成一个n×m的网格。r行c列的座位用(r,c)表示,两个座位(a,b)和(c,d)之间的距离为|a−c|+|b−d|。作为班长,蒂娜可以使用恰好k桶粉红色油漆。发生以下过程。首先,蒂娜选择了教室里的k个座位,用粉色颜料作画。一桶油漆可以油漆一个座位。在Tina在上一步中绘制了k个座位后,Rahul选择了他坐的位置。由于讨厌粉红色,他不会选择涂成粉红色的座位。...
2022-01-16 16:25:35 270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人