
—————练习赛—————
w4149
无
展开
-
练习赛ming最优安排(贪心)
ming【问题描述】 给你 N个任务 ,对于第i个任务 ,我们需要ti的 时间去完成它,deadline是di。如果我们设fi为第i个任务的完成时刻 ,那你需要做的便是确定每个任务,那你需要做的便是确定每个任务开始 时间 ,使得 max(max(0,fi-di))最小化 。(同一时间只能做个任务) 【输入格式】 第一行 一个整数 N代表任务的个数 。 接下来 N行每两个整数 ,分别代表 ti,原创 2017-07-03 17:08:21 · 411 阅读 · 0 评论 -
练习赛qu(大根堆 STL)
qu【问题描述】 给你一个操作序列 ,问这个维护操作序列的数据结构是哪一种 ? 【输入格式】 第一行是一个正整数n代表操作数目 。 接下来n行,每行两个正整数opt,v。如果opt=1,代表我们将v加入数据结构;如果 opt=2,代表我们从数据结构中取出了一个元素,这个元素的值是 ��。 【输出格式】 输出 三行, 第一行代表数据结构是否可能栈 ,第二行代表数据结构是否可 能是队列 ,第原创 2017-07-03 17:28:47 · 704 阅读 · 0 评论 -
练习赛zi树上距离(分治)
zi 【问题描述】 我们有 m+1棵树 ,分别是 T0,T1,…,Tm。其中 T0是一棵只有个点的树 ,点 的编号为 0。 生成第 i棵树我们需要五个参数 ai,bi,ci,di,li(ai,bi < i)。我们生成第 。我们生成第i棵树是 将第ai棵树的ci号点和第bi棵树的di号点用一条长度为li的边连接起来形成新的树 (不会改变原来两棵树 不会改变原来两棵树 不会改变原来两棵树 不会改变原创 2017-07-03 17:22:11 · 374 阅读 · 0 评论 -
机房练习赛hao 【Tsinghua OJ】祖玛(Zuma) (字符串)
机房练习赛hao【问题描述】 祖玛是一款曾经风靡全球的游戏,其玩法是:在一条轨道上初始排列着若干个彩色珠子,其中任意三个相邻的珠子不会完全同色。此后,你可以发射珠子到轨道上并加入原有序列中。一旦有三个或更多同色的珠子变成相邻,它们就会立即消失。这类消除现象可能会连锁式发生,其间你将暂时不能发射珠子。 开发商最近准备为玩家写一个游戏过程的回放工具。他们已经在游戏内完成了过程记录的功能,而回放功能的原创 2017-07-07 16:59:18 · 1179 阅读 · 0 评论 -
机房练习赛kun (贪心 模拟)
机房练习赛kun (贪心 模拟)【问题描述】 栈是一种强大的数据结构,它的一种特殊功能是对数组进行排序。例如,借助一个栈,依次将数组 1,3,2 按顺序入栈或出栈,可对其从大到小排序: 1 入栈;3 入栈;3 出栈;2 入栈;2 出栈;1 出栈。 在上面这个例子中,出栈序列是 3,2,1,因此实现了对数组的排序。 遗憾的是,有些时候,仅仅借助一个栈,不能实现对数组的完全排序。例如给定数组 2原创 2017-07-07 17:08:32 · 559 阅读 · 0 评论 -
机房练习赛nan(分块压缩)
机房练习赛nan(分块压缩)【问题描述】 我们 有一个序列 ,现在他里面有三个数 1,2,2。我们从第三个数开始考虑: 1、第三个数是 2,所以我们在序列后面写 2个3,变成 1,2,2,3,3。 2、第四个数是 3,所以我们在序列后面写 3个4,变成 1,2,2,3,3,4,4,4。 那么你可以看到 ,这个序列应该是 1,2,2,3,3,4,4,4,5,5,5,6,6,6,6,…。 如果原创 2017-07-07 17:29:54 · 332 阅读 · 0 评论 -
动态统计逆序对 (树状数组 twopointer)
动态统计逆序对逆序对是一个非常经典的问题,对于一个序列Z,如果有 i < j 并且 Zi>Zj, 则我们称 (i,j)为一个逆序对。 但是逆序对虽然经典,却一个非常困难的问题因为列但是逆序对 。所以为简化问题,我们给定一个长度为N的序列Z和一个参数k, 我们希望知道有多少个 (L,R)满足 1≤L < R≤N,且Z1,Z2,⋯,ZL,ZR,⋯,ZN的逆序 对个数不超过k。【输入格式】 第一行两个原创 2017-09-03 18:55:00 · 493 阅读 · 0 评论 -
随(rand) (概率dp)
9.23思路: 考察概率和期望的求解,矩阵乘法,原根的性质,循环矩阵的性质,倍增优化DP. 首先需要注意到虽然n可以达到10^5,但相同数字可以合并考虑,只需要考虑mod个不同的数字及选择它们的概率. 第1个测试点:mod=2,则n个数字都是1,直接输出1即可. 第2个测试点:每次乘上去的数字只有一种选择,快速幂即可. 第3,4,5个测试点:定义f[i][j]表示i次操作后x的数值为j的概原创 2017-09-23 16:47:39 · 287 阅读 · 0 评论 -
便(then) (并查集)
9.23思路: 考察并查集的应用. 第1个测试点:只有1行,无法形成2*2的区域,只要输入的数字中没有负数就一定有解.接下来我们默认已经排除了输入的数字有负数的情况. 第2,3个测试点:3^12枚举所有可能的情况. 第4,5个测试点:仔细观察一下性质.(1,1)+(2,2)=(1,2)+(2,1),实际上是(1,1)-(2,1)=(1,2)-(2,2). 也就是说:对于任意一列,两行之间的原创 2017-09-23 16:49:25 · 214 阅读 · 0 评论 -
单(single) (树上操作 函数互推)
9.24 达哥思路: 分析:本题是一道二合一的问题,两个子任务相互对称. 算法1: t=0的数据最直接的想法是从每个点出发做一遍dfs,时间复杂度O(n^2),可以通过第1个测试点,期望得分10分 算法2: t=1的数据最直接的想法是枚举所有可能的a[]数组判断是否可行.第2个测试点n<=5,1<=a[i]<=20.注意20^5=3200000,直接暴力搜索a[i]的取值是可以承受的,可以原创 2017-09-25 09:36:15 · 324 阅读 · 0 评论 -
题(problem) (组合求方案数)
9.24 达哥思路: 计数四合一,考察组合数,卡特兰数,动态规划. 对于n<=100的40%数据:存在一个通用的DP,定义f[i][j][k]表示i步之后走到(j,k)的方案数,复杂度为O(n^3). 对于typ=1的数据:答案为catalan数,使用O(n)的catalan数递推公式或者利用组合数O(1)计算均可.catalan(n)=C(2n,n)/(n+1) 对于typ=0的数据:枚举原创 2017-09-25 09:33:26 · 523 阅读 · 0 评论 -
work (二分 贪心)
思路: #include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#define LL long longusing namespace std;#define N 100010int p[N],c[N];int n, m, pos;int main(){ freopen("work.i原创 2017-08-30 19:35:35 · 242 阅读 · 0 评论 -
序列seq (各种特判)
思路: #include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define N 58283333#define LL long longusing namespace std;int n, wa1, wa2, wb1, wb2, flag, a1, a2, b1, b2;int a[N], b[N原创 2017-08-30 19:38:34 · 435 阅读 · 0 评论 -
统计 (dp 求n位无前导零且数码从高到低非降并模 m等于 0的数个数 )
统计【问题描述】 求n位无前导零且数码从高到低非降并模 m等于 0的数个数。 【输入格式】 两行个整数 n, m; 【输出格式】 一行个整数代表答案模 10^9+7之后的值 。 【样例输入1】 2 12 【样例输出1】 4 【样例输入2】 3 111 【样例输出2】 9 【样例输入3】 452 10 【样例输出3】 0 【样例输入4】 6 58 【样原创 2017-08-31 16:44:05 · 737 阅读 · 0 评论 -
不正常团伙 (离线线段树 莫队)
不正常团伙 (莫队)9.27思路: std做法。 离线+ 线段树 将询问R 值排序,考虑维护一个数组A,表示当前询问R 值确定,对于每一个L 值答案是多少 假设一直R-1 时的数组A’,我们需要求R 的数组A 预处理处每个位置相同值的上一次出现位置prv[i]。 那么对于A 数组中所有prv[r]+1 到r 的位置,都要加v[r],因为这些位置到r 的区间v[r] 只出现过1 次。 同原创 2017-09-27 15:18:25 · 335 阅读 · 0 评论 -
so就 (二分答案 dp 贪心)
so就【背景描述】 一排 N 个数, 第 i 个数是 Ai , 你要找出 K 个不相邻的数, 使得他们的和最大。 请求出这个最大和。【输入格式】 第一行两个整数 N 和 K。 接下来一行 N 个整数, 第 i 个整数表示 Ai 。【输出格式】 一行一个整数表示最大和, 请注意答案可能会超过 int 范围【样例输入】 3 2 4 5 3【样例输出】 7【数据范围】 对于 20% 的数原创 2017-09-11 15:20:12 · 318 阅读 · 0 评论 -
sumit (Mobius 分块)
Problem 2. sumit Time limit: 1 second Memory limit: 256 MBMr. H 最近画了一个很大的表格,这个表格有n 行m 列,其中第i 行第j 列的为元素aij,且: aij = gcd(i; j) Mr. H 现在很好奇整个表格中数的和是多少,你只需要输出这个和模10086。Input 第1 行1 个整数T 表示数据组数。 接下来T 行原创 2017-09-27 21:25:31 · 458 阅读 · 0 评论 -
NYG的序列拆分 详解(递推矩阵快速幂)
思路: std的题解: 算法一 直接按定义计算,O(rnn!),期望得分10。 算法二 r 算法三 注意到题目实际上是这样一个问题:将若干个等比数列拼成一个长度为n的序列,有多少种方案。由于数列中的数都是整数,除去公比为1的情况,每个等比数列的长度都不会很长,最长为log r。 这样我们可以直接求出所有可能的等比数列,不妨枚举其首项和公比,即可在O(r^2 log r)时间内找原创 2017-09-19 17:28:06 · 4007 阅读 · 0 评论 -
NYG的动态数点
思路: std的题解: 算法一 直接上暴力模拟,枚举每一个区间,时间复杂度O(n3)。 期望得分30分。 算法二 枚举一个左端点,然后开一个桶,再往右扫过去。 每一次加入一个数更新一下当前的gcd,然后看区间中是否存在这个数。 时间复杂度O(n2 log(n)) 期望得分60分。 算法三 开始用ST表预处理一下区间gcd,以及区间最小值。 二分区间长度,然后每一次check扫原创 2017-09-19 16:40:49 · 1064 阅读 · 0 评论 -
NYG的背包 (贪心)
题解#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define LL long longusing namespace std;const int N = 1e5+4, INF = 0x3f3f3f3f;struct Node { LL aa, bb, cc; frien原创 2017-09-19 16:30:01 · 577 阅读 · 0 评论 -
crf 的数数 (树状数组 离线操作)
crf 的数数1 Description crf 从小就显现出了过人的天赋,他出生的第三天就证明了哥德巴赫猜想,第五天就证明了质 能方程,出生一星期之后,他觉得P 是否等于NP 这个问题比前面他证明的这些定理好玩多了,于 是他成为了一名计算机科学家。 在他开始接触计算机科学的第一天,他就已经刷遍了所有oj,这为他今后建立王国推行全民刷 题计划打下了坚实的基础。在他接触计算机科学一星期之后,原创 2017-09-11 15:41:06 · 313 阅读 · 0 评论 -
book书 (期望dp)
book书Hazel有n本书,编号1为n到 ,叠成一堆。当她每次抽出一本书的时候,上方的书会因重力而下落,这本被取出的书则会被放置在书堆顶。 每次有pi的概率抽取编号为i的书。她每次抽书所消耗的体力与这本书在这堆中是第几本成正比。具体地,抽取堆顶的书所耗费体力值为1 ,抽取第二本耗费体力值为2 ,以此类推。 现在 想知道,在很久很久以后(可以认为几乎是无穷的),她每次抽书所耗费的体力的期望值是多原创 2017-09-11 15:24:23 · 314 阅读 · 0 评论 -
Passward (kmp)
Passward你来到了一个庙前,庙牌上有一个仅包含小写字母的字符串 s。 传说打开庙门的密码是这个字符串的一个子串 t,并且 t 既是 s 的前缀又是 s 的后缀并且还在 s 的中间位置出现过一次。 如果存在这样的串,请你输出这个串,如有多个满足条件的串,输出最长的那一个。 如果不存在这样的串,输出”Just a legend”(去掉引号)。 输入格式: 仅一行,字符串 s。 输出格式原创 2017-09-11 15:06:30 · 308 阅读 · 0 评论 -
crf 的视察 (二分答案)
crf 的视察1 Description crf 拥有一个王国。 他的王国是长方形的,跨越了n 个纬度区和m 个经度区,且在每个经度区和纬度区的交界处有一座城市(即crf 的王国一共有n * m 座城市)。 某一天早上,crf 从他的一万平方米的大床上起来,他决定去视察一下他的王国,去查看一下他的全民刷题计划的实施情况。 消息一出,全王国各城市的市长们都吓到了,因为有一些市长偷懒还没有宣布c原创 2017-09-10 19:16:54 · 272 阅读 · 0 评论 -
FSN (dp)
FSN(fsn)【问题描述】 远坂凛与卫宫士郎遭遇了caster 召唤的龙牙兵的袭击,每个龙牙兵拥有生命值L[i]与防御力f[i]。 远坂凛一共拥有m 种类型的宝石攻击魔法,第i 种魔法,需要消耗k[i]个宝石,并对怪兽造成g[i]点伤害。卫宫士郎只会物理攻击。 当然,如果远坂凛使用第i 种魔法攻击第j 个龙牙兵的话,会使得第j 个龙牙兵的生命值减少g[i]-f[j],所以当攻击伤害小于防御力原创 2017-08-31 16:20:28 · 491 阅读 · 0 评论 -
聚会 (图论 关联删点)
聚会(party.c/cpp/pas)1 题目描述 你要精心策划一场聚会。 现在有n个人,一共有m个认识关系,认识的人一定是相互认识的。由于这次聚会十分重要,你希望被邀请的每个人都直接或间接认识,不仅如此,为了避免尴尬,你还希望每个被邀请的人都直接认识另外至少d个被邀请的人。作为策划者,你希望使得被邀请的人最多。注意同一对关系最多只会出现一次,且不会出现自环。 你需要输出被邀请的人数,并且将被原创 2017-08-28 15:43:29 · 441 阅读 · 0 评论 -
历史 (并查集 按秩合并)
历史(history.c/cpp/pas)题目描述 历史学家小A正在研究一个奇怪的王国的历史。当前阶段的任务是研究该国的交通。 根据这个奇怪的王国的史书记载,史书开始记载前这个王国有n个城市(城市从0开始标号),但所有城市之间都没有道路相连。 每一年,在位的国王会修建一条x到y的双向道路,一条道路可能被修建多次,但不会修建起点和终点为同一个城市的道路。 而在这之间,国王会计划进行若干次旅行。原创 2017-08-28 15:54:20 · 1366 阅读 · 0 评论 -
Nim游戏·改(博弈论)
Nim游戏·改(nim.c/cpp/pas)1 题目描述 众所周知的Nim游戏是这样的:有n堆石子,小A和小B轮流取石子,小A先操作,每次选择一堆石子,在这堆中取走任意多个石子,最后没有石子可取的人输。现在为了加强Nim游戏难度,每堆非空石子有一次额外的特殊机会,即耗掉这个机会,然后什么也不拿走,而其他条件都不变。当然,如果你将一堆本来有额外机会的石子拿空,那么这次额外机会也就没有了。 现在假设原创 2017-08-28 15:37:45 · 411 阅读 · 0 评论 -
生成树个数(基尔霍夫矩阵)
Problem 2. tcount Input file: tcount.in Output file: tcount.out Time limit: 1 second Mr.H发现了一个无向连通图,它觉得,如果选出一些边来,使得这个图变为一棵树,那么这个边集就非常棒。 现在,Mr. H 想让你帮忙求出有多少个非常棒的边集? Input 第1行,包含2个整数:n m,表示有n个点m条边原创 2017-08-18 20:03:51 · 6327 阅读 · 0 评论 -
Trie树上dfs跑 与 或 异或
Trie树上dfs跑与 或 异或【题目描述】 任务是写一个位运算数据库:需要能插入整数,并快速查找数据库中的一个整数与给定的整数x按位与/按位或/按位异或能得到的最大值。【输入格式】 第一行一个整数n,表示操作数。 接下来n行,每行两个正整数D,X。 若D=1,表示向数据库插入一个整数X。 若D=2,表示询问数据库中选择一个数与X按位与能得到的最大值。 若D=3,表示询问数据库中选择一个原创 2017-09-28 20:56:32 · 320 阅读 · 0 评论 -
来自风平浪静的明天 (记忆化搜索 dp)
来自风平浪静的明天【题目描述】 冬眠了五年,光终于从梦中醒来。 千咲、要,大家都在。 隐约记得“昨天”的海船祭,爱花意外成为贡女,沉入海底。 海面冰封,却有丝丝暖流在冰面之下涌动。 此时,爱花沉睡在祭海女神的墓地。她的胞衣在一点点脱落,化作一簇簇暖流,夹杂着她的感情,向海面上涌去。 爱花,你在哪里? 五年之后,纺已经成为海洋学研究科的大学生。 在纺的帮助下,光得知了海面下海流的情况。原创 2017-09-18 08:48:24 · 600 阅读 · 0 评论 -
saber (线段树维护dp)
saber出题人的题解: 20分做法: 大暴力 40分做法: 把食物以时间排序,f[i]表示吃到第i种食物时的最大分数。判断两种食物能否续接,复杂度O(n^2) 100分做法: 发现两种食物之间可以转移,当且仅当 |pi-pj| <= (ti-tj)/2 展开之后就是: 2 * ti-pi >= 2 * tj –pj || 2 * ti+pi >= 2 * tj+pj 于原创 2017-10-06 14:18:05 · 372 阅读 · 0 评论 -
商业街 (最小生成树)
商业街思路: 又打井又修路,感觉很不爽,不妨把打井也看成修路,修一条等同于打井代价的路到一个水源。 这样就是一个裸的最小生成树了,注意要加入n次哟。#include <iostream>#include <cstdio>#include <algorithm>#define N 100010using namespace std;int n, m, ans=0;int a[N], he原创 2017-10-06 14:30:02 · 298 阅读 · 0 评论 -
hex 模拟题
hex 7goj思路: 大模拟。。。 细节比较多,看代码就好#include <cstdio>#include <algorithm>#include <cstring>#include <iostream>#define N 2010using namespace std;int x, y, timx=0;int mp[N][N];int ans[10010];int flag原创 2017-10-06 14:35:47 · 292 阅读 · 0 评论 -
凯撒大帝 (二分)
凯撒大帝思路: nm预处理以每个点为右下角的矩形中1的个数。 对于每个点处理以该点为左上角的最大的全部为1的正方形,考虑二分边长,找到之后所有边长少于等于mid的正方形加1。#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define N 2010using namespace std;int原创 2017-10-06 14:49:43 · 358 阅读 · 0 评论 -
cal (树状数组)
cal思路: 转化成考虑每个点的贡献,一个点的贡献存在于左边比它小的数和右边比它大的数的任意组合,所以一个点的贡献就是左边比它小的数的个数和右边比它大的数的个数的乘积,树状数组维护。#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define N 300005using namespace st原创 2017-10-06 16:45:54 · 241 阅读 · 0 评论 -
1717(容斥)
1717思路: m-=17之后容斥就好了。#include <cstdio>#include <vector>#include <iostream>#include <algorithm>#define LL long longusing namespace std;int n;LL m, ans = 1, a[510];LL gcd(LL a, LL b){ if(b ==原创 2017-10-06 17:03:50 · 287 阅读 · 0 评论 -
lcp计数 (Trie)
lcp思路: 看着挺唬人的,其实是道水题。 考虑每个子串作为lcp的贡献,就是包含这个子串的字符串的两两组合。#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#include <iostream>#define N 1000005#define LL long longusing name原创 2017-10-06 19:17:34 · 329 阅读 · 0 评论 -
worldline 感性认识 理性打表
worldline思路: 第1e18个数。。。。。。 明显是个预处理后查询的题目,怎么存1e18??? 大胆猜测数字肯定不多。 打表打表!!! 发现没有1e9级别的数,自然之后的也不会有了。打表程序#include <map>#include <set>#include <cmath>#include <queue>#include <cstdio>#include <vecto原创 2017-10-06 19:36:03 · 283 阅读 · 0 评论 -
BZOJ 2435 道路修建
2435: [Noi2011]道路修建Time Limit: 10 Sec Memory Limit: 128 MB Description在 W 星球上有 n 个国家。为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通。但是每个国家的国王都很吝啬,他们只愿意修建恰好 n – 1条双向道路。 每条道路的修建都要付出一定的费用, 这个费用等于道路长度乘以道路两端的国家个数之原创 2017-09-21 15:01:35 · 255 阅读 · 0 评论