自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ONE MORE TRY

把该做的做好就好了!

  • 博客(10)
  • 问答 (2)
  • 收藏
  • 关注

原创 HDU6170【DP+树状数组+差分维护】

哦,这题我1A诶,好开心啊,写个题解嘛先预处理一下第二个串,预处理出每个位置字母相同的最远位置。然后大力DP! 分成s串(1串),p串(2串),dp[i][j]代表从p串位置1-i能否匹配s串1-j,然后需要维护就是对于”*”,因为p串的第 i 个字符作用还可以匹配位置 j 后面的元素,不能再枚举一层,考虑前缀和,然后用树状数组差分即可~具体细节见代码注释~Thanks for watching!

2017-08-22 18:28:33 571

原创 Codeforces838A【枚举素数暴力】

思路: 1. 小的边如果能组成大的,那肯定小的比大的优。所以枚举素数即可。(有367左右) 2. 复杂度分析,每次枚举的就是n*m/len,即n*m/2+n*m3+n*m/5…均摊下来应该是 O(n2)O(n^2) 的.Code:#include<bits/stdc++.h>using namespace std;typedef long long LL;#define mem(a, b)

2017-08-20 22:23:56 390

原创 HDU4358【离散化+DFS序+莫队算法】

思路: 这个DFS序还是蛮有意思的~然后就可以把以u为根的树的状态直接转化到区间(一维数组)上,而且数组是不大的。 然后就变成了区间处理,套一下莫队就好了。 Code:#include<bits/stdc++.h>using namespace std;typedef long long LL;#define mem(a, b) memset(a, b, sizeof(a))const

2017-08-20 14:12:59 491

原创 POJ3461【1e6 字符串 hash模板】

两种hash方法(双hash…算了吧,除非字符串很短,然后又wa了才用)方法1: unsigned long long hash[N]; 定义一个unsigned long long类型的变量,它的范围是在[0, 2^64) 内,这就相当于,当数超不过2^64-1后,它会溢出!这就相当于一个数模2^64的过程。 那么hash函数可以理解为: hash[i]=(hash[i−1]×p+s[i]

2017-08-15 10:04:00 493

原创 Codeforces 587C【树上倍增】

题意: 求树上两点路径中的前 a(<=10) 小的点权值。 思路: 类似LCA倍增算法来存储 i -> 2^j 路上的 前(<=10)小个 的点权值。 然后要写一个权值合并>>> 具体求 u->v 的话,就是先分别计算 {u->LCA} 和 {v->(LCA-1)} (减1是LCA会重叠), 然后再合并,输出答案。#include<iostream>#include<cstdio>#i

2017-08-12 09:31:38 572

原创 Codeforces 739B【树上倍增+差分】

思路: 先膜一发,真是羡慕施老板不知道差分也会自己创造差分的能力。 差分(这里的小差分): 比如你要算一棵树上 u->v 路径上的次数, v是 u 子树上的一个点, 算一棵树上 u->v 路径上的次数 就相当于算每个节点的次数吧, 对于每一对u, v (u -> v)的,用C[i]计数,可以C[fa[ u ]]–, C[fa[ v ]]++, 然后跑一下DFS,统计次数,具体处理就是对于每

2017-08-09 22:39:04 638

原创 Codeforces 794C【贪心】

一开始以为计数n*26的算法很优秀哦?后面确实还是优秀的;对于1串只会取前(n+1)/2个字符,对于2串只会取n/2个字符(都是整除),然后每次拿1串的最小和2串的最大比一比,对于填1串,如果最小<最大,字典序越小,小的放最前,不放最前会被挤掉,如果最小>最大,字典序越小,大的放后面,然后2串的更大的放前面;对于填2串,如果最小<最大,字典序越大,大的放最前,不放最前会被挤掉,如果最小>最大,字典序

2017-08-07 21:03:40 405

原创 Codeforces Gym-101161E【LCA+主席树】

思路: 在这棵树上,对于每个节点u存一下从根节点(默认为1) 到 u 路径上所有线段出现的次数,那么用主席树维护所有历史信息,然后计算任意两个特定节点u, v的所有线段次数:num[线段树(u)] + num[线段树(v)] - 2 * num[线段树(LCA(u, v))],然后对于每次询问询问主席树就好了,就是求区间中位数了嘛代码来源:http://www.cnblogs.com/fightf

2017-08-06 15:12:25 431

原创 Codeforces 835D【暴力】

可以DP,也可以暴力判这个串是不是1,2,3….-回文串,判回文可以hash,也可以预处理判长度#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N = 5005;char s[N];int n;int ma[N], mb[N];int init_Odd(int x){ int an

2017-08-01 21:55:45 1065

原创 Codeforces460C【二分+线段树】

二分最小值,如果你能实现这个最小值是可以实现的,那么一定是最优的,因为每次区间+1,原来存在的最小值的个数还是存在的,但是新的可能会多起来,所以最小值递增还是最优到最优的;考虑如果不能实现这个最小值,那么他一定是比之前这个值少的,因为最小值不变,而且个数变少;区间维护可以线段树。#include <bits/stdc++.h>using namespace std;typedef long lo

2017-08-01 21:52:58 511

空空如也

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

TA关注的人

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