all about sequence

并(sequence)
3.1 题目描述
给定一个序列,你每次可以合并相邻两个元素,新的元素为这两个元素的和。你需要使得若干
次合并之后的序列非降,求最小合并次数。
3.2 输入格式
第一行一个数 n,表示序列长度。
接下来一行 n个正整数,表示这个序列。
3.3 输出格式
一行一个数,表示最小合并次数。

3.4 输入样例

5

8 2 7 3 1

3.5 输出样例
3
3.6 数据范围
对于 30%的数据:n ≤ 100
对于 100%的数据:n ≤ 1500 ,序列元素大小不超过 1000 。

 

CCL的消遣(CCL)

[题目描述]

         AS we know,CCL是一个很无聊很无聊很无聊的人.有一天,CCL注意到地面上有很多棍子,于是,CCL决定用这些棍子来消磨时间(这是要有多无聊啊).

         CCL先将这些棍子排成一排.每根棍子有一个长度.CCL一次可以将2个相邻的棍子合并成一根更长的棍子,合并出的棍子的长度为原来2根棍子的长度之和(具体的过程请参考样例).CCL想用最少的合并次数来将这些棍子变成一个长度不降的序列.

[输入格式]

         输入文件的第一行有一个正整数n,表示棍子的数目.

         接下来一行n个正整数,依次表示每根木棍的长度.

[输出格式]

         输出文件一行仅一个数,表示最少的合并次数.

[样例输入]

         5

         8 2 7 3 1

[样例输出]

         3

[样例解释]

         最优方案是将后4根木棍合并,形成一个长度为13的棍子,共需要3次合并操作.

         合并后的序列为:8,13.

[数据范围]

         10%的数据,N<=1500

         20%的数据,N<=5000

         50%的数据,N<=200000

         100%的数据,N<=1000000,每根棍子的长度<=maxlongint

 

奇怪的数列(strange)
[题目描述]
春 春 碰到了 一个奇怪的数列 , 我 们 不 妨 设 他 为 a. 对 每 一 个 i>10, 都会有
ai=b1*a(i-10)+b2*(ai-9)……+b10*a(i-1).其中 b是一个给定的序列.
现在我们知道了 b 序列和 a 序列的前 10 个数,春春想要知道 a 的前若干个数的和 mod
1,000,000,007 的值.而无辜的你则被迫接受了这个任务.
[输入格式]
输入第一行有10个数,分别表示a1~a10的值.第二行有10个正整数,分别表示b1~b10的
值.接下来有若干行,每行有一个正整数 i,表示一个询问.当你的程序读到最后一个正整数时,
视作输入结束.
[输出格式]
对每个询问输出一行,表示你的程序给出的答案.
[样例输入]
1 1 2 3 5 8 13 21 34 55
0 0 0 0 0 0 0 0 1 1
1
5
14
[样例输出]
1
12
986
[数据范围]
30%的数据,i<=20
50%的数据,i<=30
100%的数据,i<=100000,且询问组数在100000 以内
[提示]
所有输入都在32 位整型范围内.
保证所有的输入数据均符合题目要求.
但不保证没有冗余数据

 

 

有趣的数列(sequence.pas/c/cpp)

【问题描述】

对于非负整数 , 的有趣数列是按照如下定义的无穷整数数列:

(1)   这个数列的第一项为x;

(2)   若数列的第n项为y ,且y为偶数,则数列的第n+1项为y/2 ;

(3)   若数列的第n项为y,且y为奇数,则数列的第n+1项为y-1 。

例如60的有趣数列为:60, 30, 15, 14, 7, 6, 3, 2, 1, 0, 0 ……

给出非负整数K,A,B,(A<=B)求在区间[A,B]内有多少个非负整数x满足x的有趣数列包含K。

你的任务是编写一个程序,回答T组这样的询问。

 

【输入】

输入文件名为sequence.in,共T+1行。

第一行包含一个正整数T(T<=200) 。

下面T行,每行包含三个非负整数K,A,B 。

 

【输出】

输出文件名为sequence.out,共T行,每行包含一个非负整数,第i行的整数表示输入中第i+1行询问的答案。

 

【输入输出样例】

sequence.in

sequence.out

2

3 4 8

13 12345 67890123

2

8387584

 

【数据说明】

对于 50%的数据满足K,A,B<=10,000;

对于 100%的数据满足K,A,B<=1018

 

Sequence (1s 256MB)

给出一个长度为N的正整数数列{An}。

你有两种变换操作:

         1.把数列中的某个数乘2。

         2.把数列中的所有数减1。

现在你需要通过最少的变换操作把这个数列中的数全部变成0。

输入:

    第一行一个N。下面N行,每行一个正整数Ai描述这个数列。

输出:

     输出一行一个正整数,表示最少的变换次数。

 SAMPLE

INPUT1

2

1

2

OUTPUT1:

3

INPUT2:

2

2

1025

OUTPUT2:

1035

 样例说明:

INPUT1:先把1变成2,再执行两次-1变换即可。

数据范围:

30%的数据满足 n<=1000; ai<=1000;

100%的数据满足 1<=n=200000 1<=ai<=10^9

 

 

 

Permutations

【问题描述】

给定两个1~n的排列A, B。每次可以把A的最后一个数取出,插入到A的任何一个位置(最前面或者任何两个数中间)。

问最少几次可以把A转化为B。

【输入格式】

第一行为一个整数,n。

第二行为1~n的一个排列,表示A。

第三行为1~n的一个排列,表示B。

【输出格式】

一个整数即最少操作次数。

【样例输入】

5

1 5 2 3 4

1 2 3 4 5

【样例输出】

3

【数据说明】

       30%:n <= 100

       50%:n <= 1000

       100%: n <= 200000

 

倒溶液(pour

【问题描述】

 在cj生物实验室的中央,摆放着一个长长的只有一排的试管架,上面顺次摆满了n支试管。因为高一的小朋友最近正在学习还原性糖的鉴定,所以老师已经在其中的若干个试管中盛放了实验试剂。实验试剂分为NaOH溶液和CuSO4溶液两种。

由于高一小朋友近来实验兴趣高涨,赶来做实验的小朋友络绎不绝。实验室老师忙得不可开交,于是整理试管架的任务就交给了倒霉的被抓来的小秋秋。
为了方便小朋友们操作,老师要求任意两个盛放同种溶液的试管中间,不能有盛放另一种溶液的试管。

由于小秋秋的一只手在『此处内容由于过分XX被和谐』,所以他仅能用剩下的一只手进行一种简单操作,那就是,把任意一个非空试管里的液体全部倒到另外一个空的试管里。

小秋秋着急去干别的事,所以他希望用最少的操作完成老师交给的任务。

注意:由于cj拥有世界上最先进的实验设备,所以任何试管壁不会产生任何残留溶液。

 【输入文件】

 输入数据包含两行

第一行包含一个整数n,代表一共有多少支试管

第二行包含n个整数,用空格分开,其中1代表NaOH,2代表CuSO4,0代表这是一个空试管

 

【输出文件】

 输出数据仅包含一个整数,表示最少需要的倾倒次数。

 【样例输入】

 6

2 1 2 1 2 0

 【样例输出】

 2

 【数据约定】

 40%:N <=40

70%:N <=1000

100%:N <=1000000

 

posted @ 2012-11-06 15:44  neayo  阅读(545)  评论(0编辑  收藏  举报