摘要: lyp的密码(lyp)【题目描述】众所周知,lyp喜欢以用各种方式折磨别人为乐,这次,他趁wars不在时在他的电脑上挂了一把神奇的锁,这把锁需要一串巨长无比的数字密码才可以解开,这个密码由lyp自己保管,这样wars就没法Kingdom Rush了。但wars设法从lyp的脑袋中挖出了有关密码的信息,这些信息是一列非负整数{An}。而解开密码锁的方式是首先输入这列这数的逆序对数,而后依次会在wars的电脑屏幕上显示两个数字p,q,你则需要输入将整数列中第p个整数替换成q后整个数列的逆序对数,这样的询问会有m个。当然,这样的替换只对这一次的询问有效。现在wars急着去打Kingdom Rush, 阅读全文
posted @ 2012-11-06 22:16 villefort 阅读(362) 评论(0) 推荐(0)
摘要: 题目首先是xqz的这道排列,记得去年一考排列我就balabala了。。。其实这道只是披着排列的外衣。我们可以发现,如果把一个数插到前面,我们肯定可以保证它被放到应该放的位置。那么我们最多移动n-1次,这是最坏情况,可以发现造成这种情况的原因是a的顺序和b的顺序是反的,于是我们可以把问题转化。视目标序列为一个递增的序列,将下标作为该元素的值,然后在当前序列中将元素赋值为数字对应的下标。现在问题就变成了在当前序列中找到从第一个元素开始的最长的一个在原序列中是升序的连续的子序列,假设它的长度为k,那么答案即为n-k。View Code 1 program Neayo; 2 const 3 ... 阅读全文
posted @ 2012-11-06 22:06 villefort 阅读(214) 评论(0) 推荐(0)
摘要: 题目(第四题第五题)题目有两个操作,x/2和x-1,很容易就想到和二进制有关,但具体关系是什么呢。可以考虑x/2和x-1都是左移的操作,于是就可以发现X开头的有趣数列中的数都是x的二进制前缀。例如 111 110 11 10 1 0那么判断[a,b]中的有趣数列是不是含有k,只需要把k当做前缀然后取和区间[a,b]相交的部分就可以了。这个程序写得好丑= =。View Code 1 program Neayo; 2 const 3 inf='sequence.in'; 4 ouf='sequence.out'; 5 var 6 i,j,t:lon... 阅读全文
posted @ 2012-11-06 17:10 villefort 阅读(185) 评论(0) 推荐(0)
摘要: 题目首先是一个数据范围为2000的,这个可以用平方算法做。要使它成为一个非降序列的合并次数最小,我们可以贪心地想到要使合并后的值尽量小,不然就会导致后面需要的合并次数增多。我们用c[i]记录前缀和,f[i]表示以i结尾的这一段序列的最后一个元素的值,g[i]表示到i为止的合并次数,那么就可以得到一个转移方程。f[i]=c[i]-c[j](f[j]<=c[i]-c[j])g[i]=g[j]+i-j-1;因为c[i]-c[j]在downto的过程中是单调递增的,所以只要找到一个可以转移的就可以break了。View Code program Neayo;const inf='sequ 阅读全文
posted @ 2012-11-06 16:11 villefort 阅读(233) 评论(0) 推荐(0)
摘要: 并(sequence)3.1 题目描述给定一个序列,你每次可以合并相邻两个元素,新的元素为这两个元素的和。你需要使得若干次合并之后的序列非降,求最小合并次数。3.2 输入格式第一行一个数 n,表示序列长度。接下来一行 n个正整数,表示这个序列。3.3 输出格式一行一个数,表示最小合并次数。3.4 输入样例58 2 7 3 13.5 输出样例33.6 数据范围对于 30%的数据:n ≤ 100对于 100%的数据:n ≤ 1500 ,序列元素大小不超过 1000 。CCL的消遣(CCL)[题目描述] AS we know,CCL是一个很无聊很无聊很无聊的人.有一天,CCL注意到地面上有很多棍子, 阅读全文
posted @ 2012-11-06 15:44 villefort 阅读(564) 评论(0) 推荐(0)
摘要: 2.1 题目描述路上挂着一些灯,第 i 个灯坐标为(xi, yi) 。每个灯的照射范围为一个三角形,半张角为 zi 。你有一架飞机,但是只能飞固定高度。由于未知原因(目测秋锅农气过重),飞机只能在光下飞行。你的任务是找一个最大的高度来从 L 飞到R 。如图,红线所示高度是一个合法高度,但是不是最高的。2.2 输入格式第一行三个数 n,L,R ,其中n 是整数,表示灯的个数。接下来 n行,每行 3 个实数x, y, z ,描述一个灯。2.3 输出格式一行一个数,表示最大高度。至少保留 6 位小数。你的答案正确,当且仅当与标准输出相对误差或绝对误差不超过 10− 。2.4 样例输入2 3.2 7. 阅读全文
posted @ 2012-11-06 15:20 villefort 阅读(183) 评论(0) 推荐(0)
摘要: 1.1 题目描述春宵和秋锅比赛现农。春宵说:我的农气值有:这么大,你是不可能比我大的。秋锅笑而不语。他在后面加了一个: (mod M) 。然后,他问春宵:你的农气值现在是多少呢?(好冷的题目。。)1.2 输入格式一行 3 个数,依次为M,K,N 。1.3 输出格式一行 1 个数,表示春宵的农气值。1.4 样例输入98 3 41.5 样例输出21.6 数据范围对于 20%的数据:N,M,K ≤ 10^3对于 40%的数据:N,M ≤ 10^3,K ≤ 10^18对于 80%的数据:M ≤ 10^5,N,K ≤ 10^18对于 100%的数据:0 < M ≤ 3 × 10^6,N, 阅读全文
posted @ 2012-11-04 21:58 villefort 阅读(464) 评论(0) 推荐(0)
摘要: 2.1 题目描述给定一个无自环重边的无向图,求这个图的三元环1的个数以及补图2的三元环个数。2.2 输入格式第一行 2 个数n,m ,分别表示图的点数、边数。接下来 m行,每行两个数 u, v ,表示一条连接u, v 的无向边。2.3 输出格式一行两个数,依次表示原图的三元环个数以及补图的三元环的个数。2.4 样例输入5 51 21 32 32 43 42.5 样例输出2 12.6 数据范围对于 30%的数据:n ≤ 100对于 60%的数据:m ≤ 500对于 100%的数据:n ≤ 105,m ≤ 1052.7 评分方式如果你两个数均输出正确,得 10分。否则如果两个数中任意一个正确或者两 阅读全文
posted @ 2012-11-04 21:29 villefort 阅读(911) 评论(0) 推荐(0)
摘要: 1.1 题目描述有一排硬币堆,两个人轮流取硬币。每个选手随机取最左边或者最右边的一堆硬币。求先手期望取得的硬币数。1.2 输入格式本题有多组测试数据。第一行一个数 T ,表示数据组数。对于每组测试数据,第一行一个正整数 n,表示有多少堆硬币。第二行 n个非负整数,依次表示每一堆硬币的个数。1.3 输出格式对于每组测试数据,输出一行一个数,表示先手期望取得的硬币数。保留 3 位小数。1.4 样例输入231 4 945 5 5 51.5 样例输出9.50010.0001.6 样例解释对于第一个测试数据:先手第一次取 后手第一次取 先手第二次取 先手取得的石子数 出现的概率1 4 9 10 0.25 阅读全文
posted @ 2012-10-21 22:47 villefort 阅读(400) 评论(0) 推荐(0)
摘要: program Neayo;const inf='light.in'; ouf='light.out';var i,j,k,m,n:longint; exp,sr,sl,l,r:extended; x,y,tan:array[0..100001]of extended;procedure qsort(r,l:longint);var tmp,xx:extended; i,j:longint;begin i:=l;j:=r; xx:=x[l+random(r-l+1)]; repeat ... 阅读全文
posted @ 2012-10-15 19:58 villefort 阅读(198) 评论(0) 推荐(0)