
其他oj
LXY_XYL
这个作者很懒,什么都没留下…
展开
-
LightOJ 1370
给出一些数字,对于每个数字找到一个欧拉函数值大于等于这个数的数,求找到的所有数的最小和 首先这道题如果一次一次的寻找估计会炸掉,所以我们可以直接进行欧拉数筛和素数筛很像,我们知道每个数的欧拉数 = x * ( 1 - 1/pi ) .... 那么如果遇到一个素数 我们直接向上遍历,在进行素数筛的同时更新一下上方的所有数的欧拉数,这样实现1e6数据范围内的数打表应该不会超时,之后由于这...原创 2019-01-17 13:49:00 · 394 阅读 · 0 评论 -
CF 1129 A,B
A 题目就是一个环,每个节点上可能有 n 个糖果,需要把这个糖果从这个点 送到 k,没跑一个节点会耗1s问以每个不同节点为起点的最短送完全部糖果时间,每次只能运送一个糖果。因为每个只能运1个, 所以 有 k 个糖果要走k次,那么以 a 为起点,我们想,走的比较远的就转圈时候处理掉,把最近那个留到最后一圈,最后再跑最短的,对于每个点 耗得时间就是 n*(k-1) + min_dis( i )...原创 2019-02-25 19:04:36 · 202 阅读 · 0 评论 -
CF 1108F
有一个操作,可以使一条边权值加1现在给一个图,可能存在多个最小生成树,我们现在要求用最小的操作次数,使得最小生成树唯一其实换种说法就是找一下图中最小生成树的冲突边我们发现一旦权值一样,而且连接的 两个 联通块一样,那么这两条边就是可以二选一,也就是 2个最小生成树的来源了那么我们可以克鲁斯卡尔对边排序,之后根据边权分块,对于权值相同的边,我们只取需要的条数,因为我...原创 2019-03-01 16:50:46 · 213 阅读 · 0 评论 -
CF 1114D
区间dp,有一个长度为 n 的串,相邻且相等的是一个联通块,每次操作可以把一个联通块都变成一个新数字,问把整个数字串变成同一个数字的最少次数那么我们输入的时候先把联通快压缩,之后就是对一个不重复的数串操作,使得全部数串变成一个数字。dp[ i ] [ i ] = 0, dp[ l ] [ r ] = min( dp [ l ] [ r ] , dp [ l+1] [ r-1 ] ) 当 a...原创 2019-02-25 20:25:13 · 182 阅读 · 0 评论 -
cf 1105E
有 n个操作,m个人, 1代表更改一个名字 , 2代表查询一个名字,如果某个人在查找的时候发现账户名字就是自己名字的话她会很高兴,问最多能有几个人高兴那么我们发现 1操作之间的 2操作就是关键点,不同 1之间的连续 2只能选择一个,我们发现这就是原图中的最大独立集,求法自然就是补图的最大团数目。。。附一个最大团模板#include <bits/stdc+...原创 2019-03-05 10:24:45 · 214 阅读 · 0 评论 -
CF 1077F
分简单版和难版题意就是我们要在长度为 n的数组里取 x个数字,同时每个数字之间间隔不得超过 k,同时取数字的起点和 1距离也不得超过 k ,终点和 n距离也不得超过k我们发现每次取数字假设取 i那么就是要在 i-k这个区间内挑选最大值作为取的这个数的前一个,开dp数组, dp [ i ] [ j ] 代表取第 i个数字为第 j个数字那么 dp...原创 2019-03-05 15:33:28 · 351 阅读 · 0 评论 -
LT - 021 神坛
极角排序加暴力,但是注意如果直接用double会被卡精度,要用 ll之后转一下枚举相邻向量构成面积O ( n^2 * logn )#include<bits/stdc++.h>using namespace std;const int maxn=5005;#define ll long long intstruct node{ ll x,y;...原创 2019-03-05 16:58:46 · 285 阅读 · 0 评论 -
CF 1114E
交互题,给定一个长度为 n 的打乱顺序等差序列给两种询问操作A 询问有无 数字 >x 有返回1 无返回0B 询问数列第 k 个数字是几(暴力询问)最后60次询问内,求出最大项和公差很简单,30次内 二分出最大项,用A操作,之后暴力询问出 30 个尽可能不重复的 数字(太弱了,随机算法抄的网上的。。)之后 最大项减去各个数字的差 的 gcd 就是公差了 #...原创 2019-02-26 14:54:30 · 199 阅读 · 0 评论 -
CF 1130 C
给定起点终点,走迷宫,迷宫为 1代表没法走,我们可以直接在某两个点之间建一个通道,花费为 (x1-x2)^2 + (y1-y2)^2求最小花费使得从起点到终点遍历起点可以到的全部点和终点可以到的全部点,暴力循环求距离求最小值就好了。。。#include<bits/stdc++.h>using namespace std;const int maxn=...原创 2019-03-02 14:26:57 · 224 阅读 · 0 评论 -
CF 1110E
差分题目。。。很神奇。。。看了公式就会发现很简单,是个构造。。。c i ' = c i+1 + c i-1 - c i= c i+1 - ci + c i-1我们发现 出现了一个 ci+1 - ci, 那么我们很显然,可以尝试构造一个 新式子di = ci+1 - ci那么 di ' = ci+1 - ci+1 + c i - c i-1 = d i-1很...原创 2019-02-26 16:44:52 · 308 阅读 · 0 评论 -
CF 1118D
有 n杯咖啡, m本作业,每杯咖啡有一定能量,有 x 个能量就能完成 x 本作业,但是如果连续喝咖啡,会衰减能量,第一杯为 a[i] ,第二杯为 a[i]-1第三杯为 a[i] - 2....以此类推问最少花费几天解决m个作业简单版本可以暴力遍历,复杂版本就得靠二分法了二分枚举完成天数,然后模拟。。。#include<bits/stdc++.h...原创 2019-03-02 21:20:50 · 203 阅读 · 0 评论 -
牛客练习赛 41
A.博弈我们发现要么一次拿光,要么 m为 1否则都赢不了B. dp思路,因为有负数,如果全负数,最小为 -666*300近似于 21W所以把锚点设为 210000,dp [ i ] [ j ]代表前 i个数字凑够数字 j的方案数,dp[ i ] [ j ] = dp [ i-1 ] [ -j ] + dp [ i-1 ] [ j-a[i] ]但是...原创 2019-03-02 21:32:07 · 211 阅读 · 0 评论 -
CF 1103C
题目给你一个简单无向图,无自环,且每个点的度数至少为3,首先 输入 n m k ,如果树的深度 超过 n/k ,输出大于等于 n/k的一条路径长度,并且输出路径上的点(任意一条)如果这个任务没完成那么进入下一步第二个任务,找出图中所有的环,保证这些环的大小大于3但不是3的倍数 ,且每个环中至少有一个点在所有输出的环中只出现过一次。,我们知道用 dfs 方式将这个图 变成一个树,那么...原创 2019-02-26 20:45:03 · 374 阅读 · 0 评论 -
CF 1105D
题目有一个 n*m的棋盘, #为墙, .为空地 1 2 3 4.等为旗手的棋子,每个旗手有一个速度,代表每回合能扩张几步,扩张方向包括上下左右,现在从 1 - p开始依次扩张直到棋盘满了,求每个旗手最多走了多少个地板。。需要 p个队列储存 bfs信息,同时需要记录步数和回合数,每个回合只能扩张 v次,而如果全部棋盘都走满了则游戏结束。以下为 AC代码‘’...原创 2019-03-03 19:54:52 · 166 阅读 · 0 评论 -
CF 1105C
给一个长度为 n的数列,数列数据范围在 l-r之间,问有多少种方案使得数列和为 3的倍数(可以重复取数)数位 dp因为要取3的倍数,所以数列和%3只有三种结果, 0 1 2 ,我们可以根据数论算出l-r之间 %3 == i数字个数为 ( r-i+3 ) /3 - ( l-i-1+3 )/ 3我们可以预处理 l r之间全部的计数,之后我们对于构建dp...原创 2019-03-03 20:44:04 · 188 阅读 · 0 评论 -
CF 1077D
给一个数组,长度为 n ,选出长度为 k的子串,使得从长度为 n的串里消除这个子串的次数最多二分枚举每个数字使用次数。#include<bits/stdc++.h>using namespace std;const int maxn = 2e5+2;#define debug(x) cout << "[" << x <&l...原创 2019-03-03 23:06:27 · 345 阅读 · 0 评论 -
Educational Codeforces Round 61 (Rated for Div. 2)
A.给你输入四个括号数目,求能否全部组成匹配我们发现 2不用管。 3的话 n个3可以最后组合在一起变成1个3,只需要 1 4相等,同时 1 4为0时 3也为0其他情况输出0B.贪心题,排序,然后输出 sum - a[i-q[i]]c.暴力枚举不选的两个工人,但是需要前缀和快速处理E是一道区间dp,但是感觉和原来做过的一个不太一样。。。...原创 2019-03-06 20:03:34 · 297 阅读 · 0 评论 -
CF 1117D
题目意思如下,有一个纯1构成的串,长度为N, 每次需要连续让 m 个 1 变成 0,也可以不变距离 4 2 那样的话有 1111 0011 1001 0000 1100 这5种 最终方案数对 1e9+7 取模我们可以发现这有一个dp思路,dp[i] 代表长度为 i 的方案数,dp[1] = 1,当 i = m 的时候 dp[m]=2; 之后的部分,就可以把这个数串分成两部分 dp[i] ...原创 2019-02-25 16:06:41 · 198 阅读 · 0 评论 -
Codeforves 535 div3 模拟
A.水题。。两个坐标重合之后看一下B.拆数字,我们知道最大的肯定是一个,第二个我们可以从大到小遍历,找到一个不会被最大值整除的或者连续出现两次的因为只看最大和次打可以被 hack掉参照 10 5 2 2 1C.题意很墨迹,有三个灯, r g b我们要求 r与 r之间 , g与 g之间以及 b与 b之间距离必须被3整除,给你一个只含 rgb的字符串...原创 2019-03-01 01:03:19 · 207 阅读 · 0 评论 -
LightOJ 1341
给定一个长方形(不包括正方形)面积,求可以组成其边的组合个数(举个例子 20 那么 45 54 是一个)同时要求每条边最短不低于 b。 这道题就是去求区间 [ b , s ] 内 s 的约数对数,当然有了约数个数和定理,我们可以轻易地算出 s 的约数个数,当然除以 2 就好了,不过别怕奇数个时候的问题,如果约数是奇数个代表有 x^2 = s 的情况,一并筛选掉了,sum / 2 就是...原创 2019-01-17 17:05:20 · 381 阅读 · 0 评论 -
LightOJ 1336
这道题实在是有些精彩求 1- n 内因子和为偶数的数字的 个数那么我们就有思路了虽然题目里给了求因子和公式但是由于之前我们自学,我们知道这个公式最原始的样子Sum = (1 + p1^1 + p1^2 + ... pn^a1) * .........题目里给的全是等比数列求和公式优化后的式子首先我们需要了解一个东西, 偶数个奇数相加之和是偶数,奇数个奇数相加之和是奇数。。...原创 2019-01-17 19:11:07 · 239 阅读 · 0 评论 -
LightOJ 1282
题很简单 求 n^k 前3项和后三项后三项不需要想就知道是快速幂了但是前三项需要推一下我们知道任意数可以转化成 X = 10^( x + y ) (x为整数,y为小数)其中 10^x 来控制的是源数字 *10 *100.。。这样的东西,而具体这个数字等于多少,全靠10^y ,那么 我们就可知道 10^y 就是我们要求的前n个数字还不会炸 long long (用double的话...原创 2019-01-17 20:06:44 · 197 阅读 · 0 评论 -
LightOJ 1236
题目描述如下求 n 以内 lcm( a, b ) = n 的 ab 的对数 保证 a <= b那么我们就很容易想到因子公式X = 之后就是如果想让两个因子lcm 为 X那么 对于两个数字 a b(暂且不管 a b大小)必有 a = , b = 假设 ai bi 中的每一个都取得不是最大 那么我们发现这俩东西 lcm 不会是 X 而是一个比 X 小的 X 的因子, ...原创 2019-01-18 01:05:23 · 285 阅读 · 0 评论 -
LightOJ 1234
这题目很简单明了 求一个项数很大的 调和数级。。。。如果正常求得话 T 很大 N也很大 ,直接求不可能的,如果暴力打表也会卡内存,所以这题还需要打表,但是是一种技巧性打表既然 N 很大,打表不方便,我们不如稀释一下 N 如果我们只打 1e7都是可以接受的,之后就相当于把 N 上的时间花在了 T 上边,所以就是稀疏的打表。。很简单,只要每 100 个记录一次,输入 n 的时候先找到最近的...原创 2019-01-18 13:47:51 · 349 阅读 · 0 评论 -
LightOJ 1220
设 n = p^k 求 k 的最大值 这道题就很有意思了 首先 n 可正可负,p^k 我们根据因子和公式可知道n = 那么 我们现在要的是 把所有素数 pi 合成一个数字 从而使得 ei 合成一个最大值举个例子 2^6 * 3^9 我们相合成一个数字,最好的方法就是 变成 4^3 * 9^3 这样k 就可以直接的出来了那么我们稍微观察就发现,把两个合并的过程就是把系数 ei ...原创 2019-01-18 15:03:22 · 164 阅读 · 0 评论 -
牛客网 奶酪
题目很简单,中文题。。复制了链接:https://ac.nowcoder.com/acm/problem/16417来源:牛客网现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞。我们可以在这块奶酪中建立空间坐标系, 在坐标系中,奶酪的下表面为 z = 0,奶酪的上表面为 z = h。现在, 奶酪的下表面有一只小老鼠 Jerry, ...原创 2019-01-18 16:36:29 · 265 阅读 · 0 评论 -
牛客网 关押囚犯
中文题目 直接粘贴了链接:https://ac.nowcoder.com/acm/problem/16591来源:牛客网 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名...原创 2019-01-18 17:46:41 · 263 阅读 · 0 评论 -
牛客网 集合问题
中文题:链接:https://ac.nowcoder.com/acm/problem/15167来源:牛客网 题目描述给你a,b和n个数p[i],问你如何分配这n个数给A,B集合,并且满足:若x在集合A中,则a-x必须也在集合A中。若x在集合B中,则b-x必须也在集合B中。这题我想的很简单。。没去搞并查集。。虽然我是在练习并查集。。。。如果暴力想法就是一个一个遍历下...原创 2019-01-18 18:10:09 · 916 阅读 · 2 评论 -
牛客网训练赛38部分题解。。。
A水题。。不写了;B 需要贝里斯定理这么去想 女装的数目会对选择箱子产生影响,那么我们已经选到一件女装是已经发生的时间,在这个事件的基础上,我们再发生一次连续选中女装事件就好了,这道题犯了很大错误就是我们总认为一切事件的基础事件是 1 而忽视掉了已经选中一个女装这一个事件,所以以已经发生的事件为基础时,去计算新发生的事件,整个概率的底不是1,而是已经发生的时间 p以下是 AC 代码。。...原创 2019-01-19 00:32:28 · 241 阅读 · 0 评论 -
牛客网 最大值
链接:https://ac.nowcoder.com/acm/problem/14402来源:牛客网 给出一个序列,你的任务是求每次操作之后序列中 (a[j]-a[i])/(j-i)【1<=i<j<=n】的最大值。操作次数有Q次,每次操作需要将位子p处的数字变成y.输入描述:本题包含多组输入,每组输入第一行一个数字n,表示序列的长度。然后接下来一行输入n个...原创 2019-01-19 10:45:42 · 394 阅读 · 0 评论 -
LightOJ 1214
因为 a 是个大数, b 不是,直接根据同余定理,把字符串 a 转化为数字的同时,不断地对 b 取模就好了 以下是 AC 代码 #include<bits/stdc++.h>using namespace std;#define ll long long intinline int read(){ ll X=0,w=0; char c...原创 2019-01-24 19:35:05 · 262 阅读 · 1 评论 -
CF 1131D
今天有 n 个菜,昨天有 m 个菜,我们输入一个字符矩阵 n*m,如果 mp[ i ] [ j ] == ' > ' 代表 今天的比昨天菜好吃 , < 代表不如昨天菜好吃, = 代表一样求每道菜美味度(尽可能小,唯一解)我们发现 如果两个菜是 = 那么很显然 ,他们美味度在一个等级, > 代表有一个菜比当前这个等级低一级。< 代表高一级,那么很显然,我们可...原创 2019-02-27 17:05:07 · 304 阅读 · 0 评论 -
CF 1131F
题干有 n只猫咪,被分在 n个隔间,有 n-1个挡板,之后会拆n-1次挡板,没拆一次挡板使得 a b可以到一个l笼子中,输出可能存在的初始猫咪分配顺序。。‘我们发现,这就是一个不断地把相邻元素整理成一个集合的过程,和并查集很像,但是唯一的不同点在于,我们需要根据集合整理顺序,存储这些猫咪,开个邻接表就好了,每次把少的加入到多的那里去,最后顺序输出#incl...原创 2019-02-27 19:25:19 · 325 阅读 · 0 评论 -
CF 1130B
dp思路,有一排商店,每个商店卖一个编号为 1-n之间的蛋糕,有 2*n个商店,我们现在有两个人想要买蛋糕,使得蛋糕编号为 1-n递增序列,商店之间距离为1,起始两个人都从 1开始,求最小走的距离,。直接dp,蛋糕只有两个,我们设 id[ i ] [ 0 ] / id [ i ] [ 1 ]为卖 i号蛋糕的两个商店位置,dp[ i ] [ 0 ]可以由 dp [ ...原创 2019-02-27 21:37:40 · 207 阅读 · 0 评论 -
CF 1117F
给定一个数列,两种操作,1区间乘 x2求区间累乘 的欧拉函数对 1e9+1取模我们发现线段树可以轻松搞定,可是 n 4e5虽然 ai只有 300,直接暴力肯定超 ll ,首先区间乘法可以要线段树维护,而欧拉函数我们知道 = n* (p1-1)/p1 *(p2-1)/p2。。。那么就可以逆元,而且 300以内素数有 62个,我们可以一一记录下来对于每个数,我...原创 2019-02-28 19:44:23 · 203 阅读 · 0 评论 -
CF 1109G
有 n个题目,每个题目有一个难度,保证递增,还有一个花费,你每出一道题会获得 a元回报,现在需要你选择一个连续区间,使得受益最大,同时,收益还要减去 gap(i, j ) gap ( i , j ) = max( d[i] - di+1] ) ^2 求最大收益枚举 gap出现点,用线段树维护区间最大和。。。同时需要注意,维护的区间和是连续区间和,需要前缀和后缀线段树同时维护前...原创 2019-03-04 18:39:59 · 205 阅读 · 0 评论