摘要: [Baltic2007]Sound静音问题(BZOJ1342)解题报告【问题描述】 静音问题 数字录音中,声音是用表示空气压力的数字序列描述的,序列中的每个值称为一个采样,每个采样之间间隔一定的时间。 很多声音处理任务都需要将录到的声音分成由静音隔开的几段非静音段。为了避免分成过多或者过少的非静音段,静音通常是这样定义的:m个采样的序列,该序列中采样的最大值和最小值之差不超过一个特定的阈值c。 请你写一个程序,检测n个采样中的静音。 n,m,c( 1<= n<=1000000,1<=m<=10000, 0<=c<=10000),分别表示总的采样数、静音的长度 阅读全文
posted @ 2011-11-09 07:59 N_C_Derek 阅读(504) 评论(1) 推荐(0)
摘要: CQOI2007余数之和(BZOJ1257)解题报告【问题描述】 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余数。 例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7 50%的数据满足:1<=n, k<=1000 100%的数据满足:1<=n ,k<=10^9【分析】 显然朴素枚举肯定TLE。对此式子加以观察。 若k<i 那么 k mod i=k;所以j(n,k) 阅读全文
posted @ 2011-11-08 16:31 N_C_Derek 阅读(539) 评论(0) 推荐(0)
摘要: NOI2001炮兵阵地解题报告【问题描述】 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H”表示),也可能是平原(用“P”表示)。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);炮兵能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格,不受地形影响。 现在,将军们规划如何部署炮兵部队,在防止误伤的前提下(保证任何两支炮兵部队之间不能互相攻击,即任何一支炮兵部队都不在其他支炮兵部队的攻击范围内),在整个地图区域内最多能够摆放多少我军的炮兵部队。 n<=100 m<=10【分析】 看到这道 阅读全文
posted @ 2011-11-03 22:22 N_C_Derek 阅读(416) 评论(0) 推荐(0)
摘要: 过河 解题报告【问题描述】 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,……,L(其中L是桥的长度)。坐标为0的点表示桥的起点,坐标为L的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。一次跳跃的距离是S到T之间的任意正整数(包括S,T)。当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥。题目给出独木桥的长度L,青蛙跳跃的距离范围S,T,桥上石子的位置。你的任务是确定青蛙要想过河,最少需要踩到的石子数。其中. 阅读全文
posted @ 2011-10-27 20:42 N_C_Derek 阅读(470) 评论(0) 推荐(0)
摘要: 2^k进制数解题报告 【问题描述】设r是个2k进制数,并满足以下条件:(1)r至少是个2位的2k进制数。(2)作为2k进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位。(3)将r转换为2进制数q后,则q的总位数不超过w。在这里,正整数k(1≤k≤9)和w(k<w≤30000)是事先给定的。问:满足上述条件的不同的r共有多少个?【分析】 k<=2^9=512,w<=30000,这题的数据大,显然不可能朴素搜索或枚举。但是如果我们加以分析,其实这道题还是很简单的。 先看几个简单的问题。首位不为0的m位n进制数有几个?显然可以看出来,有(n-1)*n^(m-1)个。再加一 阅读全文
posted @ 2011-10-27 19:42 N_C_Derek 阅读(536) 评论(0) 推荐(0)
摘要: 废话不说,直接进入正题。在这里本题将介绍四种方法。 算法一:在树中,最短路等于最长路,因此我们可以用floyd算法求每两点间的距离,并找出直径。然后枚举直径上的核,模拟得出偏心距。这样的算法时间复杂度是O(n^3)。在这里有一个性质,对于每条直径都有核,而最小偏心距是唯一的,所以我们只要枚举其中一条直径就可以了,证明就略啦。 且对于直径上的一条路径F,它的偏心距是可以在O(1)的时间内求出来的。 ecc:=max{min{dist[st,i],dist[st,j]},min{dist[ed,i],dist[ed,j]}}; 其中st、ed为直径两端,i、j为线段两端。证明如下:我... 阅读全文
posted @ 2011-10-24 20:18 N_C_Derek 阅读(654) 评论(0) 推荐(0)
摘要: 双栈序列题解 这题,官方解题报告(其实我也不知道是不是官方的,据说是出题者写的)已经写的相当清楚了,模型是二分图,就不多说了,直接看程序吧。View Code 1 var i,j,n,m,k,l:longint; 2 top1,top2:longint; 3 s1,s2:array[0..1000]of longint; 4 a,b:array[0..1000]of longint; 5 color:array[0..1000]of longint; 6 p:array[0..1000,0..1000]of boolean; 7 bo:boo... 阅读全文
posted @ 2011-10-21 21:18 N_C_Derek 阅读(241) 评论(0) 推荐(0)
摘要: 靶形数独是一个经典的NP完全问题,没有多项式算法,显然需要搜索,递归回溯会优于枚举。然而此题数据范围大,如果朴素搜索显然肯定TLE,于是我们就需要一些优化。 1.在搜索中,每次我们都需要查找当前格子的可填数字,如果用二进制数集存储的话,可以大大减少运行时间。对于一个格子(x,y),可选数字为x行、y列、所在九宫格的可选数字集合的交集,用二进制存储,利用位运算实现,可过75%的数据。 2.贪心优化。如果是人做数独,必然先考虑可填数小的格子,本题也是如此。如果只是简单地从上往下搜索,会产生很多无用的状态,如果先填可填数小的格子,可以给其它的格子更多的限制,剪去许多不可行的分支。前面填的格子... 阅读全文
posted @ 2011-10-20 19:26 N_C_Derek 阅读(786) 评论(0) 推荐(0)