自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

luke2834的专栏

蒟蒻练级中。。。

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

原创 Codeforces 620E New Year Tree dfs + 线段树(区间查询+区间置数) + 位运算

题意给你一棵树n(4e5)个节点,每个节点有一种颜色(60种以下的颜色)有两种操作,修改一棵子树所有节点的颜色为c查询,一颗子树下有多少种颜色思路先考虑,如果是在一个数组里,每次修改一个区间和查询一个区间怎么做?基本想法,就是线段树记录下每个区间内的颜色都有哪些,然后就可以归并了由于只有60种颜色,我们可以用位压缩编码,然后归并的时候,就是按位取或即可所以,这棵线段树维护的就是一个取

2016-01-30 14:41:01 561

原创 hihoCoder 1069 最近公共祖先 在线算法

题意多组询问,求最近公共祖先思路基本思路就是,把节点映射到一个数组的下标中,然后数组记录每个点的深度我们需要保证,每两个节点映射的位置间,存在只存在它俩的最近公共祖先,而不存在其它祖先我们先想一下,如果是一个二叉树,我们只要按照中序周游的顺序,存入数组中,是不是就满足要求了那么,现在这个树不一定是二叉的,那么类似二叉中序遍历,对u节点,访问完第一个子树后,存一下节点u的深度,再访问第二个

2016-01-30 00:53:36 934

原创 Codeforces 620F Xors on Segments DP

题意n个数,m次查询。n<=5e4,m<=1e3每次查询为一个区间l,r,要在n的数的[l,r]区间内选出2个数a,b(a<=b)计算f(a, b) = a^(a+1)^(a+2)^…^b,输出最大的这个值思路我想了好久,想到用莫队+Trie树了。。可是还是没想出来。。标程好像也是这样。。不过我没细看。。之后我会再尝试用这个方法解决~我参考了大神的博客,看到居然O(n^2)也能过。。。然

2016-01-29 17:50:51 902

原创 Codeforces 609F Frogs and mosquitoes 二分+简单离散化线段树+Multimap

题意有n青蛙和m蚊子(n,m<=1e5),青蛙两个参数,位置xi,舌头长度ti蚊子两个参数,位置pj,权值bj只有当xi+ti>=pj且xi <= pj时,第i只青蛙才能吃到第j只蚊子。如果第j只蚊子能被多只青蛙吃到,那么xi最小的青蛙会把这只蚊子吃了每次青蛙吃了某只蚊子以后,ti会增加蚊子的bj蚊子会按输入的顺序到来,如果没一下没吃掉,蚊子还是会落在原位不动,即蚊子有可能之后被吃掉输

2016-01-28 09:56:00 841

原创 hdu1754 区间查询+点修改 分块模板

题意就是有区间查询最大值,和点置数思路题很裸,用线段树当然很简单~这里想练练分块。。其实是,因为用分块写了个别的题结果T了。。。不想让这段代码废了。。就找来这题水一水,测试一下分块写的对不对。。。以后就当个小模板吧。。。实现#include <bits/stdc++.h>using namespace std;const int maxn = 2e5 + 5;const int B

2016-01-27 23:21:18 884

原创 Codeforces Round #340 (Div. 2) 完整解题报告

比赛总结这回D题坑了,少想到一种情况。。。主要是没想到D题真就是这么简单特判一下就过了。。早知道就再多想想特殊情况了。。。然后C、D题都先读错题了,也是很醉。。最后还有40多分钟,hack半天就成了1个人。。。其它各种被ntr。。这场真是大家狂hack啊。。早知如此,还不如再细想一下D题呢。。。总体来说,D题这回简单,E题之前不会莫队算法,这回补了补挺好~最后rating还是掉了几分,泪

2016-01-27 17:49:47 327

原创 Codeforces 617B Chocolate (Round #340 (Div. 2) B题)

题意给你一个0、1串,问你有多少中切法,使得每一段恰好有一个1思路简单的乘法原理,预处理一个数组a,这个数组保存连续的0的个数, 记m为数组大小,数组下标从0开始记比如00110, 数组为2,0,1然后如果数组只有一个元素,说明全是0,ans = 0其它情况,ans = ans * (a[i] + 1) (i = 1到m-2) 实现#include <bits/stdc++.h>u

2016-01-27 17:40:30 356

原创 Codeforces 617D Polyline (Round #340 (Div. 2) D题)

题意给你三个点,你可以画一些水平、竖直的折线来穿过这些点,线不能交叉,自交问你,画完后的图形,最少有几条边思路这题就是个特判的题。。。如果三个点,有一维坐标都相等,则是1如果两个点,有一维坐标都相等,而另一个点的另一维坐标 < 这两个点另一维坐标的小者或者>这两个点另一坐标的大者则是2否者是3实现#include <bits/stdc++.h>using namespace std

2016-01-27 17:34:08 443

原创 Codeforces 617C Watering Flowers (Round #340 (Div. 2) C题) nlogn算法

题意给你平面上n个点,和2个圆心点,问你最短的两个半径平方和,使得所有点都能至少在其中一个圆内或圆上思路 这题暴力就可解了,对一个圆试它的半径,距离可以到第i个点,这样会覆盖一些点,然后算另一个圆半径,即另一个圆要能覆盖到其它所有点这样O(n ^ 2)即可解但是单这么做实现会麻烦一些,我们可以先把点按照到第一个圆心点的距离排序,这样我们遍历到第i个点时可知,此时前i个点会被第一个圆包住,后

2016-01-27 17:27:35 422

原创 Codeforces 617E XOR and Favorite Number (Round #340 (Div. 2) E题) 莫队算法 + 异或基本性质

题意给你一个数组和一个数k,然后有m个查询,每次给你l,r,问你[l , r]区间内有多少对(i,j),使得a[i] ^ a[i+1] … ^ a[j] = k思路pref[i]记录a[0] ^ a[1] ^ … ^a[i]的值区间[l, r]的解 = 统计(i, j)使得pref[i-1] ^ pref[j] = k的个数。(因为,a ^ b ^ a = b,所以所有小于i的数被以后两次后

2016-01-27 17:12:18 517

转载 System.Diagnostics命名空间里的Debug类和Trace类的用途

System.Diagnostics命名空间里的Debug类和Trace类的用途摘要在 .NET 类库中有一个 System.Diagnostics 命名空间,该命名空间提供了一些与系统进程、事件日志、和性能计数器进行交互的类库。当中包括了两个对开发人员而言十分有用的类——Debug类和Trace类。本文介绍了这两个类的一些基本用途,旨在提高广大开发人员的开发效率。目录使用Debug类来帮助调试

2016-01-22 19:22:30 413

原创 C#中为何要使用ref参数 (个人理解)

前言这篇文章并不是想说明,ref的使用或者和out参数的区别等等而是对C#为什么要放入ref参数给出一些我的个人理解我也是初学C#,查阅了一些资料给出的个人理解,如果哪里有问题,也欢迎大家不吝赐教~问题提出首先,我们知道ref参数的目的是按引用传递参数,可以修改传递过来参数的值,而out也是类似的功能,但是out有明确的含义,标明该参数必须被修改,所以我就不多说ref和out的区别了。但

2016-01-21 19:51:37 8640 1

原创 hdu2147 简单博弈dp

题意一个n*m的矩阵从右上角开始,两个人可以选择向左、下或左下移动,问先手能否取胜思路dp(i,j)表示到达i,j点的状态为必胜态还是必败态预处理2000*2000的dp,之后查询即可注意,空间给的很小,更新dp的时候最好用迭代的方式实现#include <bits/stdc++.h>using namespace std;bool dp[2002][2002];typedef p

2016-01-13 21:39:01 443

原创 Codeforces 616E Sum of Remainders

题意给你两个数n,m问你n % 1 + n % 2 + … + n% m为几思路n % i = n - n / i * i (n / i 表示下取整)所以所求 = n * m - sum(n/i * i) (i从1到m)由于,n的第j个因子和第j+1个因子间(左开右闭),的任意数k,有n / k = n / n的第j+1个因子所以我们用sqrt(n)的时间求出所有n的因子即可,然后相

2016-01-12 23:25:06 654

原创 Codeforces 510C Fox And Names 拓扑排序

题意给你n个字符串,问你存不存在一种字母表的顺序,使得这n个字符串是按拓扑序排好的如果存在,给出这种顺序思路这题其实很简单,就是扫一遍相邻两个字符串,建立以字母为节点的有向图然后跑一个拓扑序贴出来的原因,主要是犯了一个特别傻的错误。。当年WA的原因,今天又WA在这了。。。也算是给自己提个醒吧。。错误就是,g[i][j]赋值为1时,没判定原来g[i][j]是否已经为1,就让入度(i) +

2016-01-12 18:38:42 351

原创 Codeforces Round #338 (Div. 2) 完整解题报告

前言我终于也可以硬气的写一回完整解题报告了这场其实我打的不太好,中间犯困严重。。比赛里就A了2个题。。幸亏hack成功了2个人~要不rating肯定要掉了。。。总的来看,其实第三题,我还不如直接写E题。。其实比前两个题都好写。。D题主要是a ^ b % m给我卡住了。。。这个之前大牛给我说过一次,但没说结论。。。没想到用费马小定理稍微推一下就解决了。。。还是不善于数论啊。。。解题报告A题很

2016-01-12 11:04:13 301

原创 Codeforces 615E Hexagons (Round #338 (Div. 2) E题) 二分答案+找规律

题意在一个二维直角坐标系下,铺满了正六边形,然后从中间的正六边形沿着图上给出的方向走n步,问最后所在的正六边形的坐标位置思路首先,可以注意到x,y坐标的尺度不同,x方向上是边长的根3倍为2,y是边长的1倍为2,不过其实这点,也不太重要啦。。。只不过是方便算下坐标而已。。然后,很好想到,每一圈的六边形数是1,6,12,….,所以用等差数列求和可以得到总数,那么二分答案,就可以得到n步之后,在第

2016-01-12 10:55:18 612

原创 Codeforces 615C Running Track (Round #338 (Div. 2) C题) Trie + dp

题意给你两个字符串t,s你的目标是使用尽量少的t拼出s对于一个t,你可以做的是,只选取其中一个子串,正着或反着拼到s上最后需要拼出完整的s思路首先,题解说了一句贪心。。。然后我怎么也想不明白是咋样的贪心法。。。可能也和我没认真读题解有关。。我想的是,每次选取s中最长的可以由t得到的子串,这样贪心肯定是对的。但问题是s中有很多这样的子串时,我们不知道挑哪个?我一时想不明白了。。要是有恰好路

2016-01-10 23:27:03 516

原创 ACM数论一些简单结论和编程小技巧总结

前言最近被数论的模运算卡了一发。。稍微总结一下最近用到的数论结论另外,get了一些实现的技巧,也一起记一下~免得忘了~数论简单结论n = p(1) ^ num(1) * p(2) ^ num(2) … * p(m) ^ num(m),根据乘法原理,n的因子数有(num(1) + 1) * … *(num(m) + 1)根据费马小定理推得:a^x % p = a^(x%(p-1) ) %

2016-01-10 23:05:00 2000

原创 Codeforces 615D Multipliers (Round #338 (Div. 2) D题)

题意给你一个数n的所有分解质因数的质因子,问你这个数全部的因子乘积模1e9+7得几思路变量:p[i]表示第i种质因子,num[i]表示第i种质因子有多少个我们基本的思路就是,ans = ans * p[i] ^ k[i] 其中k[i]表示第i种质因子,在最后乘积中用了多少次,然后用快速幂就可以搞定那么,我们先来解决k[i]等于多少首先第一个结论,n的所有因子数为d = d * (num

2016-01-09 23:09:08 685

原创 Codeforces 615B Longtail Hedgehog (Round #338 (Div. 2) B题)

题意给你一个无向图,让你找到一个通路,路上的点是依次增大的,点的个数记为len然后找到所有连接到这条路末尾节点的边,数量为num找到最大的num * len思路基本是枚举以第i个节点为结尾得到的num * lennum很好得到,开个数组记录下就好len的话,用了个小dp,dp(j) = max(dp(i) + 1 , dp(j)) 存在(i,j)这条边存图直接只记录从小编号点到大编

2016-01-09 22:42:15 341

原创 hihoCoder 1068 RMQ-ST算法模板题

题意RMQ问题,Q个询问查询区间最小值思路dp(i,j) 表示[i, i+2^j]区间内的最小值dp(i,j) = min(dp(i, j-1), dp(i+2^(j-1), j-1) )查询[l,r]时,len = log2(l-r),min(dp(l, len),dp(r-(2^len), len) )实现#include <bits/stdc++.h>using names

2016-01-05 19:27:42 576

转载 最大似然估计(MLE)和最大后验概率(MAP)

最大似然估计:最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。简单而言,假设我们要统计全国人口的身高,首先假设这个身高服从服从正态分布,但是该分布的均值与方差未知。我们没有人力与物力去统计全国每个人的身高,但是可以通过采样,获取部分人的身高,然后通过最大似然估计来获取上述假设中的正态分布的均值与方差。最大似然估计中采样需满足一个很重要的假设,就是

2016-01-04 14:28:09 468

原创 hihoCoder1067 最近公共祖先离线查询 dfs + 并查集

题意给定树,有q个查询,查询点对的最近公共祖先思路课参考题中给的解析:http://hihocoder.com/problemset/problem/1067实现#include <bits/stdc++.h>using namespace std;int n,m;const int maxn = 1e5+5;vector<int> g[maxn];typedef pair<int

2016-01-01 20:29:09 493

空空如也

空空如也

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

TA关注的人

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