自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(255)
  • 收藏
  • 关注

原创 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 242

原创 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 233

原创 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 287

原创 cf 1105E

有 n个操作,m个人, 1代表更改一个名字 , 2代表查询一个名字,如果某个人在查找的时候发现账户名字就是自己名字的话她会很高兴,问最多能有几个人高兴那么我们发现 1操作之间的 2操作就是关键点,不同 1之间的连续 2只能选择一个,我们发现这就是原图中的最大独立集,求法自然就是补图的最大团数目。。。附一个最大团模板#include <bits/stdc+...

2019-03-05 10:24:45 154

原创 CF 1109G

有 n个题目,每个题目有一个难度,保证递增,还有一个花费,你每出一道题会获得 a元回报,现在需要你选择一个连续区间,使得受益最大,同时,收益还要减去 gap(i, j ) gap ( i , j ) = max( d[i] - di+1] ) ^2 求最大收益枚举 gap出现点,用线段树维护区间最大和。。。同时需要注意,维护的区间和是连续区间和,需要前缀和后缀线段树同时维护前...

2019-03-04 18:39:59 149

原创 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 221

原创 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 136

原创 CF 1105D

题目有一个 n*m的棋盘, #为墙, .为空地 1 2 3 4.等为旗手的棋子,每个旗手有一个速度,代表每回合能扩张几步,扩张方向包括上下左右,现在从 1 - p开始依次扩张直到棋盘满了,求每个旗手最多走了多少个地板。。需要 p个队列储存 bfs信息,同时需要记录步数和回合数,每个回合只能扩张 v次,而如果全部棋盘都走满了则游戏结束。以下为 AC代码‘’...

2019-03-03 19:54:52 134

原创 牛客练习赛 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 155

原创 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 164

原创 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 145

原创 CF 1108F

有一个操作,可以使一条边权值加1现在给一个图,可能存在多个最小生成树,我们现在要求用最小的操作次数,使得最小生成树唯一其实换种说法就是找一下图中最小生成树的冲突边我们发现一旦权值一样,而且连接的 两个 联通块一样,那么这两条边就是可以二选一,也就是 2个最小生成树的来源了那么我们可以克鲁斯卡尔对边排序,之后根据边权分块,对于权值相同的边,我们只取需要的条数,因为我...

2019-03-01 16:50:46 161

原创 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 157

原创 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 169

原创 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 150

原创 CF 1131F

题干有 n只猫咪,被分在 n个隔间,有 n-1个挡板,之后会拆n-1次挡板,没拆一次挡板使得 a b可以到一个l笼子中,输出可能存在的初始猫咪分配顺序。。‘我们发现,这就是一个不断地把相邻元素整理成一个集合的过程,和并查集很像,但是唯一的不同点在于,我们需要根据集合整理顺序,存储这些猫咪,开个邻接表就好了,每次把少的加入到多的那里去,最后顺序输出#incl...

2019-02-27 19:25:19 198

原创 CF 1131D

今天有 n 个菜,昨天有 m 个菜,我们输入一个字符矩阵 n*m,如果 mp[ i ] [ j ] ==   ' > '  代表 今天的比昨天菜好吃 , < 代表不如昨天菜好吃, = 代表一样求每道菜美味度(尽可能小,唯一解)我们发现 如果两个菜是 = 那么很显然 ,他们美味度在一个等级, > 代表有一个菜比当前这个等级低一级。< 代表高一级,那么很显然,我们可...

2019-02-27 17:05:07 197

原创 CF 1103C

题目给你一个简单无向图,无自环,且每个点的度数至少为3,首先 输入 n m k ,如果树的深度 超过 n/k ,输出大于等于 n/k的一条路径长度,并且输出路径上的点(任意一条)如果这个任务没完成那么进入下一步第二个任务,找出图中所有的环,保证这些环的大小大于3但不是3的倍数 ,且每个环中至少有一个点在所有输出的环中只出现过一次。,我们知道用 dfs 方式将这个图 变成一个树,那么...

2019-02-26 20:45:03 319

原创 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 186

原创 CF 1114E

交互题,给定一个长度为 n 的打乱顺序等差序列给两种询问操作A 询问有无 数字 >x 有返回1 无返回0B 询问数列第 k 个数字是几(暴力询问)最后60次询问内,求出最大项和公差很简单,30次内 二分出最大项,用A操作,之后暴力询问出 30 个尽可能不重复的 数字(太弱了,随机算法抄的网上的。。)之后 最大项减去各个数字的差 的 gcd 就是公差了 #...

2019-02-26 14:54:30 148

原创 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 157

原创 CF 1129 A,B

A 题目就是一个环,每个节点上可能有 n 个糖果,需要把这个糖果从这个点 送到 k,没跑一个节点会耗1s问以每个不同节点为起点的最短送完全部糖果时间,每次只能运送一个糖果。因为每个只能运1个, 所以 有 k 个糖果要走k次,那么以 a 为起点,我们想,走的比较远的就转圈时候处理掉,把最近那个留到最后一圈,最后再跑最短的,对于每个点 耗得时间就是 n*(k-1) + min_dis( i )...

2019-02-25 19:04:36 145

原创 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 152

原创 AC自动机部分讲解

首先结构体的建立struct node{ node *fail;// fail 指针 node *nex[26];//字典树标配,26个字母 int cnt;//是否为该单词的最后一个节点 node()//构建函数 { fail = NULL; for(register int i=0;i<26;i++)nex[...

2019-02-24 21:33:02 99

原创 HDU 3336 DP解法

之前搞过这个,这次可能由于VJ 上没记录之前在hdu 交的 又见到了。。。搞了个dp。。kmp + dp 解决。#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=1e5+5;const int mod=10007;int...

2019-02-24 20:01:57 113

原创 POJ 1703

并查集水题。。。敌对( a, b ) a 和 b+n建结合。。。反之也是。。最后判断 a+n b+n a b 之间关系就好了。#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=1e5+5;int pre[maxn*2];in...

2019-02-24 18:16:43 427 4

原创 POJ 2531

暴力搜索,但是注意,如果移到B种总结过变小就不需要继续搞了。。。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;const int maxn=1e5+5;i...

2019-02-24 17:11:04 162

原创 HDU 4635

给一个图,问最多加几条边可以让他依然不变成强连通图。如果已经强连通输出-1反向思路,对于一个完全连通图如何去除 k 条边 使得其变成非连通图。那么 很显然, 我们需要找一个在原图基础上点数最小的联通块,当然这个联通块必须得没有入度或者出度,这样才能便于我们舍弃这个联通块,之后只要去除这个联通块和外界的入路或者出路就好了。。。最后结果减去m,,以下AC代码  #include&...

2019-02-24 16:17:41 167

原创 POJ 1961

KMP水题。。找前缀最小循环节个数。。。直接看 第 i 是否是 i - nex[i] 倍数就好了。。。太菜了。。。kmp 还得抄板子。。。。。别忘了最后还得再加个换行。。。不然会pe#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int m...

2019-02-23 16:54:23 185

原创 POJ 1195

二维 Bit 0初始化,3结束,1设置数字,2求和,但是注意,输入的数据从 0 开始,我们需要基础上加一#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=1e5+5;const int maxm=1050;#define l...

2019-02-23 16:08:05 190

原创 Educational Codeforces Round 60 Editorial

猝死场。。没有写。。直接做的练习。。。前三题解如下。。之后的还在看。。(简单的直接口胡了。。。)A. 一如既往的水题, l 可以 等于 r,找最大数字最大连续长度。。。B.贪心是万物之敌系列。。。k+1组进行循环,每次使用 k 个最大,1个次大,最后剩余部分全用最大C. 二分结果,我们可以看成先吹了 t 天的风, 之后再走 t 天,所以只需要对吹 t 天的风之后坐标进行计算,之后计...

2019-02-20 12:26:35 155

原创 ZOJ 1586

最小生成树水题。。读好题就好了每个人自己wifi 有个权值,链接还有个权值。。。直接克鲁斯卡尔。。。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct node{int u,v,cost;}a[1000005];int pre[10000...

2019-02-18 17:45:13 366

原创 poj 2513

字典树,tries。。这个是指针版。。。用并查集判断是否全都在一个集合,之后判断欧拉回路。  #include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=1e6+5;int pa[maxn];inline int find...

2019-02-17 21:02:52 79

原创 POJ3321

题目很简单,有一颗苹果树,每个节点有一个苹果,两种操作,1  C  i   去看第 i 个节点, 如果有苹果摘掉,没有就按上一个。2  Q  i  查询 i 子树上总苹果数目。。。这题感觉可以树剖,。。。 但是 dfs 序 好写。。。ls 记录起点, rs 记录终点, 之后记录下 dfs 序。树状数组求和,,,完美。。。 #include<iostream>...

2019-02-17 00:11:03 945

原创 牛客练习赛 40

A. 膜拜华哥。。。。简直神仙 dp.... 这道题dp 思路解决, dp [ n ] [ i ] [ j ] 代表 n 长度排列, 以第 i 号音符作为开头, j 号音符作为结尾那么有 dp [ n ] [ i ] [ j ]  =  (  1 <= k <= 49 ) 同时还要保证 k, i, j 这个排列是合法的,开个三维 vis 记录非法排列就好了,最后结果就是...

2019-02-15 22:21:01 172

原创 POJ 1611

给你 n个人 编号 0 ---  n-1 之后有 m 个集合问最后有多少个人 和 0 号接触过。。水题。。。8多说了#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;const int maxn...

2019-02-15 16:37:44 247

原创 HDU 4738

开始以为是最小生成树加贪心。。后来发现是判断连通图tarjan 判断下连通图,建边是无向边,统计连通边数目, 小于 n 直接0之后缩点,如果全图都强连通 输出 -1;这题有重复边,开始被卡了一下, 重复边处理很简单, 记录一下和 dfs 时候 pre == to 次数,超过1次肯定就是遇到重复边了,直接更新一下就好了。当我们发现关键边的时候(边连着的两个点颜色不一致)更新最小值。...

2019-02-14 23:45:33 209

原创 POJ 2236

并查集。。。判断距离。。#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int maxn = 1e5+5;struct node{ int x,y; int pre;}nd[maxn];int n,m,d;char op...

2019-02-14 22:23:56 223

原创 POJ 1850

组合数,给一个字符串, 这个字符串必须为字典序升序,否则输出0,求这个字符串排列在第几个;距离 a = 1  ; b=2.... ab=27 ac=28.... ba不可以 az=51, bc = 52..... 长度不超过10那么首先特盘递增,其次这个字符串是升序,所以对于长度 n 的 我们可以先加上 C[26] [ n - 1 ] C 代表组合数26个字母先选出 n-1 个...

2019-02-14 20:40:58 143

原创 洛谷 P2303

求 ∑gcd(i, N)(1<=i <=N)很简单,我们需要改变一下式子,n 在 2^32 暴力会炸,所以,我们可以枚举 gcd(i, N) 令 gcd(i, N) = d 原式就是 ∑d ∑ [ gcd(i, n) == d ] ( 1 <=i <= n , d  |  n )之后把 d 提出来, ∑d ∑ [ gcd(i, n / d ) == 1 ...

2019-02-14 18:14:08 130

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除