自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yp_2013的博客

毕竟玩物而已

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

原创 hdu5726

题目大概说给一个包含n个数的序列,多次询问有多少个区间GCD值等于某个区间的gcd值。任何一个区间不同的GCD个数是log级别的,因为随着右端点向右延伸GCD是单调不增的,而每次递减GCD至少除以2。考虑固定左端点,最多就nlogn种GCD,可以直接把所有区间GCD值预处理出来,用map存储各种GCD值的个数,查询时直接输出。具体是这样处理的:枚举左端点,进行若干次二分查找,看当前GCD值最多能延伸

2017-04-13 09:27:52 375

原创 hdu5875 二分加st

题意:给你一个n,n个数  m个询问,每次询问你 l,r,, a[l] % a[l+1] % a[l+2] %……a[r] 结果是多少 思路: 每次有效的取模会使结果减半,因此只有log次有效取模,每次往右找一个不大于结果的最靠左的数,ST表+二分  注意RMQ查询的时候少用 log函数,容易超时,   st解法:http://blog.csdn.net/aitangyong/article/

2017-04-12 10:03:53 346

原创 hdu5898数位dp

题意:给出一个区间[l, r],问其中数位中连续的奇数长度为偶数并且连续的偶数长度为奇数的个数。(1<=L<=R<= 9*10^18) 例如 12223333 就不满足条件,因为存在奇数个奇数(1个1)#include<bits/stdc++.h>#define LL long long#define N 100010#define INF 0x3f3f3f3fusing namespac

2017-04-09 10:35:06 358

原创 快速幂小trick

快速幂底大于1e9时需要mod一下,才行, 不然快速幂里面就会乘爆了#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 10;long long a, m ,n ;const long long mod = 1e9 + 7;long long qp(long long n ,long long m){

2017-04-09 10:11:13 312

原创 hdu5787 数位dp

pos表示的是当前处理的是第几位,最低位是0位,abcd表示相邻的四位(一共五位) d是最后一位,就是最远的那位,主要熟悉递归流程,记忆化搜索 #include<stdio.h>#include<iostream>#include<map>#include<math.h>#include<string.h>#include<algorithm>using namespace std;

2017-04-08 16:19:52 265

原创 hdu5755

与poj1681类似的一道题,不同的是这里使用的是除法而不是异或#include <iostream>#include <vector>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>using namespace std;vector<int> ans;const int MAXN = 900

2017-04-08 13:14:20 430

原创 poj1681 高斯消元

题目大意: 一个n*n 的方格 ,我们对它进行染色,每个格子都 可以 染成 白色和黄色,( 一旦我们对这个格子染色 ,他的上下左右 都将改变颜色);给定一个初始状态 , 求将 所有的 格子 染成黄色 最少需要染几次? 若 不能 染成 输出 “inf” 解题思路: 我们可以首先来构造一个矩阵,这个矩阵式干啥的呢,我们可以认为这个矩阵是按下一个格子之后它能够作用的范围,将能够作用的范围用1表示否

2017-04-08 10:53:09 398

原创 whu1608 遍历子集dp

题目大意:给你n个数和s,问最多将n分为多少组,使每组通过加减操作能得到s的组数最多,输出组数#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long lint; int n, s, T, a[20];

2017-04-07 10:29:55 276

原创 ccf地铁修建

题意:无向图,从1到n的所有路径中取路径中最长的那条 比较, 然后输出值最小的那条。 当时想的是直接深搜, 记录当前路径最大值, 到n比较即可。 这样会出问题,就是从别的地方搜过来就会破坏掉原有的顺序,那么记录路径的最大值就会出现问题了。简直被自己蠢哭。放上自己比赛时的错误代码和错误例子#include <bits/stdc++.h>using namespace std;struct No

2017-04-02 09:38:17 3161 2

原创 leetcode 385 Mini Parser

C++ Clean and Elegant Code with Clear logicclass Solution { NestedInteger parse(const string &s, int & pos) { if (s[pos] == '[') return parseList(s, pos); return par

2017-03-25 21:24:21 295

原创 矩形面积并

http://blog.csdn.net/lwt36/article/details/48908031

2017-01-19 12:21:50 405

原创 hdu5890 bitset 优化dp

题意:50个数,10W个询问,每次问删掉第i,j,k个数后,是否存在一种选10个数和为87的方案,只需要输出 ’Yes’ 或者 ’No’题解:暴力:不同的询问大概2W个,每个暴力bitset DP,抠一抠能卡着过。优化1:先求出一组解,如果询问和解没交就是’Yes’,否则暴力,不同的询问大概1W个;优化2:先预处理出所有询问的答案,能方便的复用之前的DP数组,不用每次从头开始重新求。#include

2016-09-18 09:14:01 454

原创 hdu5889 最短路加网络流

思路:先跑一次最短路,然后把最短路上的边扔进网络流跑一次最小割就好了,和HDU3416异曲同工#include<bits/stdc++.h>using namespace std;const int maxn = 2005;#define inf 1e9#define INF 1e9const int maxm = 4000000+50;struct Node{ int v,w

2016-09-18 09:01:42 485

原创 ccf模板生成系统

这题目string处理的还是蛮不错的,用到了getline, substr, find,+ 等函数~~#include<iostream>#include<string>using namespace std;int main(){ int lnum,vnum; int start,end,flag; string in[101],out[101]; strin

2016-09-09 19:59:49 1135

原创 hdu5833 异或版高斯消元

300个最大质因数小于2000的数,选若干个它们的乘积为完全平方数有多少种方案。合法方案的每个数的质因数的个数的奇偶值异或起来为0。比如12=2^2*3,对应的奇偶值为01(2的个数是偶数为0,3的个数是奇数为1),3的对应奇偶值为01,于是12*3是完全平方数。然后异或方程组就是:a11x1+a12x2+…+a1nxn=0a21x1+a22x2+…+a2nxn=0…an1x1+an2x2+…+an

2016-08-29 15:31:14 687

原创 省赛记

1002 拓扑加dp, dpi表示能到达i点的所有ai 的和,然后乘一遍bi就可以了。 因为拓扑的时候多条路径就是加了几次#include <bits/stdc++.h>using namespace std;#define ll long longconst int maxn = 1e5 + 10;const ll mod = 1e9 + 7;int a[maxn] ,b[maxn]

2016-08-29 14:38:31 334

原创 hdu5787 数位dp

题意是给你一个l,r,问你这中间的数字有几个符合K位数字全都不一样。 这题比较明显的数位dp dp[pos][p1][p2][p3][p4] pos表示当前位,p4表示前一位。这里要考虑前导0的情况,p4=10的时候表示前一位为0. 档(p4==10 && u==0)时表示当前的这位为0并且前四位都为0.所以向下dfs的话 res+=dfs(pos-1,10,10,10,10,flag&&ed

2016-08-23 20:41:32 230

原创 hdu 5802 搜索加贪心

题目大意 调节音量s到t,上升音量每秒只能上升1,下降音量每秒为2*x,x为上一次下降的音量,如果下降时休息或者上升音量则x置为1,音量最低为0 思路就是贪心的去选,每次下降到终点上的最近一点,或者终点下的一点,取得一个最小值就好。 两种情况,一直是降到上面,二是降到下面,注意降到下面需要往上补,这里因为贪心所以每次往上补的时候正好利用中间的停顿,所以别漏了这种情况#include<stdio

2016-08-23 20:10:36 268

原创 hdu5862树状数组加扫描线

树状数组加扫描线的思想#include <iostream>#include <cstring>#include <cstdlib>#include <stdio.h>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include

2016-08-18 23:05:26 407

原创 hdu5861 维护最大最小值线段树

题意:有n 个村庄在一条公路上,每两个村庄之间的路有使用和不使用两种状态,使用时,每天需耗费wi 元,每段路初始时都是不使用的,在m 天中,我们总共可以打开一次、关闭一次,从第一天到第m 天,每一天给出ai、bi,表示ai 到bi 之间的路必须是通的,问每一天n-1段路的总耗费最小为多少。思路:  每段路只能打开一次,关闭一次,我们可以求出第i 段路最早什么时候使用t1,最晚什么时候使用t2,那么我

2016-08-18 22:52:23 637

原创 ccf字符串题

#include <iostream>#include <string>#include <vector>using namespace std;int main(){ int num; string curDir; vector<string> list; cin>>num>>curDir; cin.ignore(); for(int i=0;

2016-08-17 21:01:52 440

原创 hdu4628枚举子集状压dp

题目大意: 给一个字符串,每次可以删除一个可不连续回文子串,问最少删几次可以全部删完。思路: 因为字符串长度最大16,所以可用二进制状态表示, 1表示选取这个字符,0不选,组成一个子串。 先预处理出所有状态,看这个状态是不是回文。 f[i]表示状态i最少几次可以全删完, 初始化f数组INF f[i] = min{f[i], f[s]+1 } s是i的子集。 #include<iostrea

2016-08-03 11:59:48 371

原创 hdu5792

狗b题,气死我了,思路正确,离散化的时候相同元素要按照位置从小到大排,然后不用两遍求,手推一下,做减法就可以了~#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <map>#include <vector>using namespace std;#define ll lo

2016-08-02 18:59:46 601

原创 又一线段树,算上findpos

http://blog.csdn.net/shiqi_614/article/details/9938973

2016-08-02 10:48:02 332

原创 最长上升和下降子序列好题

http://www.myexception.cn/program/1928123.html

2016-08-02 10:27:07 383

原创 ?????

http://blog.csdn.net/u011433745/article/details/38779143

2016-08-02 00:36:47 217

原创 splay几个小模板

bzoj 1269 文本编辑器, 主要类型是字符串,有区间插入和删除,含有光标/* ***********************************************Author :kuangbinCreated Time :2013/8/26 22:47:15File Name :F:\2013ACM练习\专题学习\splay_tree_2\文本编辑器ed

2016-06-26 09:49:24 243

原创 AC自动机精讲

http://www.cnblogs.com/Booble/archive/2010/12/05/1897121.html

2016-06-22 11:09:18 342

原创 kmp单片自动机

#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 10;int nxt[maxn];// find s in tint kmp(char *s, char *t) { int ret = 0; int m = strlen(s); nxt[0] = -1; for (int i

2016-06-22 10:59:25 299

原创 手写堆

#include <bits/stdc++.h>using namespace std;const int MAX_N = 1e3 + 10;struct Heap { int heap[MAX_N]; int pos[MAX_N]; int size; void init() { size = 0; } void push(in

2016-06-22 10:41:58 1015

原创 AC自动机

http://www.cnblogs.com/Booble/archive/2010/12/05/1897121.html//hdu2222//ACauto//构造失败指针:设当前节点上的字母为C,沿着他父亲的失败指针走,直到走到一个节点,他的儿子中也有字母为C的。然后把当前节点的失败指针指向那个字母也为C的儿子。如果一直走到了root都没找到,那就把失败指针指向root。//匹配(1)当前字

2016-06-21 08:41:51 267

原创 hdu 5468 容斥加树形dp

容斥,num统计树中含有因子i的结点有多少个,然后用总结点数减去就可以了,注意now-pre,因为肯定要减,因为当从一个子树到另一个子树的时候,也就是另一个子树的num值还没加进来的时候,num值统计的是全局的,所以要把子树外面的值给减掉~#include<iostream>#include<algorithm>#include<string>#include<map>//int dx[4]=

2016-06-17 10:07:43 376

原创 hdu 5458 树链剖分模板

题意:给出一张N个点,M条边的无向图,有两个操作:1.删除(u, v)间的一条边2.如果删除(u, v)间的一条边可使其不连通,找出这样的边的个数,就是找(u, v)间桥的个数思路:首先离线这些操作,时光倒流从最终状态逆着加边加回原图,可以考虑用并查集建树,然后以树作为最终状态,再树链剖分预处理下,建一颗线段树维护区间和(叶子值为1代表当前边为桥),如果有边(u, v)要加入,那就将(u, v)

2016-06-15 20:34:23 371 1

原创 RMQ模板hdu 5452

题意:有一棵生成树,有n个点,给出m-n+1条边,截断一条生成树上的边后,再截断至少多少条边才能使图不连通, 问截断总边数?解题思路:  因为只能在生成树上截断一条边(u, v),所以只需要统计以v为根节点的子生成树里的节点与子生成树外的节点的边数就可以了。对于新加入的边(u’, v’)来说,只影响以LCA(u, v)为根节点的子树里面的节点。统计所有答案,扫一遍输出最小即可   dp值记录的是以

2016-06-15 19:58:16 354

原创 hdu 5444 继续二叉查找树

/************************************************************************* 这是一个二叉查找树,实现了以下操作:插入结点、构造二叉树、删除结点、查找、 查找最大值、查找最小值、查找指定结点的前驱和后继。上述所有操作时间复杂度 均为o(h),其中h是树的高度 注释很详细,具体内容就看代码吧***********

2016-06-13 20:08:34 353

原创 hdu 4122 单调队列或线段树

/**hdu 4122 单调队列题目大意:给定n个时刻,在每一个时刻都要生产ai个月饼。给出m个可以生产的时刻,每个时刻单个生产费用为bi,单个月饼可储存T时间,单位时间费用为S 问如何安排生产花费最少解题思路:用单调队列维护一个点之前所有点的最小花费(为生产费+储存费)特别注意:n个时刻可能有重复的*/#include <string.h>#include <alg

2016-06-10 16:43:32 316

原创 hdu 4123 rmq与树的直径

#include <bits/stdc++.h>using namespace std;#define ll long longconst int inf = 0x7f7f7f7f;const int maxn = 5e4 + 10;deque<int> Max, Min;struct node{ int v, w; node(){} node(int _v, i

2016-06-10 16:41:32 325

原创 hdu 4125 二叉搜索树建立与kmp

#include <set>#include <map>#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <iostream>#include <limits.h>#include <string.h>#include <string>#i

2016-06-10 16:38:38 292

原创 codeforces 679 B

只有2种情况,一直搜索下去就行了 ,一个是剩余的数,一个是答案一,即block,一个是增加的用到的答案#include <bits/stdc++.h>using namespace std;#define ll long longconst int maxn=1e5+10;ll fac[maxn];ll bcnt , bsum;void dfs(ll remain , ll cnt , l

2016-06-09 15:26:31 647

原创 codeforces 679 C

发现其实变量的命名,空格的书写方式以及花括号的打否非常关键,直接影响到心情~#include <iostream>#include <fstream>#include <set>#include <map>#include <string>#include <vector>#include <bitset>#include <algorithm>#include <cstring>

2016-06-09 15:18:34 615

空空如也

空空如也

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

TA关注的人

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