自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nyist_xiaod

When you want to give up, think of why you persist until now.

  • 博客(16)
  • 资源 (13)
  • 收藏
  • 关注

原创 NYOJ 228 士兵杀敌五(插线问线__离线版)

题目链接:Click here~~观察这道题你会发现它的特点:查询操作全部在插完后进行,也就是传说中的离线问题。这道题有种巧妙的O(n)的做法。其思想和树状数组的插线思想类似。#include #define base 10003const int M = 1000003;int c[M];int main(){ int n,m,Q,a,b,x;

2012-04-25 09:28:43 1319 3

原创 树状数组

在处理一些关于区间模型的问题时,常常会遇到处理前缀和(即从1到x的和)的问题。这类问题常规解法有两种:1、直接存储原数组,修改元素O(1),取前缀和O(n)。2、直接存储前缀和,修改元素O(n),取前缀和O(1)。但是如果当修改元素和取前缀和操作都比较大的时候,这两种方法就都不能用了。怎么办呢?我们可以用另外一种解法:树状数组。其修改元素和取前缀和的复杂度均为O(logn)

2012-04-25 08:48:55 1283 2

原创 NYOJ 536 开心的mdd(区间DP)

题目链接:Click here~~月赛一道dp的题,看了看解题报告,懂了些。题意:求n个给定顺序的矩阵连乘所要的最少乘法次数。解题思路:首先我们通过观察题目中举出的例子不难发现,两个矩阵(比如(m*n) * (n*o))相乘所需要的乘法次数为:m*n*o。由于矩阵相乘是有规律的:前面的矩阵的列数等于后面的矩阵的行数。所以我们可以用一个一维数组p[n+1]巧妙将矩

2012-04-24 10:44:53 1048

原创 HDU 4203 Doubloon Game(博弈)

题目链接:Click here~~一次hdu比赛的一道博弈题,当时没有做出来,看见别的好多队伍都做出来了,很ym。题意:有n枚硬币,再给你一个数k,每次只能拿k^m枚,两人轮流拿,先拿完者胜。你执先手,如果能赢,输出第一次最少拿几枚,否则输出0。解题思路:由于n的范围很大(10^9),所以不能用数组存值了,既然不能这么做,那么它应该有某种规律吧,我们来一起找找看。

2012-04-20 16:40:44 1258

原创 HDU 1517 A Multiplication Game(博弈入门)

题目链接:Click here~~这两天看了下博弈,整理下思路吧。先引入必胜点和必败点两个概念:必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。必胜点(N点) :下一个选手(Next        player)将取胜的位置称为必胜点。对于这两个概念的描述,我开始的时候也搞不懂。其实可以从字面理解,简单说来,就是当你走到某一

2012-04-19 13:33:01 3013

原创 HDU 2095 Find your present (2) (位异或)

题目链接:Click here~~题意:给你n个数字,已知只有一个数字出现了奇数次,其他数字都出现了偶数次,要求你找出这个特别的数字。解题思路:题目内存限制:1024K,所以不能简单地用数组存然后再处理。为了节约内存,可以用STL里面的set,map等容器。当容器里没有这个元素的时候,就插入这个元素,否则,删除这个元素。最后,容器中肯定只剩下一个元素,便是我们所

2012-04-12 22:27:05 4988 1

原创 HDU 3415 Max Sum of Max-K-sub-sequence(单调队列)

题目链接:Click here~~前几天学的单调队列,然后找题目练习,看这道题两天了,终于想通了。题意:给你一个循环序列{An},让你找出长度不大于K的连续子序列,使这个子序列和最大。解题思路:由于子序列连续,所以和上道题目一样,它的和可以通过两个前缀和作差得到。(即sum[i~j]=sum[j]-sum[i-1](j-i+1而对于同一个序列终点来说,起点左边那个元

2012-04-10 09:25:58 1251

原创 NYOJ 524 & HDU 2054 A==B?(模拟)

题目链接:Click here~~还是一道模拟题。和上次的A+B四类似,先记录每个数字的符号,然后把符号去掉,处理每个数字的前缀0和后缀0,然后比较。需要注意的是:1、删前缀0的时候,整数必须保留一位。2、只有小数才删后缀0。3、注意+0 == -0。#include #include #include #include const int M=10

2012-04-10 07:15:06 1166

原创 NYOJ 520 & HDU 2136 Largest prime factor(筛法思想)

题目链接:Click here~~题意是求出某个数n的最大素因子是第几个素数。原以为是水题,没想到低估它了。开始时我先把100W内的素数打表,然后用欧拉函数的做法,对每个数挨个分解质因子,得到最大的素因子,输出它的下标。结果,悲剧的TLE了。后来小冰告诉我,可以用筛法的思想做,我顿悟了。做法如下:表中不在记录素数的值,而是直接记录素数的序数。从2开始循环,当遇到

2012-04-09 14:13:33 734

原创 Ordinal number(序数词表示)

那天比赛做的,关于如何表示序数词,记录下来,以后看。#include int main(){ int z,n; scanf("%d",&z); while(z--) { scanf("%d",&n); if(n%100/10==1) printf("%dth\n",n); else

2012-04-08 21:19:42 1260

原创 Sexagenary Cycle(干支纪年)

给你一个年份,用干支纪年表示。干支纪年需要注意的有以下几点:1、公元后第一个甲子年是公元4年。2、干支纪年以60年为一循环。3、公元纪年的起点是从公元1年开始,也就是说,没有公元0年。4、对于公元前的年份可以转化成公元后的年份,由于没有公元0年,所以要先给公元前年份加1,然后加60的整数倍变成公元后的年份。#include int main(){ int z

2012-04-08 17:34:47 1578

原创 HDU 4193 Non-negative Partial Sums(单调队列)

题目链接:Click here~~上次比赛的一道题,可以用单调队列做。题意:给你一个n项的序列,每次可以把序列的首项移动到末尾,显然一共可以构成 n 种序列,问一共有多少种序列满足条件:序列的前 i 项和都大于等于0(i:1~n)。解题思路:开一个 2*n 的数组,后面 n 项复制前面 n 项。这样,每个长度为 n 的区间都代表一种序列(这也是循环序列的一般做法吧)。

2012-04-06 14:33:15 2135 2

原创 单调队列

现在有一个数列{An},假设它有n项,问题是:求出每个区间长度为k的连续区间内数列的最小值。有种很容易想到的解法:遍历每个所求区间,依次找出它们的最小值。复杂度为O( (n-k)*k )分析上面的解法我们不难发现,在找最小值时,我们做了很多重复的比较。这样的做法无疑使复杂度变大,有没有一个好的办法可以不要做这些重复比较呢?于是,引出了我们本文的主角:单调队列。单调队列是这样一个

2012-04-06 10:23:21 3211 2

原创 HDU 1060 Leftmost Digit(求n^n的最左位)

题目链接:Click here~~题意:求 n^n 的最左位是多少。解题思路:对于十进制的任意一个数 n,都可以变成 n = a * 10^m(1)观察上面的式子不难发现,n 的首位仅由a的整数部分决定。所以我们可以想办法先把a的值求出来,再对a的值取整,就是我们所要的结果。首先,我们对式子两边同时取以10为底的对数,即 log10(n) = log10(a)

2012-04-03 21:33:57 1256

原创 NYOJ 513 & HDU 1753 A+B Problem IV(模拟)

题目链接:Click here~~一道高精度加法的题目。由于数据中可能既有小数又有整数,所以我把整数变成小数(后面加".0"),从而化为两个小数相加的问题。找小数点的时候,先判断它是否有末尾0,把末尾0先消去(最少保留一个)。然后把小数点对齐,按照A+B(二)的做法先把数组倒置,然后对应位相加。 #include #include #define max(a,

2012-04-02 10:29:44 1229 2

原创 HDU 1018 Big Number(求n!的位数)

题目链接:Click here~~题意是要求出n的阶乘的位数。Stirling公式: lim(n→∞)   (n/e)^n*√(2πn) / n! = 1根据此式,对等式两边同取以10为底的对数即可得到log10(n!)的值,再对此值取上整即可得到n!的位数。需要注意的是,式中有自然对数e,e是未知的。所以可以通过换底公式,log10(n!) = log(n!) /

2012-04-01 15:28:09 676

国家集训队2009论文

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

国家集训队2008论文

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

国家集训队2007论文

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

国家集训队2006论文

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

国家集训队2005

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

国家集训队2004

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

国家集训队2003论文

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

国家集训队2002论文

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

国家集训队2001论文

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

国家集训队2000论文集

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

国家集训队论文1999年

与大家分享国家集训队论文,仔细阅读,受益匪浅。

2012-04-18

杭电ACM课件

杭电ACM课件,与感兴趣的同学分享,内容比较简单,适合初学者。

2012-04-18

统计的力量ppt

听清华大学 张昆玮讲述 zkw式线段树。

2012-04-18

空空如也

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

TA关注的人

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