自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 问答 (10)
  • 收藏
  • 关注

转载 fstream的使用方法介绍

[转帖]fstream的使用方法介绍 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(  向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>)  从流中输入数据。比如说系统有一个默认的标准输入

2012-12-06 20:25:31 352

原创 “文本”与“二进制”学习记录

文本文件也叫ASCII码文件,与以“文本方式”打开文件不是同一个概念!文本文件 -> ASCII -> 0x20~0x7e另外,还有回车(0x0d),换行(0x0a) ,TAB(0x09)"\n" -> “行的结束”  LF (Line-Feed)"\r" -> "回车" CR (Cariage-Return)不同操作系统“换行”解释不同:1). DOS,WIN -

2012-12-06 16:51:29 518

原创 后缀数组模板

#include #include #include #include using namespace std;const int maxn = 1000;int rank[maxn],wb[maxn],wv[maxn],wss[maxn];int n;bool cmp(int *r,int a,int b,int l){ return r[a]==r[b] &&

2012-10-29 21:09:41 1939

原创 AC自动机模板

// 有next数组版本。。#include#include#include#include#include#define N 500006using namespace std;char st[1000005];char keyword[55];int n,m;int next[N][26],cnt[N],fail[N],pos;int newnode(){

2012-10-29 11:04:23 4391 3

原创 组合计数问题方法

1.+1,-1法,如卡塔兰数2.最大,最小法:多校题3.找式子规律,找递推关系法: 多校题4.补集,设定至尊,变换模型,变为数据结构: Catalan数5.一些普通DP不太好写的可以用“记忆化搜索”!有可能特别简单,SRM551_div2_3

2012-10-28 08:41:22 500

转载 RMQ问题-very easy-打印模板

RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j主要方法及复杂度(处理复杂度和查询复杂度)如下: 1.朴素(即搜索) O(n)-O(n) 2.线段树(segment tree) O(n)-O(logn) 3.ST(实质是动态规划) O(nlogn)-O(1)ST算法(Spars

2012-10-08 16:42:24 613

原创 hdu4052-Adding New Machine-题解

扫描线,受到这里的启发。注意充分利用不相交的条件。我的代码没用线段树,用multiset过的。// zoj3540#include #include #include #include #include #include #include #include using namespace std;typedef long long LL;const int ma

2012-10-06 22:42:45 732

原创 zoj3408-Gao-题解

Brief Description:给出一个有向图,节点编号0->n-1,现在求0到其他点的最短路,考虑所有最短路的路径,求某节点出现多少次。Analysis:此题还是很容易yy的。首先求0到其他点的最短路,然后根据得到的最短路的值求出一个DAG,保证DAG里所有从0开始的路径都是最短路.设dp1[u]是从u开始到其他点的最短路的个数,dp2[u]是其他

2012-10-05 13:28:46 652

原创 一些资料

从yejinru那里看到的:http://www.cnblogs.com/yejinru/archive/2012/06/04/2534380.html

2012-09-20 11:30:55 304

转载 hdu4293-Groups题解

dp,dp[i][j]为前j个人中,i+1到j为一组时,说真话的最大人数。注意预判同一组人数个数是否超出组内人数上限。这种dp比较怪异,注意状态的设计!还有注意读题,预处理a是很明显的。源代码如下:#include #include #include #include #include #include #include #include using namespace

2012-09-18 19:42:02 811 1

原创 CF_137_div2_E_Decoding Genome 题解

Brief Description:一个字符串由n个字符组成,字符只能是大小写的字母(a->z,A->Z),其中a对应0,b对应1.....z对应25,A对应26,B对应27,Z对应51,且字符只能取编号0->m,现在规定某2个字符不能靠在一起,求这样的字符串有多少个。Analysis:先不考虑题目的规模,我们定义sum[i][j]:取前i个字符,第i个字符时j,能组成多少个字符串

2012-09-17 17:36:47 866

原创 hdu4288-2012acm成都网赛1001-Coder-题解

这题比赛时总想用树状数组(或许是被“单点更新,区间查询”的题意所诱导),既然有分割区间,用树状数组就不太明智了,虽然有单点操作,但是树状数组对这么灵活的区间操作只能是兴叹了,说了这么多,当然是用线段树做!详情看以下代码,basic coding部分是自己从前没用过的代码技巧!#include#include#include#include#include#includ

2012-09-17 12:16:15 1765

原创 CF_div2_C_神代码跟踪体会。

这道题自己写了个很挫的代码,而且WA on test 39,不知道错在哪里,于是翻看神牛的代码,瞬间被震撼了!以后素数问题可以这么写!亮点1:p[i] : i的一个因子for ( int j=s[i]; j>1; j/=p[j] ) :这句话一定能找到s[i]的所有因子!亮点2:处理最大公约数问题可以“交叉”来,这样照顾到2方面启示:1.比赛时的空间很充裕!

2012-09-15 21:21:12 1334

原创 细节问题总结

1.在读入时,如果读入的数据大于零,应该加上1e-8,否则应该减去1e-8,解决double 转换int时的精度损失。2.重写程序时(或部分修改程序时),有可能原先的细节会带入新程序,这个细节可能是错误所在,所以我们所要做的是静下心来,静态查错。   3.WA到吐血也找不到错误时,注意设计大数据,15分钟可以人肉出来的大数据不要怕麻烦的出!!4.对于某些树形dp

2012-08-28 11:11:37 517

原创 2012_多校10若干题解

1001:首先可以根据b得到所有的素因子,现在把某素因子分配给n个位置,比如素因子2有4个,n=4,那么分配方案可以为0,0,0,4   0,0,1,3    0,2,2,0等等,这个可以用dp很容易地预处理出来,将这些素因子的分配方案数相乘,但是要排除乘数为“1”的情况,可以用容斥原理来排除。1004:我们知道每个选手的运动方程都是直线,当时间足够长(t>t0)时,他们之

2012-08-27 09:17:31 1095

原创 hdu4389-X mod f(x)-多校9-1010题解

Brief Description:题目要求统计出区间[a, b]中能够被自身的数位之和整除的数的个数。Analysis:摘自题解:分别计算出[1, b]中符合条件的个数和[1, a-1]中符合条件的个数。d[l][i][j][k]表示前l位和为i模j的结果为k的数的个数,那么就有方程d[l+1][i+x][j][(k*10+x)%j] += d[l

2012-08-22 19:59:53 1834

原创 2012多校可做题

记得通读题目,不要着急,除了水题可以马上刷,中等题先都找出来再和队友交流分配再做。多校可做题一定要全部AC了。多校9:1010(over,注意按位DP的“全打表”或“半打表”,“半打表”是题解的方法)10061008 1004 1003未完待续。。

2012-08-22 09:24:19 381

原创 hdu4381Count the Building-多校9-1002-题解

Brief Description:给定n个块,编号从1到n,以及m个操作,初始时n个块是白色。操作有2种形式:1 ai xi : 从[1,ai]选xi个块,将这些块涂白。2 ai xi:从[ai,n]选xi个块,将这些块涂白。可以忽略某些操作且如果区间内没有足够的黑块(黑块用于涂白),则不能进行这个操作。Analysis:写写画画一看就知道这道题是一个背包问题。

2012-08-22 09:01:26 617

原创 多校8-1003-hdu4372-Count the Building题解

Brief Description:有N个高楼,楼的高度为N的一个排列,现在从左到右能看到x个,从右往左能看到y个,问高楼一共有多少种排列。能看到高楼的前提是后面的高楼没有被前面的高楼挡住(即后面高楼的高度大于前面高楼的高度)Analysis:方法一: 摘自题解+修正题解笔误+个人理解:设dp[i][j][k] 为共i个楼,从左往后看到共j个,从右往左看共k个的

2012-08-18 09:53:01 1047

原创 2012暑期多校8总结

1001,1002 2个简单题没做出来,这不是我们队的风格。原因在于:题面复杂的描述让我们想复杂了,其实简单的联想就能找到本质。以后面对这种一票人过的题记住不需要着急,多发散发散一定是能想出来了。这次就当是教训,这也是好事,平时太过于顺利,真正的比赛或许就容易栽跟头.

2012-08-16 19:50:53 393

原创 二分图相关-持续更新

二分图的若干结论:最小覆盖要求用最少的点(X集合或Y集合的都行)让每条边都至少和其中一个点关联。最小覆盖=最大匹配1.先把最大匹配中每条边抽取一个点,这些点至少覆盖了最大匹配中的边,因此有最大匹配2.从最小覆盖中构造一个匹配(匹配数=最小覆盖数),设最小覆盖的点为v1,v2,...vn,显然对任意2点vi,vj出发总可以找到2条边e1,e2且e1,e2没有连向同一个点(想想为什

2012-08-16 10:53:42 484

原创 POJ1258-最小生成树-kruskal模板

直接贴代码:#include #include #include #include #include #include using namespace std;const int maxn = 105;struct node{ int u,v,w; node(){} node(int _u,int _v,int _w){ u = _u;

2012-08-16 09:32:30 962

原创 ZOJ-2008-一个最短路问题-(dijkstra+heap,spfa)

Brief Description:给你一个n个点的有向图,节点编号为1到n,现在从节点1派出n-1个人到其他n-1个点,再从这n-1个点回到节点1,现在要求这n-1个人走的总路径长度最短,求这个路径长度。Analysis:从节点1到其他n-1个点可以用单源最短路。从n-1个点回到节点1怎么办?很简单,把原来的有向图的有向边反过来,然后求源点为1的单源最短路就行了!这题

2012-08-15 19:25:37 988

原创 hdu4358-Boring Counting-一道以树为背景的题的跟踪体会

Brief Description:给你一棵树以及K,节点有权值,现在给你一些询问,询问以某个节点为根节点的子树中权值恰好出现K次的有几种。Analysis:以下摘自题解:数据结构题,利用离线加树状数组统计答案我们考虑这个问题的弱化版:给你N个数,求一个区间内不同的数字有多少个,这个问题可以通过记录每个权值上次出现的位置,在O(N lgN)的时间内得到解决,具体的做

2012-08-15 15:17:07 696

原创 hdu4366-successor-2012 Multi-University Training Contest 7-1007

Brief Description:给出一棵树(人与人之间的上下级关系),每个人有一个忠诚度和能力值,现在老板要解雇某些人,老板想要知道解雇一个人x后,x的下属中能力值>=x的能力值并且忠诚度最高的是谁?Analysis:对树进行左右编号,一个节点的左右编号一定是覆盖它的所有子树的左右编号(树问题化为区间问题的常用技术),然后我们考虑用线段树来解决这个问题。先按能力值从大到小排序,

2012-08-15 10:03:39 960

原创 HOJ3086_Noah's Ark tickets_题解

Brief Description:一个十进制正整数x,如果x的每一位能整除x的每一位的和,则我们称x为“诺亚数”,现在要求第t个“诺亚数”是多少。Analysis:我们先转换一下思路,给出一个数y,如果我们能知道不大于y的“诺亚数”的个数,那么就可以通过二分求出第t个“诺亚数”。现在把问题转到“给出一个数y,求一般求符合某种条件的整数的个数我们都可以用按位DP来做。设

2012-08-06 21:58:10 829

原创 几个按位DP的总结

1.hdu3555:关键之处是状态的划分,设计3种状态,然后就知道怎么转移,同时自己研究出一种到达上限的简单写法,kk=0为没达到上限,kk=1为达到上限: if(kk == 0) s1 = s2 = 0; if(kk==1 && s if(kk==1 && s==a[i+1]-'0') s1 = s2 = 1;2.http://61.187.179.132/Judge

2012-08-06 10:21:47 647

原创 HOJ2965_Magic-Pen4_解题报告

Brief Description:给定n条线段以及整数k,线段上有一个颜色值num,现在有2种操作,0,X,Y:将X到Y的线段的(num值+1)%k,1,X,Y:求X到Y被num值划分为多少个部分(连续的相同num值为一个部分)。Analysis:这题显然用线段树做,我们根据问题的特点设计线段树节点的域。线段树节点域为:struct node{    int left,r

2012-08-04 22:14:23 589

原创 hdu4334-Trouble-多校4-1004-题解

Brief Description:给定5个集合,每个集合内元素个数Analysis:把第1,2个集合的数和的所有结果按从小到大的顺序存在M[0]中,M[0]中元素总数为sum0把第3,4个集合的数和的所有结果按从小到大的顺序存在M[1]中,M[1]中元素总数为sum1从第5个集合中取出一个数key,查找M[0][i]+M[1][j]=key,显然查找可以在线性时间

2012-08-03 19:58:07 451

原创 hdu4331-Image Recognition-多校4-题解

Brief Description:一个01方阵中找出四条边全都是1的正方形的个数,对于正方形内部则没有要求。Analysis:摘自题解:一个直观的想法是首先用N^2的时间预处理出每一个是1的点向上下左右四个方向能够延伸的1的最大长度,记为四个数组l, r, u, d。然后我们观察到正方形有一个特征是同一对角线上的两个顶点在原方阵的同一条对角线上。于是我们可以想到枚举原来方

2012-08-03 17:03:16 730

原创 hdu4325-Flowers-2012 Multi-University Training Contest 3-题解

Brief Description:有一些花,给定每朵花的开花时间和凋零时间,现在给出一些询问,询问在某个时刻有多少花处于开花状态的。Analysis:经典的“区间更新,单点查询”,可以用线段树或树状数组做,推荐用树状数组。由于题目规模不大,所以离散化时用Map比较方便。具体见以下代码:#include #include #include #include

2012-08-02 10:14:37 358

原创 hdu4329-MAP-Multi-University Training Contest 3-题解

Brief Description:给定2个计算公式,然后按公式算出答案。Analysis:水题,关键是看清题目和字符串的处理(如何将带有空格的字符串按空格划分,这里用了stringstream),判重用map比较好写,具体见代码。#include #include #include #include #include #include #include #inc

2012-08-01 19:47:27 600

原创 hdu4324-Triangle LOVE-2012 Multi-University Training Contest题解

Brief Description:给定一个n*n的矩阵A,A[i][j]=1表示i喜欢j,A[i][j]=0表示i不喜欢j。规定A[i][i]=0且对任意i,j(i!=j)有A[i][j]=1或A[j][i]=1,且A[i][j]!=A[j][i],表示任意2个人一定存在喜欢关系,但是不能互相喜欢,即在有向图,保证任意两点间仅有一条有向边。现在若发现有i喜欢j,j喜欢k,k喜欢i(三角恋

2012-08-01 19:37:47 490

原创 hdu4323-Magic Number-2012 Multi-University Training Contest 3题解

Brief Description:给定n个字符串,以及m个query,每个query包含1个字符串s和一个整数t,求n个字符串中与s距离小于等于t的个数,题目中给出了字符串的定义。Analysis:比赛时这题毛估的复杂度显然是TLE的级别的,所以一直没敢动,其实在有很多队伍过的情况下就应该大胆尝试。这题的关键在于求2个字符串的距离,可以用dp做。若有2个字符串a,b,求它们的

2012-08-01 10:24:58 722

原创 hdu4313_题解

Brief Description:给出一棵树,树边有权值,规定树上某些点为危险点,现在要去除一些边,使得危险点之间的路径不存在,要求删除的边的权值和最小,求这个权值和。Analysis:树型DP,在DFS里回溯到某个节点u时,保证条件1.以这个节点为根的子树当中,危险点个数dp[u]表示 保证条件1时 u连到子树中危险点(危险点最多只有一个)的路径的最短的

2012-07-27 09:54:02 749

原创 hdu4301_题解

Brief Description:给出一个2*n的矩形(矩形被划分为2*n个小方块),现在用一把刀切割方块,问切成m块有几种方法,注意对称的也算不同种。Analysis:用DP做,注意状态的设计!以下摘自题解:状态表示 f[i][0][j]:前i行已经出现了j部分且第i行的两个格子属于同一部分的方法数         f[i][1][j]:前i行已经出现了

2012-07-26 10:29:29 587

原创 hdu_4300题解

Brief Description:给出26个字母一一对应的明文转密文的table,以及明文+密文(有缺省)的一个字符串A,求出长度最小的完整的A。Analysis:一开始想用暴力,后来发现字符串判相等的特别费时,TLE了几次,最后发现KMP可过,首先将A的前半部分(一定是明文,这个是显然的)翻译成密文,然后求新串的next数组,然后迭代最后一个字母的next(具体见代码),一直移到长

2012-07-25 11:20:05 696

原创 校内排位赛_2012_7_22_A

Brief description:给定一个3*3的矩阵,矩阵中的数为1,2,3...9,选定矩阵中任意2*2的子矩阵,进行顺时针移动,问最后得到的矩阵中的数为(1,2,3;4,5,6;7,8,9)的最少移动步数。Analysis:这题一看便是BFS,不过一开始用没有预处理的BFS+STLset判重,TLE了,看了一下标程才发现应该进行预处理,从答案逆时针推,用康托展开判重会快一点。#includ

2012-07-24 11:16:14 1363

空空如也

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

TA关注的人

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