Description “无体育,不清华”.“每天锻炼一小时,健康工作五十年,幸福生活一辈子” 在清华,体育运动绝对是同学们生活中不可或缺的一部分.为了响应学校的号召,模范好学生王队长决定坚持晨跑.不过由于种种原因,每天都早起去跑步不太现实,所以王队长决定每 a 天晨跑一次.换句话说,假如王队长某天早起去跑了步,之后他会休息 a−1 天,然后第 a 天继续去晨跑,并以此类推. 王队长的好朋友小钦和小针深受王队长坚持锻炼的鼓舞,并决定自己也要坚持晨跑.为了适宜自己的情况,小钦决定每 b 天早起跑步…
#6250. 「CodePlus 2017 11 月赛」找爸爸 题目描述 小 A 最近一直在找自己的爸爸,用什么办法呢,就是 DNA 比对. 小 A 有一套自己的 DNA 序列比较方法,其最终目标是最大化两个 DNA 序列的相似程度,具体步骤如下: 给出两个 DNA 序列,第一个长度为 nnn,第二个长度为 mmm. 在两个序列的任意位置插入任意多的空格,使得两个字符串长度相同. 逐位进行匹配,如果两个序列相同位置上的字符都不是空格,假设第一个是 xxx,第二个是 yyy,那么他们的相似程度由 …
Description 有 n 棵树,初始时每棵树的高度为 H_i,第 i 棵树每月都会长高 A_i.现在有个木料长度总量为 S 的订单,客户要求每块木料的长度不能小于 L,而且木料必须是整棵树(即不能为树的一部分).现在问你最少需要等多少个月才能满足订单. Input 第一行 3 个用空格隔开的非负整数 n,S,L,表示树的数量.订单总量和单块木料长度限制.第二行 n 个用空格隔开的非负整数,依次为 H1,H2,…,Hn.第三行 n 个用空格隔开的非负整数,依次为 A1,A2,…,An. Ou…
[LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞 试题描述 到河北省 见斯大林 / 在月光下 你的背影 / 让我们一起跳舞吧 うそだよ~ 河北省怎么可能有 Stalin. 可是-- 可是如果 Stalin 把自己当作炸弹扔到地堡花园里来了呢? 怀揣着这份小小的希望,元首 Adolf 独自走进了花园.终有一天会重逢的吧,Stalin.或许是在此处,或许是在遥远的彼方. 无论如何,在此之前,好好装点一番花园,编排一段优美的舞步吧! 元首把花园分为 \(n\) 行 \(m\…
题目传送门 https://loj.ac/problem/6252 https://lydsy.com/JudgeOnline/problem.php?id=5109 题解 首先跑最短路,只保留 \(dis[v] = dis[u] + w\) 的边,形成一个 DAG. 如果只有一个点的话,如何判断这个点是否是必经之点.一个很简单的方式是判断 \(S\to A \to T\) 的方案数是否等于 \(S\to T\) 的方案数. 但是这里的要求是两个点,那么就是 \(S\to A \to T\) 的…
学习了新姿势..(一直看不懂大爷的代码卡了好久T T 首先数字范围那么小可以考虑枚举众数来计算答案,设当前枚举到$x$,$s_i$为前$i$个数中$x$的出现次数,则满足$2*s_r-r > 2*s_l-l$的区间$[l+1,r]$其众数为$x$,这个显然可以用一个数据结构来维护. 直接扫一遍效率是$O($数字种类数$*nlogn)$的,无法承受,但是我们发现,对于每一段非$x$的数,$2*s_i-i$是公差为$-1$的等差数列,所以它们对答案的贡献实际上可以一次性计算.设$L$为一段非$x$数…
从S出发跑dij,从T出发跑dij,顺便最短路计数. 令$F(x)$为$S$到$T$最短路经过$x$的方案数,显然这个是可以用$S$到$x$的方案数乘$T$到$x$的方案数来得到. 然后第一个条件就变成了满足$F(A)+F(B)=F(T)$,这个只要用map存一下点的状态,每次查$F(T)-F(A)$就可以得到$B$的状态了. 第二个条件实际上就是$A$无法到达$B$,怎么判断这个呢. 按最短路正反拓扑排序两次,分别按两种拓扑序做$O(n*m/32)$的传递闭包,然后一个点两种(按拓扑序得到的能…
这种题先二进制拆位,显然改的位置只有每一段确定的数的开头和结尾,只需要对于每一个可决策位置都尝试一下填1和0,然后取min即可. #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> #define ll long long using namespace std; ; const ll inf=1e15; struc…
n<=500000的数字,问有多少个区间的众数出现次数严格大于区间长度的一半. 这么说来一个区间就一个众数了,所以第一反应是枚举数字,对下标进行处理.然后没有第二反应.很好. 在枚举一个数字的时候,可以把这个数字出现的位置记+1,没出现的位置记-1,实际就是问现在这个数组有多少个区间和>0,就是问对每个前缀和Si有多少Sj<Si. 出现的位置加起来总共只有n个,如果-1的那些区间能够进行区间处理该多好啊! 那就维护一个以Si的值为下标的东西,然后查一个区间的答案就是查: 红色部分.也就是…
n<=50000,m<=50000的图,给s和t,问有多少点对$(a,b)$满足 嗯. 不会. 首先最短路DAG造出来,然后两个条件转述一下:条件一,$N_a$表示从s到t经过a的路径,$N_a+N_b=N_t$:条件二,在最短路DAG上A不能到B,B不能到A. 条件一就迪杰斯特拉的时候算一下N,注意不在最短路DAG上的点$N_i=0$:然后对每个$N_t-N_b$的值存一个bitset,用以表示值为这么多的点的状态,枚举a查多少$N_t-N_b=N_a$即可. 条件二就正反拓扑序跑一下,然后…
5109: [CodePlus 2017]大吉大利,晚上吃鸡! Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 107  Solved: 57[Submit][Status][Discuss] Description 最近<绝地求生:大逃杀>风靡全球,皮皮和毛毛也迷上了这款游戏,他们经常组队玩这款游戏.在游戏中,皮皮 和毛毛最喜欢做的事情就是堵桥,每每有一个好时机都能收到不少的快递.当然,有些时候并不能堵桥,皮皮和毛 毛会选择在其他的必经之路上…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 请你找到 k 个不同的组合数,使得对于其中任何一个组合数 \(C_a^b\) 有 \(0\leq b\leq a\leq n\).所谓不同的组合数,即对于组合数 \(C_{a_1}^{b_1}\) 和 \(C_{a_2}^{b_2}\) ,若 \(a_1\neq a_2\) 或者 \(b_1\neq b_2\) ,则我们认为这两个组合数是不同的.问这 \(k\)…
题意 一个 \(n\) 个点的完全图,两点之间的边权为 \((i\ xor\ j)*C\) ,同时有 \(m\) 条额外单向路径,问从 \(S\) 到 \(T\) 的最短路. \(n\leq 10^5,\ m\leq 5\times 10^5,C\leq 100\). 分析 如果没有额外的边,会直接从 \(S\) 到 \(T\) ,因为如果每个二进制位 \(i\) 不同那么一定会有一步走 \((1<< i)*C\), 如果相同也没有必要多走几个点而可能多一部分路程. 如果多了一些特殊边,最后的…
1A,拿来练手的好题 用一个优先队列按煮熟时间从小到大排序,被煮熟了就弹出来. 用n个vector维护每种食物的煮熟时间,显然是有序的. 用树状数组维护每种煮熟食物的数量. 每次操作前把优先队列里煮熟时间<=当前时间的弹出,BIT上+1. 每次0操作把食物塞进优先队列和vector 每次1操作先看看树状数组里有没有数,没有输出angry,有的话在树状数组上二分找到最小的数. 每次2操作先看看树状数组里有没有这一种数,有的话输出并-1,没有的话看看vector有没有,有的话输出时间差,没有的话输出…
昨天这题死活调不出来结果是一个地方没取模,凉凉. 首先有个一眼就能看出来的规律... 斐波那契数列满足$a_1, a_2, a_1+a_2, a_1+2a_2, 2a_1+3a_2, 3a_1+5a_2$ 也就是第k项是$fib(k-2)*a_1+fib(k-1)*a_2$ 问题就转化成了求$(fib(k-2)*a_1+fib(k-1)*a_2)\% p=m$,$a_2$在$[l,r]$上的个数. 显然$fib(k-2)a_1$是个常数,那一看就是exgcd题了... 令$a=fib(k-1),…
[题目]给定n行m列的矩阵,每个位置有一个指示方向(上下左右)或没有指示方向(任意选择),要求给未定格(没有指示方向的位置)确定方向,使得从任意一个开始走都可以都出矩阵,求方案数.n,m<=200,k<=300(未定格数量). [算法]生成树计数(矩阵树定理) [题解]先对定向格DFS找环判断是否无解. 然后每个点向指示方向连边,未定格向四周连边,外界作为一个点. 将所有有向边反向后,就是求根为外界的树形图的数量,生成树计数问题用矩阵树定理解决. 复杂度T*O((n*m)^3). 考虑优化,发…
[题意]定义一个n阶正方形矩阵为“巧妙的”当且仅当:任意选择其中n个不同行列的数字之和相同. 给定n*m的矩阵,T次询问以(x,y)为左上角的k阶矩阵是否巧妙.n,m<=500,T<=10^5. [算法]数学 [题解] 可以证明每个矩阵是巧妙的当且仅当其每个2阶子矩阵均是巧妙的: 必要性:若该矩阵有一个不巧妙的2阶子矩阵,则其他部分选择相同的情况下(不涉及此两行列),这两行列的和不同,所以该矩阵不是巧妙的. 观察一个巧妙的2阶子矩阵 a1 a2 b1 b2 由a1+b2=a2+b1,可得 a2…
[题意]数列满足an=an-1+an-2,n>=3.现在a1=i,a2=[l,r],要求满足ak%p=m的整数a2有多少个.10^18. [算法]数论(扩欧)+矩阵快速幂 [题解]定义fib(i)表示第 i 个斐波那契数,将数列an列项观察容易发现ak=a1*fib(k-2)+a2*fib(k-1).fib(i)可以用矩阵快速幂迅速得解. 现在实际已知ak%p,a1,fib(k-2),fib(k-1),令a=fib(k-1),b=m-i*fib(k-2),x=a2,则方程转化为:ax≡b(%p)…
description 题面 data range \[ 1 \leq T \leq 10, 1 \leq n, m \leq 200 , 0 \leq k \leq \min(nm, 300)\] solution 矩阵树定理 求无向图的生成树个数 度数矩阵-邻接矩阵 去掉一行一列求行列式 为了保证精度可以辗转相除 这里是模意义下的 const int mod=998244353; int a[305][305]; il int gauss(int n){ RG int ans=1; for(…
考虑静态怎么做:枚举右边界,然后枚举上边界,对应的下边界一定单调不降,单调栈维护每一列从当前枚举的右边界向左最长空位的长度,这样是O(nm)的 注意到n>=m,所以m<=2000,可以枚举右边界,然后考虑怎么快速知道当前枚举的右边界向左最长空位的长度 用线段树维护行,每个节点都维护一段连续的列,p[ro][i]表示当i列从ro的区间最上面开始有多少行是全空的,q[ro][i]表示从下,v[ro][i]表示i列向左扩展最大的最大全空正方形的边长,大概是下面这种感觉: 然后p和q合并的时候类似HO…
n,m<=200,n*m的方阵,有ULRD表示在这个格子时下一步要走到哪里,有一些待决策的格子用.表示,可以填ULRD任意一个,问有多少种填法使得从每个格子出发都能走出这个方阵,答案取模.保证未确定的格子<=300. ...一脸懵逼地写了原本30实际20的暴力然后跪着啃了下论文 然而什么都没啃懂不如结论记下来: 首先矩阵行列式的定义:一个n*n的矩阵,行列式值为$\sum_{b是n的一个排列} \ \ \ \ \ ( (-1)^{b的逆序对数} \ \ \ \ \ * \prod_{i=1}^…
n<=100000种食物,给每个食物煮熟时间,有q<=500000个操作:在某时刻插入某个食物:查询熟食中编号最小的并删除之:查询是否有编号为id的食物,如果有查询是否有编号为id的熟食,如果有熟食删除之,否则输出其离煮熟的最小时间:查询编号在[L,R]的熟食有多少.保证操作时间递增. 可以发现:针对某种食物的信息维护只需要知道其未煮熟的食物中煮熟时间的最小值,而所有的熟食都可以一起维护.为此可以:对每个食物开个队列存未熟食物,对所有食物开个优先队列以便及时把熟食从队列中提出来,并开个以编号为…
分析 我们将没连的点连向周围四个点 其余的按照给定的方向连 我们将所有连出去的位置统一连到0点上 再以0作为树根 于是就将问题转化为了有向图内向树计数 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include&l…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 企鹅国中有 N 座城市,编号从 1 到 N . 对于任意的两座城市 i 和 j ,企鹅们可以花费 (i xor j) * C 的时间从城市 i 走到城市 j ,这里 C 为一个给定的常数. 当然除此之外还有 M 条单向的快捷通道,第 i 条快捷通道从第 Fi 个城市通向第 Ti 个城市,走这条通道需要消耗 Vi 的时间. 现在来自 Penguin Kingdom…
[题目]#6354. 「CodePlus 2018 4 月赛」最短路 [题意]给定n个点,m条带权有向边,任意两个点i和j还可以花费(i xor j)*C到达(C是给定的常数),求A到B的最短距离.\(n \leq 10^5,m \leq 5*10^5\). [算法]异或优化建图+Dijkstra 正常建边O(n^2),与其考虑特殊边的处理不如考虑优化n^2的建边方案.一个点x到另一个点y的代价是由每个改变的数位得到的,所以枚举所有点x的每个数位j,从x向\(x \ \ xor \ \ 2^j\…
[CodePlus 2017 11月赛&洛谷P4058]木材 Description 有 n棵树,初始时每棵树的高度为 Hi ,第 i棵树每月都会长高 Ai.现在有个木料长度总量为 S的订单,客户要求每块木料的长度不能小于 L ,而且木料必须是整棵树(即不能为树的一部分).现在问你最少需要等多少个月才能满足订单. 输入格式: 第一行 3个用空格隔开的非负整数 n,S,L,表示树的数量.订单总量和单块木料长度限制. 第二行 n 个用空格隔开的非负整数,依次为 H1,H2,...,Hn . 第三行…
[CodePlus 2017 11月赛]晨跑 Description "无体育,不清华"."每天锻炼一小时,健康工作五十年,幸福生活一辈子".在清华,体育运动绝对是同学们生活中不可或缺的一部分.为了响应学校的号召,模范好学生王队长决定坚持晨跑.不过由于种种原因,每天都早起去跑步不太现实,所以王队长决定每a天晨跑一次.换句话说,假如王队长某天早起去跑了步,之后他会休息a−1 天,然后第a天继续去晨跑,并以此类推. 王队长的好朋友小钦和小针深受王队长坚持锻炼的鼓舞,并决…
loj 答案显然满足二分性,先二分一个速度\(v\) 然后显然所有没有点火的都会往中间点火的人方向走,并且如果两个人相遇不会马上点火,要等到火快熄灭的时候才点火,所以这两个人之后应该在一起行动.另外有火的人应该是选前面一个或后面一个没火的人,去和他相遇,所有任意时刻点过火的人都是连续的区间\([L,R](L\le k \le R)\) 现在要做的是推出\([1,n]\)是否可以被全部点火.一个区间\([L,R]\)能被点火,至少要满足的条件为\(x_R-x_L\le 2tv(R-L)\),即这两…
LOJ 题面传送门 orz 斜率优化-- 模拟赛时被这题送走了,所以来写篇题解( 首先这个最短路的求法是 trivial 的,直接一遍 dijkstra 即可( 重点在于怎样求第二问.注意到这个第二问平方和最大要在保证最短路的基础上求,因此考虑建出最短路 DAG,这样最短路径上一条 \(1\to n\) 的路径就对应原图中一条最短路.因此此题等价于求一条 \(1\to n\) 的路径,满足每一个属于同一连续段上路径权值和的平方之和最大.注意到 \(f(x)=x^2\) 是下凸函数,也就是对于一段…
link 题意: A和B玩游戏,每轮A赢的概率为p.现在有T组询问,已知A赢了n轮输了m轮,没有平局,赢一局A得分+1,输一局得分-1,问A得分期望值? $n+m,T\leq 2.5\times 10^5.$ 题解: 首先p并没有用.我们需要的是计算所有可能局面A的得分和,最后除以$C_{n+m}^{n}$. 发现得分不小于0非常奇怪,转化一下,考虑设最后一个为0的状态:A赢x次,输y次.那么得分为(n-x)-(m-y)=n-m+y-x.令k=y-x,则y=k+x.其中需要满足$k\geq \m…