写过的题
噜噜噜鹿鹿
盛世之牛马,乱世之炮灰
展开
-
AtCoder Beginner Contest 234 G Divide a Sequence
上面是n2的dp式子,每一层都比上层有2个不同点:1.多了个f[i - 1] * a[i],这个直接加上就可以2.除了上面这个,每个之前的f[i] * max(…)中的max都多了个a[i]我们需要考虑对2这个变动进行优化。maxx[i]代表以a[i]作为最大值*f[x](x< i)的答案,若当前a[i]比在栈里的a[st[top]]更大,那么说明之前那个maxx[st[top]]不应当再以a[st[top]]作为最大值,而变成了以a[i]为最大值,那么把之前贡献的加到现在的,再把之前的贡献清.原创 2022-03-12 15:12:33 · 540 阅读 · 1 评论 -
2021ICPC济南站 D Arithmetic Sequence
思路:易想到代价随公差的变化是一个凸函数,因此我们可以三分d,然后用玄学中位数法确定最终的数列。加上nth_element跑的飞快,还有玄学剪枝法,连Int128都不用开了,跑了253ms#include <iostream>#include <cstring>#include <algorithm>#include <vector>#include <math.h>#include <map>#include <原创 2021-11-15 22:01:26 · 1025 阅读 · 0 评论 -
[CQOI2011]动态逆序对
#include <iostream>#include <cstring>#include <algorithm>#include <vector>#include <math.h>#include <map>#include <set>#include <queue>using namespace std;#define endl '\n'#define int long long co原创 2021-11-11 15:46:18 · 267 阅读 · 0 评论 -
2021-2022 ACM-ICPC Brazil Subregional Programming Contest M. Monarchy in Vertigo
原题链接很容易得出要求的是dfs序,因为我们首先要求的是亲儿子,所有儿子都没了然后才是兄弟,而且不是从祖宗开始找兄弟,而是在上一代人找兄弟。链式前向星在这里用不了,只能用vector,因为链式前向星是后来的先遍历。最后用队列搞一下就行了。#include <iostream>#include <cstring>#include <algorithm>#include <vector>#include <math.h>#include原创 2021-11-08 18:21:04 · 324 阅读 · 0 评论 -
2021-2022 ACM-ICPC Brazil Subregional Programming Contest G. Getting in Shape
2021-2022 ACM-ICPC Brazil Subregional Programming Contest 巴西区域赛G题(思维,斐波那契数列)原题链接思路:首先容易看出,每个A都能给A后面第一个和第二个字母f[A]的方案数,那么对于一连串的A来讲,f[i] = f[i - 1] + f[i - 2],而B起到隔断的作用,他将整个数列隔断成f[x] * f[y] * …的形式,也就是多个斐波那契数列相乘,我们看第二个样例应该不难理解这一点。因此只需要dfs,看看能被哪几个斐波那契整除即可,注原创 2021-11-08 17:42:44 · 1021 阅读 · 0 评论 -
2021-2022 ACM-ICPC Brazil Subregional Programming Contest N. No Luck
原题链接题意:大意是求区间内大于等于某个数的个数。这个题有个坑,就是给你l,r,但是查询的是l + 1 ~ r,因为那些人只有退役之后才会关注别人,所以需要细节~~~解法:树状数组。询问和数组统一按降序排,维护一个指针q代表当前合法的a[i]在哪里(当前a[i]val值小于询问的val值),指针不断移动不断更新即可,注意更新的是a[i]的下标(id),然后查询的是query® - query(l),代表l + 1到r之中满足条件的点数,最后区间长度减去不满足条件的点就是答案了。当然你也可以直接按升序排直原创 2021-11-05 00:55:02 · 851 阅读 · 0 评论 -
2021 RoboCom 世界机器人开发者大赛-本科组(复赛)7-1 冒险者分队 (20 point(s)) (思维)
冒险者分队是人气 MMORPG《最终幻想 14》里的一个游戏系统。玩家通过招募 NPC (非玩家角色)组成小队完成特定任务后可以获取丰厚的奖励。由于完成任务有能力的要求,因此我们需要对 NPC 进行一定的训练。NPC 组成的小队会有三个属性:体能、心智,以及战术,玩家可以选择以下的两种训练课程之一对小队进行训练:提升其中一个属性 40,降低其他两个属性各 20;提升其中两个属性 20,降低剩下一个属性 40。如果在选择的训练课程后有任意一个属性小于 0,那么训练会失败,属性不会发生变化。为了完成特原创 2021-10-31 18:43:31 · 3701 阅读 · 1 评论 -
2021 RoboCom 世界机器人开发者大赛-本科组(复赛)7-2 拼题A打卡奖励 (25 point(s)) 01背包逆过程
拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 m i分钟做完,完成后可获得 c i 枚奖励的金币。活动规定每张打卡卷最多只能做一次,并且不允许提前交卷。活动总时长为 M 分钟。请你算出最多可以赢得多少枚金币?输入格式:输入首先在第一行中给出两个正整数 N(≤10 ^3) 和 M(≤365×24×60),分别对应打卡卷的数量和以“分钟”为单位的活动总时长(不超过一年)。随后一行给出 N 张打卡卷要花费的时间 m i(≤600),最后一行给出 N 张打卡卷对应的奖励金币数量 c i原创 2021-10-31 15:24:02 · 844 阅读 · 0 评论 -
Educational Codeforces Round 115 (Rated for Div. 2) D. Training Session(组合+容斥)
原题链接题意:给出n个具有a,b两个属性的点,让我们算出符合条件的方案数:选择一个三元组,使得这三个点中a互不相同或b互不相同。题目保证不会有a,b两个属性完全一样的两个点。思路:组合数,容斥原理。我们认为直接计算符合条件的很麻烦,因此我们选择计算总方案数-不符合的数。题目中的意思是非a或非b,我们可以转化为非(a&b),那么就是计算选出三个点,使得这三个点中存在相同的a且存在相同的b的方案数。总的方案数是n * (n - 1) * (n - 2) / 6,那么要求的方案怎么计算呢?我们逐个枚举原创 2021-10-29 21:11:40 · 188 阅读 · 0 评论 -
江西省赛 G Magic Number Group(莫队区间众数)
比赛链接题意大概是找出一个p,让这个p尽可能整除多的区间内的数,问这个p最多能除区间内的多少个数。可以立刻想到将所有区间内的数分解质因子,转化为区间众数问题,找出区间内出现最多的因子个数,那么这题就变成了莫队问题。坑点:注意T非常大,因此一开始用了线段树直接求出众数t了,因为线段树初始化复杂度有点大,另外主席树+二分在线做法应该也无法做,因为你做完一组之后要把所有的权值清0,这个复杂度也是比较大的。因此我们只能使用莫队。莫队cnt记录所有质因子的出现个数,num[x]记录出现次数为x的数的个数,add原创 2021-10-29 19:11:00 · 379 阅读 · 0 评论 -
HDU - 6992 Lawn of the Dead 杭电多校
原题链接思路:我们以可达性思考,每个格子的可达性来自于左边的格子和上面的格子,我们以第一行为例,为什么第一行的第一个地雷右边的所有点都无法到达?因为这颗地雷割断了剩下所有点来自左边的方案,并且上方没有方案,因此剩下所有的格子可达性都为0。同理,剩下的所有格子也都可以这么思考。在某一行碰到地雷之后,我们需要看一下剩下的格子,在他们上面是否有可达的格子,如果上面有格子可达,那么这个格子也可达,并且因为这个格子可达,因此在他右边的所有格子(直到该行的下一个地雷的位置)就因为他多了一个来自左边的可达性,因此该位原创 2021-10-25 21:09:16 · 174 阅读 · 0 评论 -
CCPC网络赛—Jumping Monkey
CCPC网络赛—Jumping Monkey思路:先把所有的边存下来,不连,然后按所有权值从小到大排序,重新构建一颗树。从小到大枚举所有节点,遍历当前节点的所有连边,若对面节点比当前节点大,则到不了对面,continue,若比当前节点小,则证明当前节点可以到达对面节点的连通块中所有的点,将对面连通块中权值最大的节点与自己连边,这样对面连通块所有节点深度+1,我们将深度作为答案即可输出。难点:如何想到把深度作为答案输出#include <iostream>#include <cstr原创 2021-10-11 16:55:50 · 391 阅读 · 0 评论