自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round #361 (Div. 2)

A. Mike and Cellphone 模拟即可。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;char s[20];int main(){ int n; while(scanf("%d", &n) != EOF){

2016-11-29 20:41:33 203

原创 Codeforces Round #382 (Div. 2)

A. Ostap and Grasshopper 简单bfs。。#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 105;char s[maxn];int n, k, vis[m

2016-11-29 19:34:46 230

原创 Codeforces Round #380 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 2)

A. Interview with Oleg 这道题主要就是判断ogo,如果前一个ogo与后一个ogo相连(也就是说前一个ogo的最后一个o作为后一个ogo的最前面的o),那么可认为这些ogo是一个部分,用∗∗∗***代替即可。#include <cstdio>#include <vector>#include <cstring>#include <iostream>#include

2016-11-21 11:47:26 331

原创 Codeforces Round #360 (Div. 1)

A NP-Hard Problem 一道染色的题目,跟上次写过的一道现场赛的题目很像,简单处理一下即可。#include <cstdio>#include <vector>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1e5+100;int

2016-11-20 11:50:11 451

原创 java 大数用法(转载)

转自:Java大数传送门在用C或者C++处理大数时感觉非常麻烦,但是在JAVA中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大。 这两个类都在java.math.*包中,因此每次必须在开头处引用该包。Ⅰ基本函数: 1.valueOf(parament); 将参数转换为制定的类型

2016-11-18 10:34:27 365

原创 HDU 5961 传递(暴力枚举)

题目分析 直接判断判断P和Q是否为传递图即可。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 2020;const int maxm = maxn*maxn;struct Edge{ int to, n

2016-11-11 19:21:01 257

原创 HDU 5971 Wrestling Match(染色+暴力)

题目分析 主要的策略就是如果有已经确定的点,那么很明显沿着这条边直接跑就可以了,判断其相连的所有点时good player 还是 bad player,如果所有已经明确了的所有已经明确了的点都没有相邻边,那么直接找一个没有被标记过的点跑一下就可以了。#include <cstdio>#include <cstring>#include <iostream>#include <algori

2016-11-10 18:52:02 391

原创 HDU 5945 Fxx and game(dp+单调队列优化)

题目分析 当初打bestcoder的时候我用广搜写的,并且我知道会超时,但是因为那天脑子太昏了不知道怎么优化,赛后rejudge果然tle。这道题就是用单点队列存放当前位置的前t个位置中最小的那个,代码很懂,也很容易理解,这里就不多说了。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>u

2016-11-09 21:08:00 321

原创 HDU 5943 Kingdom of Obsession(2016年中国大学生程序设计竞赛(杭州)),好题

题目分析 这道题首先感觉就是一个映射问题,但是我们发现n和s都很大,但是通过分析我们会发现,如果s+1,s+2......s+n−1,s+ns+1,s+2......s+n-1,s+n中如果有2个素因子那么显然是不可行的,又因为20亿以内相邻的2个素数的最大差值不会超过500,所以这样就很好处理了,2分图跑一边就可以了,但是这样还是不合理,因为如果n>sn>s,那么很明显我们只用判断1,2,3.

2016-11-09 19:42:05 343

原创 hihoCoder #1415 : 后缀数组三·重复旋律3

题目分析 将2个串连起来,中间加分隔符’#’,然后直接从头到尾枚举一遍height值,如果前面在一个穿,后面再另一个串,那么很明显这个height值是可以计算的,找出满足这样条件最大的即可。#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using na

2016-11-08 20:26:41 387

原创 hihoCoder #1407 : 后缀数组二·重复旋律2

题目分析 如提示的那样,二分长度,然后进行判断即可。。#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1e5+100;int s[maxn];int sa[maxn],t[ma

2016-11-08 19:59:30 429

原创 hihoCoder #1403 : 后缀数组一·重复旋律

题目分析 后缀数组基础题目,肯定要把height数组找出来,然后从前往后扫一下,每k个需要找一个最小值,这里我用了单调队列优化,队列中一直保存着k个元素的最小元素,但是这里需要之一的一点,每一个height[i]值表示sa[i-1]与sa[i]的最长公共前缀,因此单调队列只用维护k-1个值即可。#include <cmath>#include <queue>#include <cstdio

2016-11-08 18:55:08 282

原创 后缀的最长公共前缀(lcp(x,y))

分析 这是height数组的最基本性质之一。具体的可以参看罗穗骞的论文。后缀i和后缀j的最长公共前缀的长度为它们在sa数组中所在排位之间的height值中的最小值。这个描述可能有点乱,正规的说,令x=rank[i],y=rank[j],x#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#inclu

2016-11-08 17:58:23 1916 1

原创 HDU 5976 Detachment(逆元+二分优化+数学分析)

题目大意 给定一个数,让你分成互不相等的n个数(n为自然数),使这些数的乘积最大,输出最大乘积。题目分析 我也不知道数论的一些东西怎么证明,但是拿到一个数的时候分配,肯定是要分配到的数越小越好,但是不能分配出1,因为分配出1相乘之后得到的结果不会增加,因为想法就是枚举2,3,4,5……知道不能枚举即可。这个可以预处理一下,当然肯定还有未分配完的数,这时候要分情况讨论: 情况1:枚

2016-11-08 12:29:51 1280

原创 2016年CCPC合肥题解(hdu 5961, 5963, 5965,5968,5969)

写在前面 对于这次组队比赛感慨良多!!一开赛我们还在吃饭,边吃饭边看题,发现1008题是一个水题,直接暴力,然后因为手残错了2次!!!然后就是1009题,不明白这道题为啥比前面一道题过的人多!!这道题一开始的想法就是按位贪心,于是就开始写了,但是发现思维有漏洞,连样例都没有跑过,于是我发现从前到后搜索0的位置即可,如果找到了则把这个0前面的第一个1变成0,然后把从该从0位置到后面的所有数都变成1

2016-11-06 10:11:54 630

原创 HDU 5892 Resident Evil(二维树状数组,好题)

题目大意 这道题的大意是一个城市有n*n个格子组成,每次都可以选择一个长方形的区域然后往里面放怪物,然后这个长方形区域里面的每个小格子都有同样数量的怪物,就是相当于一个二维区间更新了,然后又给你一个长方形的区域,询问该长方形区域里面有多少50种怪物的具体情况,如果该种怪物为奇数则输出2,否则输出1.题目分析 我们可以利用树状数组来完场区间更新,对于50种怪物很明显可以用long long类

2016-11-06 09:34:55 562

原创 POJ 2155 Matrix(二维树状数组)

题目分析 这道题的思路很巧妙,不过这种思想我在写其他题的时候也用过。 那道题的操作是先对区间进行操作,包括区间内所有值都增加x或者区间所有值都减少x,其实处理起来很简单,对于a[l]我们加x,对于a[r+1]减x处理完成之后,就是这样处理之后,如果问你a数列哪个位置上的值,我们就可以利用前缀和的思想,一个for循环,从头到尾可以把所有值都算出来,不懂得可以手动模拟一下。其他的就是树状数组的

2016-11-04 19:48:57 312

原创 树状数组入门之POJ 2352 Star

树状数组BIT(Binary index tree) 对于树状数组而要我们可以发现树状数组的那个图就是线段树的去掉所有右孩子节点得到的,因此树状数组相当于在线段树上做了一个优化,相当于去掉了一个常数,并且空间上也进行了优化,线段树通常需要比原来大小开4倍,但是树状数组就不用,但是树状数组只提供2种操作,一个就是询问1到x的所有数的和,另一个就是对单点进行更新,其他操作较为复杂。操作一int s

2016-11-04 10:53:54 260

原创 HDU 4578 Transformation(最恶心的线段树)

题目分析 这道题首先可以发现第三种操作和第二种操作都是很简单的,这里我就不多说了,但是对于加操作就有点需要特殊处理了(a+b)3=a3+3a2b+3ab2+b3(a+b)^3 = a^3+3a^2b+3ab^2+b^3很明显这样就可以推出来了,因为a3,a2,aa^3,a^2,a都是已知的,因此可以处理了,注意先处理(a+b)3(a+b)^3然后处理(a+b)2(a+b)^2再处理(a+b)(a

2016-11-03 18:21:20 265

原创 HDU 1255 覆盖的面积(线段树+离散化+扫描线)

题目分析 上次做了一道只用计算覆盖一次的面积,这次需要计算覆盖2次的面积,其实就是在上面的基础上加一点东西,sum1[]表示覆盖一次的长度,sum2[]覆盖2次的长度,具体怎么操作看pushup函数即可,写的非常清楚。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using names

2016-11-03 09:45:04 277

空空如也

空空如也

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

TA关注的人

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