自定义博客皮肤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)
  • 收藏
  • 关注

原创 可持久化字典树

普通模板://给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X (L <= R)。求A[L] 至 A[R] 这R - L + 1个数中,与X 进行异或运算(Xor),得到的最大值是多少? const int N = 50000 + 10;int son[N*35][2], sum[N*35];int root[N];int tot;int len = 31

2017-10-18 10:26:29 860

原创 扩展kmp

给出两个字符串s1,s2,求出s2的每一个后缀在s1中出现的次数乘以这个后缀的长度,并累加求和,输出这个和//next[i]表示pat与pat[i,len-1]的最长公共前缀//extend[i]表示pat与ori[i,len-1]的最长公共前缀typedef long long ll;const int N = 1000000 + 10, mod = 1e9 + 7;char ori[N]

2017-10-17 20:56:27 525

原创 hdu 5988 Coding Contest 费用流

题目:http://acm.split.hdu.edu.cn/showproblem.php?pid=5988题意:有n个区域,有m条有向边连接它们,每条边都有一个被破环的几率,但第一个人通过不会造成任何影响,之后的人通过才会有影响。现在每个区域内有一定的队员和背包,要求每个队员都拿到一个背包,且使道路奔溃的几率最小,求这个最小几率思路:被破坏的几率最小就是不被破坏的几率最大。可以用费用流去做,因为

2017-10-16 18:31:58 433

原创 hdu 6024 Building Shops dp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6024题意:有n间教室,要选一些建商店,对于每间教室,如果选中在这间教室建商店,会给出一个花费,如果没有选中,那么也有一个花费,就是这间教室到左边最近的商店的距离。要求当一间教室没有建设商店时,那么它左边一定有一个商店。求最小花费思路:根据题意,第一间教室一定要建商店。定义dp[0][i]为第i间教室不建商店

2017-10-16 16:14:59 364

原创 hdu 6031 Innumerable Ancestors lca + 二分

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6031题意:给定一个无向树形图,1为根,对于每次查询,给出两个集合,问两个集合中各选出一个点的最近公共祖先的深度最深为多少思路:用倍增求lca,然后二分枚举答案,求出第一个集合中的点在枚举的深度上的祖先,并标记这些祖先,然后求第二个集合中的点在枚举的深度上的祖先,检查两个集合在枚举深度上的祖先有没有重合,有重

2017-10-16 16:04:04 382

原创 hdu 6029 Graph Theory 思维

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6029题意:有n个点,有下面两种操作从当前点向前面所有点连一条边从当前点不向任何点连边问构成的图是不是一个二分图思路:奇数肯定不能构成二分图,偶数的话,我们依次判断,记录没有配对的点数,当操作1时,查看是否有没有配对的点,有的话,把当前点和某个未配对的点配对,那么未配对点数减1,没有的话,当前点就是一个

2017-10-16 15:17:32 703

原创 hdu 6162 Ch’s gift 树链剖分 + 离线查询

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6162题意:给定一个树形图,有点权,每次一个查询,问从点vv到uu路径上点权在[a,b][a,b]之内的和思路:直接查询好像好像不太行。把每个询问拆成两个:求路径上点权在[0,a−1][0,a-1]内的和sum1sum_1与点权在[0,b][0,b]的和sum2sum_2,那么sum2−sum1sum_2-s

2017-10-16 14:59:46 370

原创 hdu 6178 Monkeys 贪心

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6178题意:有一个树形图,有n个节点,每个节点只能呆一只猴子,现在有k只猴子,要求删掉一些边,在剩余的图中,把这些猴子放置在点上,要求任意一只猴子至少能沿着边访问到另外一只猴子。问最少还剩多少条边思路:可以发现,最少的剩余方式按两个点一条边这样的方式配对。可以用贪心的思想,首先从叶子节点开始配对,求出能配对的

2017-10-16 14:50:53 307

原创 hdu 6180 Schedule 贪心

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6180题意:有n个任务,每个任务有一个开始时间s_i和结束时间e_i,在一些机器上执行任务,每个机器在一段时间间隔内只能执行一个任务,也就是允许时间点是重合的,在一个机器上执行的两个任务之间有段空闲时间的话,机器不能关闭。求最少需要多少台机器,然后求出在这些机器下执行完所以任务需要的最少时间思路:贪心选取,使

2017-10-16 14:22:08 364

原创 hdu 6198 number number number

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6198题意:如果一个数字nn可以等于kk个斐波那契数的和(这些斐波那契数可以相等),那么nn就称为mif−goodmif-good,否则就是mif−badmif-bad,当给定kk时,求最小mif−badmif-bad数字思路:可以推出规律,当k=1k=1时,答案为44,当k=2k=2时,可以发现,当首次遇到

2017-10-16 14:11:18 291

原创 逆元模板

扩展欧几里得求逆元:int extgcd(int a, int b, int &x, int &y){ int d = a; if(b != 0) { d = extgcd(b, a%b, y, x); y -= (a / b) * x; } else x = 1, y = 0; return d;}int mod

2017-10-10 15:43:02 626

原创 欧几里得与扩展欧几里得

欧几里得:int gcd(int a, int b){ return !b ? a : gcd(b, a%b);}int lcm(int a, int b)//最小公倍数{ return a / gcd(a, b) * b;//先除后乘避免溢出}扩展欧几里得:存在整数对(x,y)(x,y)使得ax+by=gcd(a,b)ax+by=gcd(a,b) 推导过程: 用递归求

2017-10-10 14:23:43 345

原创 CodeForces 785E Anton and Permutation 分块

题目:https://vjudge.net/problem/CodeForces-785E题意:给定一个初始为1到n1到n的长度为nn的序列,有mm个操作,每次互换两个数的位置,问每次操作后逆序数有多少对思路:分块。交换x yx\ y,只会影响[x+1,y−1][x+1,y-1]内的元素,然后就可以统计了#include <bits/stdc++.h>using namespace std;typ

2017-10-09 19:57:43 373

原创 codeforces 551E GukiZ and GukiZiana 分块

题目:https://vjudge.net/problem/CodeForces-551E题意:给定一个长度为n的序列a,有两种操作:1 l r x:1\ l\ r\ x:把区间[l,r][l,r]内的元素都加上xx2 y:2\ y:查询整个序列中值为yy的元素的最远距离,若没有yy输出−1-1思路:分块,注意爆int#include <bits/stdc++.h>using namespa

2017-10-09 17:28:15 394

原创 uva12003 Array Transformer 分块

题目:https://vjudge.net/problem/UVA-12003题意:给出一个长度为nn的序列aa,有mm次操作,每次操作(L,R,v,p)(L,R,v,p),首先找出[L,R][L,R]内严格小于vv的元素个数kk,然后把a[p]a[p]更新为u∗k/(R−L+1)u ∗ k/(R − L + 1)。输出最终的序列思路:无脑分块#include <bits/stdc++.h>usin

2017-10-09 15:48:48 318

原创 bzoj2957 楼房重建 分块 || 线段树

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2957题意:Description  小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。   为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条

2017-10-09 15:22:16 346

原创 暂存

约瑟夫环#include <bits/stdc++.h>using namespace std;const int N = 1000 + 10;int main(){ int n, k; scanf("%d%d", &n, &k); int ans = 0; for(int i = 2; i <= n; i++) ans = (ans + k) % i;

2017-10-08 15:18:03 304

原创 一些大数模板

//计算两个大整数的和,要求非负整数void add(char *s, char *s1, char *s2){//s储存结果,s1、s2是两个加数 int len1 = strlen(s1), len2 = strlen(s2); reverse(s1, s1 + len1); reverse(s2, s2 + len2); int t = 0; for

2017-10-07 15:05:16 328

原创 51nod 1097 拼成最小的数 思维

题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1097题意:设有n个正整数,将它们联接成一排,组成一个最小的多位整数。例如: n=2时,2个整数32,321连接成的最小整数为:32132, n=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355 Input 第1行:1个数N。(2

2017-10-07 13:52:36 360

原创 51nod 1099 任务执行顺序 贪心

题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1099题意:有N个任务需要执行,第i个任务计算时占R[i]个空间,而后会释放一部分,最后储存计算结果需要占据O[i]个空间(O[i] < R[i])。 例如:执行需要5个空间,最后储存需要2个空间。给出N个任务执行和存储所需的空间,问执行所有任务最少需要多少空间。

2017-10-07 13:30:58 236

空空如也

空空如也

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

TA关注的人

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