并(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