首页 > TAG信息列表 > 蚯蚓
NOI2017 蚯蚓排队
发现自己哈希的无数个问题…… 首先蚯蚓可以用链表维护这个序列。 然后发现 \(k\) 很少,意味着每次合并或删除所动的子串数量非常少。这启发我们可以把所有出现的长度 \(\le k\) 的子串全部通过哈希塞进一个桶里面,然后查询的时候我们直接再桶中查询。 对于如何维护这个桶,我们可以用NOIP 2016 day2
T1 [NOIP2016 提高组] 组合数问题 组合数学 solution 前置知识:组合数 40 pts 暴力套公式就好了,不但TLE,还会爆 long long,考虑优化 70 pts 组合数的递推式 \[C^m_n = C_{n - 1}^{m - 1} + C_{n - 1}^{m} \]根据公式预处理出 \(C\) 组,然后就优化到了 \(n*m*T\) 90 pts(O2:95 pts) 最后NIOP2016 DAT2
NIOP2016 DAT2 组合数问题 利用杨辉三角, 前缀和优化。 $C_n ^m = C_n ^{n-m} $ $ C_n ^m = C_{n - 1} ^{m - 1} + C_{n - 1} ^m$ 原谅我足够菜不知道组合数与杨辉三角有关系这一常识 #include <cstdio> #include <iostream> #include <cstring> #define orz cout << "AK IOI" <&蚯蚓之队列
那么只要原来的蚯蚓具有单调性,每次只需要找这三个队列的最大值即可 至于每次都要增加的长度,我们可以先不加上,等到取出来的时候在加 (i - 1) * q(i−1)∗q, 放回去的时候注意要减去 i * qi∗q #include<bits/stdc++.h> typedef long long ll; using namespace std; const in20200925 小练习总结
只会打 T1 的 55pts,实力垫底,自闭了。 T1 把 \(\{a_i\}\) 排序并去重,开一个 \(f_i\),存序列中小于 \(i\) 的最大的值。对于每一个 \(a_i\),枚举它的倍数 \(a_i\times k\),在 \(f_{a_i\times k}\bmod a_i\) 中找最大值就是答案。 这个点子是真没想到。。wtcl T2 出题人爬。 这道 sb 题蚯蚓
题目 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3。蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓。蛐蛐国里现在共有n只蚯蚓(n为正整 数)。每只蚯蚓拥有长度,我们设第i只蚯蚓的长度为a_i(i=1,2,...,n),并保蚯蚓,题解
题目找链接。 题意: 非常清晰的题意,就不再多说了。 分析: 看到这一题,其实思路一下子就有了,先从最暴力的开始吧:我们每次找一个最大拆开,然后别的都加上,也就是直接模拟,首先,这样的正确性是没问题的,但是时间不行,所以我们,要想别的办法,只招最大,大家应该很容易想到优先队列,用优先队队列:蚯蚓
题目链接:https://www.acwing.com/problem/content/135/ 题意:蛐蛐国最近蚯蚓成灾了! 隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓。 蛐蛐国里现在共有 n 只蚯蚓,第 i 只蚯蚓的长度为 ai ,所有蚯蚓的长度都是非负整数,即可能存在长度为0的蚯蚓。 每Noip 真题题解合集
目录 蚯蚓 由于我太懒了呀,再加上最近天天考试,就合起来写吧。(长期更新(CSP前))。 蚯蚓 noip2016 提高组day2 t2 题目 题意: 给定n条蚯蚓,接下来的m秒钟的时间里每秒将最长的蚯蚓切成⌊px⌋和x-⌊px⌋(0<p<1),其余蚯蚓则增长p,每t秒输出一次本次切割的蚯蚓的原长,最后将所得蚯蚓从大到[NOIP2016]蚯蚓 题解
题目描述 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」= [3.9」=3。蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓。蛐蛐国里现在共有n只蚯蚓(n为正整数)。每只蚯蚓拥有长度,我们设第i只蚯蚓的长度为a_i(i=1,2,…,n),并题解 P2827 【蚯蚓】
Solution 蚯蚓 题目大意:一开始有\(n\)只蚯蚓,你操作\(m\)次。每次抓最长的一只,记长度为\(x\),切成\(\lfloor px\rfloor\),\(x-\lfloor px\rfloor\)两只放回去,同时除这两只外的所有蚯蚓长度增加\(q\),问每次切断蚯蚓的长度,\(m\)次操作后所有蚯蚓的长度 队列 首先我们来解决除新增P2827 蚯蚓
目录 题目链接 思路 代码 题目链接 咕咕咕 思路 如果是$q=0$的话,相当于维护一个集合,支持查询最大值,删除最大值,添加新值,用$set$即可实现 如果是$q>0$的话,我们可以把用刀切看成是,把最大值$x$,分成$\left\lfloor px\right\rfloor-q$和$x-\left\lfloor px\right\rfloor-q$,然后P2827 蚯蚓
嘿嘿题目链接 首先我们给蚯蚓从大到小排序。然后可以发现,每次切出来的蚯蚓中,长的那写按切的顺序形成非上升序列,短的那些也如此。那么我们维护3个单调队列即可(原始蚯蚓也算一个单调队列),每次找三个队列队首元素最大的那个,把这个蚯蚓切掉,然后分别插入两个单调队列中。最后也按照这样蚯蚓
这道题通过隐含的条件可以发现产生的两类数是符合单调性的,就可以通过队列来维护 代码 #include<bits/stdc++.h>using namespace std;const int N=7e6+5;int n,m,q,u,v,tl;int t[3],h[3],delta,ans[N];int a[3][N];int main(){ scanf("%d%d%d%d%d%d",&n,&m,&q,&u,&v,&tl)[NOIP2016]蚯蚓(单调性乱搞)
题目 链接 思路 最简单的思路肯定就是直接用堆维护,每次取最大的那一个,切成两截扔回堆里面(至于所有蚯蚓加上\(q\),可以看做是新生成的蚯蚓减去\(time*q\),最后再加回去即可,其中\(time\)即第几秒),然而这样子做是\(O(n+m)log(n+m)\)的,过不了 分析后可以发现单调性,即如果把切出来的两部NKOJ4241 蚯蚓 (【NOIP2016 DAY2】)
问题描述 输入格式 第一行包含六个整数n,m,q,u,v,t,其中:n,m,q的意义见问题描述; u,v,t均为正整数;你需要自己计算p=u/v(保证0<u<v)t是输出参数,其含义将会在输出格式中解释。 第二行包含n个非负整数,为ai,a2,...,an,即初始时n只蚯蚓的长度。 同一行中相邻的两个数之间,恰好用一个空格LOJ2303 「NOI2017」蚯蚓排队
「NOI2017」蚯蚓排队 题目描述 蚯蚓幼儿园有$n$只蚯蚓。幼儿园园长神刀手为了管理方便,时常让这些蚯蚓们列队表演。 所有蚯蚓用从$1$到$n$的连续正整数编号。每只蚯蚓的长度可以用一个正整数表示,根据入园要求,所有蚯蚓的长度都不超过$6$。神刀手希望这些蚯蚓排成若干个队伍,初始时,每【NOIP2016】蚯蚓
这是一道基础数据结构的综合题,思考量较大,但是实现简单。 我们考虑建立三个队列,分别存储原始长度、切开后第一段的长度、第二段长度。显然,这三个队列是非严格单调下降的,对于每个时刻,将要切开的蚯蚓即为三个队列队头的最大值。另外,我们用一个变量delta表示整个集合的偏移值,即队列中的