自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客多校3 G Coloring Tree (DFS+BFS)

题意: 给你一个由n个节点n-1条边组成的树,之后你可以在每个节点上面染颜色,定义一个颜色度,表示的是相同颜色最近的距离是多少,现在想问你颜色度为d的染色方案数是多少。 思路 相同颜色最近的距离是D,换句话说就是一个节点在距离内都不能有相同的颜色。 那么我们定义F(D)表示的是颜色度大于等于D的时候的方案数,那么的话,颜色度等于D的方案数其实就是 F(D+1) - F(D),知道这个之后我...

2018-07-30 10:22:02 319

原创 HDU 6299 Balanced Sequence (贪心)

题意 给你一些括号序列,让你对这些括号序列排序,使得匹配的括号最多。 思路 我们打一个表,寸的是对于一个序列来说他需要多少个左括号和他需要多少个右括号,可以组成匹配的括号,那么我们xjb排个序,然后加起来就好了,显然我们让左括号尽可能的放在前面,对吧,因为这样贪心的和才是最大的。那么我们排序让左括号尽可能的放到前面。, 第一个串的)数量大于( 且 第二个串的)数量小于(,第一个串放在前面 ...

2018-07-26 16:53:23 148

原创 HDU 6315 Naive Operations 线段树好题

题意 给你一个a数组和一个b数组,a数组初始为0,有两个操作: 1.对区间L,R 的a数组全部+1 2. 算出区间(L,R) a[i]/b[i] (下界) 的值。 思路 由下界可以看出,只有当a数组加到大于b数字的整数倍他才会有值(比如a是4,b是5,那么a/b的值是0,只有a等于5的时候他才是1),那么我们就维护a加了几次就行了,又由于a每次都加1,且和b相等的...

2018-07-26 09:52:26 359

原创 HDU 6301 Distinct Values(贪心)

题意 让你去构造一个长度为n的序列,之后给你一些区间,你构造的序列中这些区间没有重复的值,让你求这个序列的字典序最小 思路 按区间排序贪心。 用优先队列维护区间的mex,双指针扫过去就好。 代码 (%一发蔡队的代码)#include <bits/stdc++.h>using namespace std;typedef pair<int,int> PI...

2018-07-25 11:30:23 159

原创 BZOJ 2120 数颜色 (分块+二分)

题意 给你一个长度为n的数组,每个数字代表一种颜色,有两种操作: 1 问你在区间L,R中有多少种颜色, 2 把第i个位置的颜色变为C 思路: 记录一个数组pre[i]表示i这个位置的颜色往左推到的最近的相同颜色的位置是哪里,那么对于一次查询来说,如果pre[i] < L 就表示离他最近的颜色不再L区间里,之后我们可以分块儿,对于块内元素排序二分找,块外元素暴力去找不理解的看 ht...

2018-07-25 11:18:09 249

原创 跟着hzw学习数列分块

前言 早就看过黄学长这篇博客一直没有学习过,写牛客的第一场多校的时候有一道莫队的题,之后突然想起来这篇,所以学习了一下,不得不说这种分块儿思想,真是优美的暴力啊~下面我会上9道题(其实就是黄学长博客上面的题)来简述一下分块这种思想 。一 给出一个长为 nn{n} 的数列,以及 nn{n} 个操作,操作涉及区间加法,单点查值。 思路:这道题可以用很多数据结构写,我们这里引入分块...

2018-07-23 23:35:09 345

原创 HDU 2795 Billboard(线段树)

题意 给你一个H*W的矩阵,之后有n张海报,他们的规格是1*a[i],每次都贴到矩阵的左上方,不行的话就贴下一行,现在问你贴一张海报,他会贴在第几行。 思路 我们把每一行的宽当作线段树的一个节点,由于n有2525{2^5},但是H有1919{1^9},但是你H有那么大,你也仅仅只能填n行而已,所以我们建一棵min(n,H)的线段树,之后我们线段树维护的是你所管辖的区间的最大值,之后我们去查询...

2018-07-19 21:01:34 185

原创 POJ 2886 Who Gets the Most Candies?

题意 给你一个n和一个k,表示有n个人,从k先开始,被叫到的人出圈,之后出圈的那个人,手里有一个数字a[i],如果是正数就表示的是顺时针走a[i]步是下一个出圈的人,如果是负数就逆时针走a[i]步是下一个出圈的人,每个人出圈都会得到一定的糖果,糖果的数量是假如你是第k次出圈的,那么你将会得到k的因子个数的糖果,现在问你谁得到了最多的糖果。 思路 我们可以轻易的求出第几次出来会得到最多的糖果,...

2018-07-19 10:11:32 107

原创 HDU 4288 Coder (线段树)

题意 给你n个操作,分为三种分别是 : add a , del a ,sum,表示的是你可以在添加一个数,删除一个数,求下标 i % 5 == 3 的所有和是多少,注意当你删除一个点的时候,他后面的点的下标都会改变。 思路 由样例可以看出来需要用线段树,具体怎么用?由于线段树没有删除和增加的操作,所以我么把删除和增加离线下来,然后离散一下,把每次操作对应成线段树上的节点,那么每次删除和增加操...

2018-07-18 11:33:10 130

原创 CF 19D - Points (线段树+set)

题意 给你一个2维坐标系,之后给你n(2e5)次操作,有加点操作,删点操作,和查询操作,加和删就是在二维坐标系里加一个点和删一个点,其中查询点是给你一个(x,y)让你找到一个(x1,y1),(x1>x,y1>y)如果有找到最小的x1,如果x1相同找到最小的y1。 思路 首先n有2e5,我们首先离线我们的所有操作,去重后建一棵长度为n的线段树(第一大到第n大),之后我们的线段树维护...

2018-07-16 18:01:32 312

原创 Educational Codeforces Round 47 (Rated for Div. 2) C (简单题)

题意 给你一个长度为n的数组,初始都为0,然后每次给你一个x和d,然后让你随意挑一个位置pos,然后让 a[i] = a[i] + x + d *abs(pos-i),之后问你m次操作后可以得到的最大平均数是什么 思路 数组数值开始都是0,我们知道x是一定要加的所以无法考虑得到最大值,最小值,所以就是选的位置pos,那么很明显我要我操作之后的总和最大,之后得到的平均数才最大,那么就看d和po...

2018-07-16 14:33:28 145

原创 Educational Codeforces Round 47 (Rated for Div. 2) A(模拟)

题意 有n件物品,你又m个钱包,每件物品的价格为ai,每个钱包里的前为bi。你站在第一件物品前,如果你的第一个钱包能购买这件物品,你第一个钱包的钱直接消失(就相当于你是用第一个钱包里的所有钱购买了这件物品,不会找钱),如果无法购买那么就跳到下一件物品,以此类推,问你总共能购买多少件物品。 思路 直接模拟就好了,自己写的时候,感觉自己写的很乱,wa了两发,然后这场CF就gg了。。。感觉自己这种...

2018-07-16 11:34:02 110

原创 Educational Codeforces Round 47 (Rated for Div. 2) D (绝世傻逼题)

题意 给你一个n和m,表示你要建一个由n个点和m条边组成的双向图,其中相连的一条边上的两个顶点他们的gcd必须为1。 思路 就是暴力,为什么暴力不超时,emm大佬说可以用欧拉去估,但是我不会。。。 代码#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+10;vector<int&...

2018-07-16 11:20:35 259

原创 Educational Codeforces Round 47 (Rated for Div. 2) B(思维)

题意 给你一个串儿只由0,1,2组成,其中可以翻转01,10,12和21,不能翻转02和20, 问你如何翻转让新的到的串儿字典序最小。 思路 写的时候就一直卡在b题了,导致这场CF直接凉凉。。。赛后补题的时候觉得C,D都是绝世傻逼题啊,,早知道就先写C,D了,讲一下思路把,对于1来说,他可以和2换也可以和0换,那么也就是说,我们的所有的1都是可以翻到前面来的,而我们的0在没有碰到2之前也是...

2018-07-16 11:02:43 118

原创 Codeforces Round #497 C (脑洞)

题意:给你一个数组a[i],让你将这个数组重新排列b[i],问你b[i] - a[i] > 0 的最大数目是多少。 思路 我们先不考虑每个数组的位置,按照贪心的思路的话,第一小的位置在重新排列之后一定要放第二小的,然后原来最大的位置一定要放第一小的这样的话,我们的数目才会最大,对吧,比如 1 2 3 4 5 那么我们一定要放 2 3 4 5 1 这样最大,不用考虑顺序问题,因为我第...

2018-07-14 10:21:13 220

原创 牛客练习赛22 C 简单瞎搞题(bitset+暴力)

题意 给你n个区间,你可以从每个区间中任意挑选一个数字,然后将这n个数字的平方相加问你有多少种方案数。 思路 第一次用bitset,不知道如何去描述,仔细想想就是,我们遍历每个区间的每一个值,让他们都相加,然后放到set里面去去重,到最后我们看一下set的size有几个就好了,但是这样我们会超时,那么就需要看看如何去优化他,怎么优化呢?我们把他放到bitset里面搞搞,bitset的第i位表...

2018-07-14 10:02:59 314

原创 Codeforces Round #495 C. Sonya and Robots

题意 给你n个数字,让你从这个序列中选一对数(a,b),使得从左边数第一个a出现的位置 < 从右边数第一个b出现的位置,问符合要求的对数有多少个? 思路 仔细想一下,如果给你的n个数字中,每一个数字都是不同的,那么我们的答案其实就是,n-1,n-2,n-3….1对吧,如果这几个数字中有重复的那么我们就没有办法这样弄,怎么办呢?对于一种数来说,可以满足条件的是你出现的后面的数,比如说你后...

2018-07-10 16:51:34 155

原创 Codeforces Round #495 (Div. 2) B. Sonya and Exhibition(s)si'we思维

题意 给你一个n,m,之后给你m个区间,问你怎样构建这样一个长度为n的字符串让这m个区间的中0的个数*1的个数最大 思路 我们直接输出01010101就好了,因为这样无论他在那个区间,我们0和1的个数总是最大的 代码#include <bits/stdc++.h>using namespace std;int vis[111];int ans[111];int ma...

2018-07-10 16:08:58 162

原创 Codeforces Round #495 A. Sonya and Hotels(模拟)

题意 给你n和d,然后按顺序给出n个数轴上的点,现在想加入一些点,要求这些点跟距离他最近的那个点的距离为d,问能加入多少个不同的点。 思路 对于一个数,如果他减去他的前一个大于2d 说明我可以放2个,如果等于2d说明我只能放a[i] - d, a[i-1] + d 那个位置,然后第一个和最后一个都可以放 代码#include <bits/stdc++.h>using ...

2018-07-10 14:51:42 137

原创 Codeforces Round #496 E1. Median on Segments (Permutations Edition)(思路)

题意 给你一个n和m,问你这样一组序列(从1到n)中有多少个子序列是以m为中位数的,如果这个序列长度是偶数,那么就取中间偏左的那个数字 思路 百度之星原题: HDU5701 和百度之星唯一不同的就是 如果这个序列长度是偶数,那么就取中间偏左的那个数字仔细想一下,如果我们对于当前的数,我往左,往右延申比他大的我++,比他小的我–,之后如果有某个时刻这个和是0了,那么是不是就说...

2018-07-10 11:07:42 442

原创 Codeforces Round #496 D. Polycarp and Div 3

题意: 给你一个序列,问你怎样分割让他们分割出来的数是3的倍数最多。 思路: 我先预处理一下,让每个数都%3,只是统计有多少个0,多少个 1,2 多少个 2,1 多少个 111,222就行了 代码:#include <bits/stdc++.h>using namespace std;const int maxn = 2e5+10;int sum[maxn];i...

2018-07-10 10:50:05 96

原创 Codeforces Round #496 C. Summarize to the Power of Two

题意 给你组序列,你可以随意找出一个a[i] 和 一个a[j] 让 a[i] + a[j]是2的次方,问你有几个 a[i] 不满足这个条件 思路 当时想的是无脑暴力一发,结果没有超时wa12,然后莫名放空自己,卡了一个小时 。。。到最后才发现,2的幂有30个 ,我写的是 <30 应该写成 <= 30 。。难受 ,思路就是 我先打一个2次幂的表,之后把我的a[i] 放到map里,之...

2018-07-10 10:46:43 478

原创 Codeforces Round #496 B. Delete from the Left(s)水

题意 给你两个字符串你每次只能删除最左边的字符,问你删除多少次可以让两个字符串相等。 思路: 由于只能删除最左边,所以找最长相等的后缀就好了 代码:#include <bits/stdc++.h>using namespace std;int a[1000];int main(){ string a,b; cin>>a>>b;...

2018-07-10 10:38:29 139

原创 Codeforces Round #496 A Tanya and Stairways(水)

题意: 给你n个数,问你有多少组1,2,3…n,每一组都从1开始 ,并输出每一组的最后一个和数字。 思路: 首先显然可得一个这组数中有多少个1就有多少个,之后1之前的数是我们要的,然后一个小细节处理一下就好了 上代码:#include <bits/stdc++.h>using namespace std;int a[1000];vector<int&...

2018-07-10 10:31:47 143

空空如也

空空如也

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

TA关注的人

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