暴力
WerKeyTom_FTD
我是一只来自中山纪念中学高三的oier,请多多指教
展开
-
[UOJ#214]合唱队形
题目大意有n个人每个人有一个字符集初始为空。 有tot个事件,每个事件形如在第ai个人的字符集里放了bi这个小写字母。 每个时刻等概率发生一个事件。 有一个长度为m的字符串s。某个时刻如果存在编号连续的m个人,按从小到大的顺序发现对于第i个人字符集里都有si,那么则胜利。 问胜利的期望时间,要求判断无解,答案在模意义下进行。容斥设f(i)f(i)表示时刻i还没有胜利的概率。原创 2017-11-24 12:11:59 · 984 阅读 · 0 评论 -
说无可说
题目描述“What’s left to say when every word’s been spoken?” “若沉默再无休止,是否已经说无可说?” ——来自网易云音乐 沉默之中,我已不懂言语。 幻觉中,有人在轻声低吟。 那是谁? 我听见,那个人说了N句话,然而好多话都是重复或者类似,比沉默更加让人不堪。 打破不堪,我想。 每句话是由若干个小写字母组成的字符串。 字符串A和B的相原创 2017-06-13 15:00:10 · 788 阅读 · 0 评论 -
[LibreOJ β Round]ZQC的树列
题目描述见LOJ。做法显然对于每一段数字,要么可选要么必选。 假如有t个,若必选,则方案为2^t-1,否则为2^t。 因此只有1、2、3就可以构造所有情况。 尝试把n拆分成2^t-1以及2^t的乘积。 这个用dfs即可。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++原创 2017-06-17 15:31:55 · 846 阅读 · 0 评论 -
[bzoj4835]遗忘之树
题目描述定义任意两点之间存在唯一路径的无向图是树。对于一棵n个点的树,如果删掉某个点u之后每个连通块的大小均不 超过n/2,那么称u为这棵树的重心。现在有一棵n个点的树T,利用过程P来构造一个n个点的有向图G,初始G没有边 。现在对T调用过程P,P的内容如下: 1:删去u,对每个连通块递归调用过程P; 2:对每个连通块,如果它的标号最小的重心为v,那么在图G中连一条u到v的有向边。 3:现原创 2017-05-20 09:06:59 · 434 阅读 · 0 评论 -
[UOJ #21]缩进优化
题目大意找到合适的x来最小化 ∑ni=1⌊aix⌋+ai%x\sum_{i=1}^n\lfloor\frac{a_i}{x}\rfloor+a_i\% x解法把模给拆了 ∑ni=1ai+∑ni=1⌊aix⌋∗(1−x)\sum_{i=1}^na_i+\sum_{i=1}^n\lfloor\frac{a_i}{x}\rfloor*(1-x) 维护桶的前缀和,枚举x和⌊aix⌋\lfloor\fr原创 2017-04-23 15:17:53 · 626 阅读 · 0 评论 -
[bzoj4671]异或图
题目描述定义两个结点数相同的图 G1 与图 G2 的异或为一个新的图 G, 其中如果 (u, v) 在 G1 与 G2 中的出现次数之和为 1, 那么边 (u, v) 在 G 中, 否则这条边不在 G 中. 现在给定 s 个结点数相同的图 G1…s, 设 S = {G1, G2, … , Gs}, 请问 S 有多少个子集的异 或为一个连通图?斯特林反演用贝尔数的时间来枚举子集划分。 规定被划原创 2017-04-22 15:31:42 · 1676 阅读 · 2 评论 -
最小边权和
题目描述有一张n个点m条边的有向图,每条边有一个互不相同的边权w,有q个询问,要求你从点a经过不超过c条边到点b,要求经过的边权递增并和尽量小,求出最小的边权和,如果没有合法方案则输出-1。水题按边权从小到大加入做floyd即可。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespa原创 2017-05-04 15:39:21 · 1888 阅读 · 0 评论 -
数列
题目描述有一个长度为n 的排列,现在有一些位置的数已经模糊不清了,你只知道这个排列的逆序对个数是K,你能计算出总共有多少可能的排列吗?折半很经典的meet in the middle 不说了,记住有各种精妙实现压复杂度。#include<cstdio>#include<algorithm>#include<map>#define fo(i,a,b) for(i=a;i<=b;i++)usi原创 2017-05-04 15:36:42 · 549 阅读 · 0 评论 -
[bzoj3498]Cakes
题目描述N个点m条边,每个点有一个点权a。 对于任意一个三元环(i,j,k)(i<j<k)(i,j,k)(i<j<k),它的贡献 为max(ai,aj,ak) 求所有三元环的贡献和。 N<100000,,m<250000。瞎做我们都知道一个定理就是一个图,枚举不比一个点度数小的点只有根号m个。 因此我们可以以度数来定义优先级,度数大优先级高,相同度数编号越大优先级越高。 对于一个三元环原创 2017-05-04 15:12:17 · 815 阅读 · 0 评论 -
[bzoj4828][HNOI2017]大佬
题目描述人们总是难免会碰到大佬。他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢言语。你作为一个OIER,面对这样的事情非常不开心,于是发表了对大佬不敬的言论。大佬便对你开始了报复,你也不示弱,扬言要打倒大佬。 现在给你讲解一下什么是大佬,大佬除了是神犇以外,还有着强大的自信心,自信程度可以被量化为一个正整数C(1<=C<=10^8),想原创 2017-04-19 22:30:16 · 1406 阅读 · 0 评论 -
围墙
题目描述蛐蛐国准备在和它的一个邻国——蝈蝈国之间修一堵围墙。 围墙可以看成是一个长度为n的括号序列,与此同时还有一个长度为n的排列P,一个围墙被称为稳的,当且仅当: 1、这个括号序列是合法的。 2、构造一张n个点的图,当且仅当第i个位置是左括号时,点i向右Pi连边,最后形成的图必须满足每个点度数均为一。保证对于任意i有Pi 一个括号序列合法的定义如下: 1、空序列是合法的。 2、如果“原创 2017-03-25 16:40:06 · 551 阅读 · 0 评论 -
轮回
题目描述掌管着世界的暗流的是一个叫做Samjia的人。 他看到所有人的生死,他看见所有人一世又一世的轮回,而他却从未把握过自己的命。 在无法估计的命中,他看见那些轮回,他很好奇,这一切的一切,都是如何开始如何结束,他想,就算是他也会堕入这样的轮回中的吧。 于是他开始数轮回,他看到的是一个有n个点m条边的无向图(边是带标号的),一个轮回是一个由四条边组成的环,环中不能有重复的边,除了起点和终点外原创 2017-03-30 21:26:21 · 659 阅读 · 0 评论 -
[hackerrank]Range Modular Queries
题目大意区间询问模x等于y的值的个数 值域是[0,40000] 允许离线平衡结合对于x<=200的询问,因为x很小所以y也很小,这时候可以考虑使用分块。 将序列分块,然后处理sum[i,j,k]表示前i块中模j等于k的值有多少个。 询问时暴力扫剩余部分。 对于x>200的询问,因为x较大所以符合条件的数很小,这时候可以考虑使用莫队。 维护一个桶,每次询问只要看一下对应符合的数字有多少个即原创 2017-03-20 15:24:21 · 503 阅读 · 0 评论 -
三明治
题目描述做法对于每个格子(i,j)设L(i,j)表示先吃靠左边界的格子至少要吃多少格子,R意义类似。 然后你发现L(i,j)>=L(i,j-1)。 于是一行一行做,每行才清空一次标记数组。#include <cstdio>#include <algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b原创 2017-06-25 20:35:18 · 481 阅读 · 0 评论 -
[bzoj4849]Mole Tunnels
题目描述鼹鼠们在底下开凿了n个洞,由n-1条隧道连接,对于任意的i>1,第i个洞都会和第i/2(取下整)个洞间有一条隧 道,第i个洞内还有ci个食物能供最多ci只鼹鼠吃。一共有m只鼹鼠,第i只鼹鼠住在第pi个洞内,一天早晨,前k只 鼹鼠醒来了,而后n-k只鼹鼠均在睡觉,前k只鼹鼠就开始觅食,最终他们都会到达某一个洞,使得所有洞的ci均大 于等于该洞内醒着的鼹鼠个数,而且要求鼹鼠行动路径总长度最原创 2017-06-26 16:47:09 · 715 阅读 · 0 评论 -
[bzoj4927][SDOI省队集训2017]diyiti
题目大意在一个长度为n的数列中找出六个数,使得可以把它们分成四组,每组的和均相等。求方案数。XJB做只有1+1+1+3或1+1+2+2两种拆分。 先预处理two[x]表示找出两个数和为x的方案数,以及one[x]表示有多少数是x。 对于1+1+1+3,枚举那个1是x,首先有一个C3one[x]C_{one[x]}^3。 对于那个3,我们先枚举一个ai,然后对应方案数是two[x-a[i]]。原创 2017-05-31 20:26:16 · 766 阅读 · 0 评论 -
[2017集训队作业自选题#119]众数MAX
题目大意两个长度为n的序列a和b,将它们分别任意排列,然后令c[i]=a[i]+b[i]c[i]=a[i]+b[i],使c[i]的众数出现次数尽量多。 值域与n同阶。做法不妨令A[i]表示a中i的出现次数,B同理。 令ans[i]表示i作为众数的最多出现次数。 显然的暴力 ans[i]=∑ij=0min(A[j],B[i−j])ans[i]=\sum_{j=0}^imin(A[j],B[i-原创 2017-12-21 21:07:42 · 576 阅读 · 0 评论 -
[CF891E]Lust
题目大意一个序列a,做k次下列操作: 1、随机一个下标x,答案加上Πni=1,i!=xai\Pi_{i=1,i!=x}^na_i 2、将axa_x减一。 求答案的期望。做法设bib_i表示最终aia_i减少了多少次。 答案是Πni=1ai−Πni=1(ai−bi)\Pi_{i=1}^na_i-\Pi_{i=1}^n(a_i-b_i) E(Πni=1ai−Πni=1(ai−bi))=Πni=原创 2017-11-24 16:32:20 · 1157 阅读 · 0 评论 -
[arc075f]Mirrored
题目大意rev(n)为n翻转后的十进制数(从第一个非0位往后翻转)。 有多少n满足rev(n)=n+d。做法如果d末尾有0,显然那几位可以任意填(只要不造成前导0),先剔除掉。 然后就可以暴力枚举一半的数字并判断。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std原创 2017-11-04 09:19:55 · 623 阅读 · 0 评论 -
[agc011e]Increasing Numbers
前言1min了我还不会一点思路都没有这正常? orz题解。题意把大整数n拆成若干个上升数之和,最小化上升数的个数。 上升数即从最高位往最低位是一个不下降的序列。做法发现任意上升数能表示成全1数的和。 如果你允许0的存在,那么每个上升数都能被拆成9个全1数的和。 全1数的位数假如是k,可以表示成10k+1−19\frac{10^{k+1}-1}{9} 刚好0是-1位,代入该式子也成立。 现原创 2017-10-12 21:25:37 · 834 阅读 · 1 评论 -
[agc015f]Kenus the Ancient Greek
前言结论题我只能orz。 题解错了很不舒服。题意找到(n,m)以内点对欧几里得步数最大的点对个数。做法设f(a,b)表示欧几里得步数。 我们先设斐波那契数F0=1,F1=1,Fi+2=Fi+1+FiF_0=1,F_1=1,F_{i+2}=F_{i+1}+F_i 容易发现f(Fk,Fk+1)=kf(F_k,F_{k+1})=k。 结论一:如果f(x,y)=kf(x,y)=k,且x<yx<y,则原创 2017-10-05 16:00:44 · 936 阅读 · 0 评论 -
神奇的玩具
题意一副无向图,第i条边连接ai和bi。现在你需要选择恰好k个点,对于第i条边,你必须让ai和bi至少一个被选择,如果ai被选择,付出pi的代价,否则付出qi的代价(pi<=qi),求最小代价。搜索可以发现pi是必然代价,qi-pi就是附加代价。 于是产不产生代价只与ai是否没有被选,这方便我们加上最优性剪枝。 一个不选会导致一堆必选。 判掉度数为0和自环,我们可以发现T(n)<=T(n-1)原创 2017-08-15 19:56:56 · 366 阅读 · 0 评论 -
Create
题目大意一个序列,有很多询问,每个询问要问区间>=x的数的个数。 现有若干修改操作,区间赋值,每次修改后请你将所有询问得到的答案和输出。颜色段均摊分析颜色段! 可以用set维护颜色段。 然后只需要考虑一个区间全部由x变成y产生代价。 先把询问按x排序做可持久化线段树,然后就很好做。#pragma GCC optimize(2)#include<cstdio>#include<algori原创 2017-08-17 19:16:09 · 445 阅读 · 0 评论 -
[CF538D]Weird Chess
题目大意懒得写做法暴力判断哪些走法要封死。 剩余走法都可以当做有效,判断每个应该攻击的位置是否被攻击了。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=100+10,mx=50;bool pd[maxn][maxn],bz[ma原创 2017-06-15 14:51:56 · 527 阅读 · 0 评论 -
[CF538C]Tourist's Notes
题目大意懒得写做法每一段内求个最高,列不等式。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=100000+10;int d[maxn],h[maxn];int i,j,k,l,t,n,m,x,y,ans;bool czy;原创 2017-06-15 14:50:04 · 461 阅读 · 0 评论 -
[CF538B]Quasi Binary
题目大意懒得写做法这样的数只有2^6个。 因此暴力DP#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using namespace std;const int maxn=1000000+10原创 2017-06-15 14:48:55 · 411 阅读 · 0 评论 -
[CF538A]Cutting Banner
题目大意懒得写做法枚举分割位置暴力判#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using namespace std;const int maxn=100+10;char s[maxn]原创 2017-06-15 14:47:42 · 433 阅读 · 0 评论 -
[bzoj4277]Ciecie
题目描述给定一个长度为k的数字串N以及三个质数p,q,r,请你将N划分为三段非空字符串,使得第一段能被p整除,第二段能被q整除,第三段能被r整除,且每一段都不含前导0。 注意:单独的0是允许的。 2015<=p,q,r瞎做我们可以很容易通过前缀和后缀和处理判断一个前缀或后缀是不是p或r的倍数。 这个q的倍数呢? 假如[i,j]是q的倍数。 q|∑jk=ia[k]∗10j−kq|\sum_{原创 2017-02-15 16:44:03 · 516 阅读 · 0 评论 -
[CF765F]Souvenirs
题目大意给定一个序列 多次询问一个区间最接近两个数的差值 最接近的两个数可以相同,但不能是同一个位置上的数。 允许离线强大线段树做法我们首先可以扫描线 从左到右扫,每次处理右端点在扫描线上的所有询问。 我们维护一颗线段树,线段树每个节点的值没有太多实际的意义,但它需要满足一个性质: 假如当前扫描线在now,那么在线段树中查询[l,now]这个区间的答案就是正确的答案 听起来很不可思议?原创 2017-02-23 17:18:25 · 1483 阅读 · 0 评论 -
[51nod月赛19A]区间的价值2
题目大意求所有区间and值与or值乘积的和瞎搞枚举左端点,我们需要知道and值与or值均相同的区间可以直接做出来。 这样划分最多60个区间,用链表顺序保存可能使得and值和or值改变的右端点即可。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=原创 2016-10-31 16:49:20 · 431 阅读 · 0 评论 -
配对游戏
题目描述爆搜该怎么搜就怎么搜 然后我加理论下界减枝,但仍然很慢,所以只能调调参数水过去了QAQ#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxh=20000000;bool bz[30],pd[10][10],vis[10][10]原创 2016-10-29 15:08:20 · 469 阅读 · 0 评论 -
Divisors
题目大意给定m个整数a1~m,m+1个询问第i个询问求[1,n]有多少个数是恰好是a中i-1个数的约数。暴力一个数的约束是根号个,因此暴力枚举约束,哈希表统计#include<cstdio>#include<algorithm>#include<cmath>#include<map>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std原创 2016-11-05 16:03:41 · 340 阅读 · 0 评论 -
Tourist Attractions
题目描述在美丽的比特镇一共有n 个景区,编号依次为1 到n,它们之间通过若干条双向道路连接。 Byteasar 慕名来到了比特镇旅游,不过由于昂贵的门票费,他只能负担起4 个景区的门票费。他可 以在任意景区开始游览,然后结束在任意景区。 Byteasar 的旅游习惯比较特殊,一旦他路过了一个景区,他就一定会进去参观,并且他永远不会参 观同一个景区两次。所以他想知道,有多少种可行的旅游路线,使原创 2016-11-04 16:14:53 · 1858 阅读 · 0 评论 -
String Master
题目描述所谓最长公共子串,比如串A:“abcde”,串B:“jcdkl”,则它们的最长公共子串为串“cd”,即长 度最长的字符串,且在两个串中都作为连续子串出现过。 给定两个长度都为n 的字符串,对于字符串大师的你来说,求它们的最长公共子串再简单不过了。 所以现在你有k 次修改机会,每次你可以选择其中某个串的某个位置,将其修改成任意字符。 你需要合理使用这k 次修改机会,使得修改之后两个串的原创 2016-11-04 16:09:59 · 1107 阅读 · 0 评论 -
Rectangle
题目大意求一个面积最小的矩形使其能容纳给定的n个矩形,这n个矩形在该矩形内不能有交,且不能旋转或翻转。搜索我们知道——最终方案中,不会存在任何一个矩形可以向左或向上移动。 也就是它们都是贴着的。 于是我们可以定义关键横坐标,初始时只有1,每加入一个矩形,就将其右边界往右一格所在设为关键横坐标。我们规定矩形的左边界必须在关键横坐标上,于是可以知道符合这个规则最后矩形都是贴在一起的。 那么每次枚举原创 2016-06-29 21:13:49 · 537 阅读 · 0 评论 -
[NOI2016模拟5.14]BZOJ
前言加这个前缀也是为了防误会。。题目大意一个n个结点组成的无向完全图,每条边权值在[1,p]且为整数。问有多少种这种图1到n的最短路为m。搜深搜出每种距离标号的点有多少个。 于是就分层了。 然后根据最短路原则,距离标号为i的点一定存在一个距离标号为j的点它们的连边的权值为i-j。 这个不好算,但我们可以算出从所有距离标号小于它的点走过来的距离大于等于j的答案减去大于j就变成了至少1个等于。原创 2016-05-18 18:40:58 · 932 阅读 · 0 评论 -
[bzoj4325][NOIP2015]斗地主
题目大意现在给你n张牌,只能按照斗地主的规则出牌,规则如下: 王炸 一张单牌 一对牌 三张相同单牌 炸弹 顺子(不包括王和2,与斗地主相同需要连续至少5种) 双顺(即每种两张,至少连续3种,不包括王和2) 三顺(即每种三张,至少连续2种,不包括王和2) 三带一单 三带一对 四带两单 四带王炸 四带一对 四带两对 两个炸弹DFS我们可以使用dfs来做此题。优化首先,我们知原创 2015-11-13 21:20:57 · 1257 阅读 · 0 评论 -
[bzoj3139][HNOI2013]比赛
题目大意现有N个队伍,每两个队伍对决,胜者得3分,平局各的一分。给出每个队伍最终得分,求有多少种比赛可能。N<=10。深搜我们可以深搜两两队之间较量的结果,每次将一个队与后面所有队做完,若此时该队总分为0就继续深搜。假设当前做到第i队与第j队间的比赛,当3∗(n−j+1)<a[i]3*(n-j+1)<a[i],则一定无法满足可以不继续深搜来优化算法。记忆化搜索我们可以用map帮助实现记忆化搜索,用f原创 2015-12-09 19:24:59 · 1307 阅读 · 0 评论 -
[bzoj3140][HNOI2013]消毒
题目大意有a*b*c的立方体,有些位置需要染色。可重复染色,可染不需染色的位置。染x*y*z得立方体需要min(x,y,z)的费用。求最小费用,使所有需要被染色的位置被染色。a*b*c<=5000。转换我们发现,最优策略每次只会染1*b*c或a*1*c或a*b*1。 因此转换为三维最小集覆盖问题。 二维可以利用二分图的最小覆盖来做,那三维怎么办?深搜因为a*b*c<=5000 所以min(a,原创 2015-12-09 19:55:36 · 743 阅读 · 0 评论 -
序列
题目大意一个长度为N个序列,每个数大小在10^9内。求(i,j,k)使得a[i],a[j],a[k]能组成三角形。请你找出来使得k最小,若k相同使得j最小,若j也相同使得i最小。暴力考试时莫名其妙撞了正解…… 我们现在想这样一个问题,是否任意X个数内一定存在组成三角形? 我们只要违背它,找出最长的序列,X就可以得知。 三角形组成规则是较小两边之和大于第三边。 那么我们每次令新的元素为最大两个原创 2015-10-06 15:54:40 · 495 阅读 · 0 评论