acm-icpc
文章平均质量分 76
LillianXiong
这个作者很懒,什么都没留下…
展开
-
【二进制】求一个数的二进制表示中1的个数
题目:求一个正整数x中1的个数思考:二进制是一个01串。统计该串中1的个数。方法1:将x按照朴素的方法转化成二进制串,如果x的某二进制位上为1,则res++.求得最后x中1的个数。int x;while(x){ res += (x%2); x/=2;原创 2011-09-12 23:30:18 · 1026 阅读 · 0 评论 -
【归并树】soj 3010 kth number
题意:给n个数,q次询问。每次求出指定区间(x,y)之间排序后第k个数。考虑到n的范围是10^5,m的范围是5*10^4.常规方法必然超时。考虑使用树结构来存储每一段区间(按线段树建树方式划分和查找,提高效率)。总的来讲,就是把数组用归并排序,因为我们希望得到每个二区间的原创 2011-09-14 01:28:30 · 995 阅读 · 3 评论 -
【STL】 string和char 数组类型互换
例:string st;string 的输入输出是用cin,cout,但是cin,cout很慢,于是希望在有大量输入输出时,使用printf来输出字符数组char s[N];strcpy(s,st.c_str());即可。输出时可用printf("%s\n",s)原创 2011-09-12 13:59:53 · 1091 阅读 · 0 评论 -
【线段树】soj 3019 Count Color
这道题,基本上可以算是线段树成段更新的基本操作练习的裸题了。主要是一个lazy-tag思想的应用。注意边界条件不要搞错了。其他就没什么了。#include#include#include#includeusing namespace std;con原创 2011-09-12 23:11:54 · 648 阅读 · 0 评论 -
【线段树】City Horizon
题意:给出一堆建筑物的左右端点(a,b),范围很大10^9,建筑物都是长方形的且可以相互覆盖,每个建筑物的高度是hi.求这些建筑物总共覆盖的面积。思路:这题由于建筑物的个数比较多,4*10^4,所以如果暴力枚举o(n^2)的话,肯定会超时的。所以想到用线段树优化来寻找或者标记原创 2011-09-18 00:51:11 · 1229 阅读 · 0 评论 -
【线段树】hdoj4027Can you answer these queries?
题意:n个数,每一次修改操作都是对一个给定区间的每一个数x->sqrt(x),每一次询问是求出给定区间的和。思路:典型地用线段树维护区间动态和。但是此题有一个特点,即一个数(#include#include#include#include#include#inc原创 2011-09-19 15:14:40 · 612 阅读 · 0 评论 -
【线段树】Another LCIS
题目链接:http://acm.uestc.edu.cn/problem.php?pid=1425思路:此题是一个线段树操作。要求的是对一个序列,进行成端增减一个值之后的最长连续上升序列长度。涉及到庞大量的成段更新,所以应该应用lazy思想以不至于超时,达到更新结点操作的时间均为o(lgn)。线段树中的结点需记录的信息详见代码注释。类似这类成段更新的线段树的题目,都需要注意的两个地方:原创 2011-11-03 23:43:20 · 839 阅读 · 0 评论 -
【线段树】线段树学习贴(持续更新)
线段树是一棵完全二叉树,树的每一个结点存储了一条线段(其中自己按需要给该线段区间赋予了一些属性值)。其实质是二分与递归的思想。像数据结构这样的东西,我觉得通过一定量题目的练习与思考,就还是比较容易掌握。于是,我的线段树之路开始了。题目http://zuojie.3322.org:88/soj/problem.action?id=3019 Count Color思路:线段树基本操作练原创 2011-09-12 18:57:44 · 675 阅读 · 0 评论 -
【字符串】KMP字符串匹配算法
为了实习面试,复习算法和coding练手感。OK.正题。1.什么是KMP.KMP是K M P这三个人发现的一种字符串匹配算法。具体来说,设目标串str,模式串pat. kmp可以在O(n+m)时间内找出str中的pat。KMP快的原因是每次匹配到某个字符失配时,不是回到开始匹配的位置的下一个字符重新匹配,而是通过预处理模式串pat,找出失配时,下一次应该从设么位置开始继续匹配。这样一来原创 2012-11-15 14:26:11 · 793 阅读 · 0 评论