LightOJ - 1241 Pinocchio

Pinocchio

Time Limit: 500MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu

Submit Status

Description

You must have heard the name of Pinocchio. If you never heard of him, don‘t panic, I am here to help you. But why I am introducing you to Pinocchio? Cause there is an interesting (and also quite strange) fact about him.

Pinocchio is a boy who lives in a certain village. He is a little boy, who is prone to telling lies, fabricating stories and exaggerating or creating tall tales for various reasons. But the strange fact is, when he does this, his nose gets longer. But when he tells the truth his nose gets back to normal size which is 2 cm.

Usually, when he wakes up in the morning his nose gets back to normal size. When he tells a lie, his nose grows at least 1 cm and at most 5 cm.

Pinocchio                   Pinocchio after some lies

There is a common paradox related to him. What if he says, "My nose grows now." You may wonder why the simple looking statement leads to a paradox. The result of this deadly statement is noted below:

Assume that this sentence is true

1.      Which means that Pinocchio‘s nose grows now because he truthfully says it is, but then

2.      Pinocchio‘s nose does not grow now because it grows only as Pinocchio lies, but then

3.      Pinocchio‘s nose grows now because Pinocchio‘s nose does not grow now, and Pinocchio trustfully says it grows now, and it is false, that makes Pinocchio‘s sentence to be false, but then

4.      Pinocchio‘s nose does not grow now because Pinocchio‘s nose grows now, and Pinocchio trustfully says it grows now, and it is true that makes Pinocchio‘s sentence to be true, but then

5.      And so on ad infinitum.

Now assume that the sentence is false

1.      Which means that Pinocchio‘s nose does not grow now because he falsely says it is, but then

2.      Pinocchio‘s nose grows now because it grows only as Pinocchio lies, but then

3.      Pinocchio‘s nose does not grow now because Pinocchio‘s nose grows now, and Pinocchio falsely says it grows now, and it is false that makes Pinocchio‘s sentence to be true, but then

4.      Pinocchio‘s nose grows now because Pinocchio‘s nose does not grow now, and Pinocchio falsely says it grows now, and it is true, that makes Pinocchio‘s sentence to be false, but then

5.      And so on ad infinitum.

Now you are given some sizes of his nose in a day. Assume that he hasn‘t told any truth in that day and the sizes are reported in increasing order of time. You have to find the minimum number of lies he has told in that day such that the report of the sizes is true.

Input

Input starts with an integer T (≤ 100), denoting the number of test cases.

Each case starts with a line containing an integer n (1 ≤ n ≤ 10), where n denotes the total number of reports of his nose in a certain day. The next line contains n space separated integers denoting the sizes of his nose in that day. If the integers in that line is a1, a2 ... an, you can assume that

(2 ≤ a1 ≤ a2 ≤ ... ≤ an ≤ 50)

Output

For each case, print the case number and the minimum number of lies Pinocchio has told in that day. See the samples for the output format.

Sample Input

2

5

2 3 3 3 4

4

2 3 4 5

Sample Output

Case 1: 2

Case 2: 3

Source

Problem Setter: Jane Alam Jan

Submit Status

这个人说谎鼻子会长长 1 --> 5cm, 给出一天中某时刻(严格升序)鼻子长度, 输出最少说几次谎;

#include <cmath>
#include <cstdio>
int main()
{
    int t, Q=1; scanf("%d", &t);
    double a[100];
    while(t--)
    {
        int n; scanf("%d", &n);
        for(int i=0; i< n; i++)
            scanf("%lf", &a[i]);
        int cnt= 0;
        for(int i=1; i<n; i++)
        {
            if(a[i]!= a[i-1])
                cnt= cnt+ ceil((a[i]-a[i-1])/5);
        }
        if(a[0]> 2)
        {
            cnt= cnt+ceil((a[0]-2)/5);
        }
        printf("Case %d: %d\n", Q++, cnt);
    }
    return 0;
}
时间: 2024-09-30 20:55:37

LightOJ - 1241 Pinocchio的相关文章

lightoj Beginners Problems

很多以前写的丑代码 1000 - Greetings from LightOJ #include<math.h> #include<stdio.h> #include<stdlib.h> #include<string.h> int main(void) { int a,b,n,Case; scanf("%d",&n); Case=0; while(Case++,n--) { scanf("%d%d",&

LightOJ Beginners Problems 部分题解

相关代码请戳 https://coding.net/u/tiny656/p/LightOJ/git 1006 Hex-a-bonacci. 用数组模拟记录结果,注意取模 1008 Fibsieve's Fantabulous Birthday. 找规律题,左边列是1 3平方 5平方......下边行是1 2平方 4平方......,找到当前数被包夹的位置,然后处理一下位置关系,注意奇偶. 1010 Kinghts in Chessboard. 规律题,对于m,n大于2的情况下,使用交叉放置的方法

light oj Beginners Problems

很多以前写的丑代码 1000 - Greetings from LightOJ #include<math.h> #include<stdio.h> #include<stdlib.h> #include<string.h> int main(void) { int a,b,n,Case; scanf("%d",&n); Case=0; while(Case++,n--) { scanf("%d%d",&

LightOJ 1030 Discovering Gold【概率】

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1030 题意:基础概率题. 代码: #include <stdio.h> #include <string.h> #include <vector> #include <string> #include <algorithm> #include <iostream> #include <iterator>

LightOJ - 1370 Bi-shoe and Phi-shoe

题目链接:http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1370 题目大意:给N个数a[i], N <= 1e6,问使 Φ(x) >= a[i] 成立的最小x的所有x的和是多少. 解题思路:我们知道的是对于素数 m 来说,phi[m] = m - 1.另一方面,对于一个合数 m 来说, phi[m] < phi[x] , x > m && x 是素数. 因此,我们可以认为,每

lightoj 1057 - Collecting Gold(状压dp)

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1057 题解:看似有点下记忆话搜索但是由于他是能走8个方向的也就是说两点的距离其实就是最大的x轴或y轴的差.然后只有15个藏金点状压一下加dfs就行了. #include <iostream> #include <cstring> #include <cstdio> #include <cmath> #define inf 0X3f3f3f

HDU 1241 Oil Deposits(石油储藏)

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 10.5000pt } h1 { margin-top: 5.0000pt; margin-bottom: 5.0000pt; text-align: center; font-family: 宋体; color: rgb(26,92,200); font-weight: bold; fo

Lightoj 1088 - Points in Segments 【二分】

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1088 题意: 有一维的n个点和q条线段.询问每条线段上的点有多少个: 思路:寻找这些点中对于每条线段的上下界即可. 代码: #include <stdio.h> #include <ctime> #include <math.h> #include <limits.h> #include <complex> #include

Lightoj 1090 - Trailing Zeroes (II)

题目连接: http://www.lightoj.com/volume_showproblem.php?problem=1090 题目大意: 给出n,r,p,q四个数字1<=n,r,p,q<=1000000,求出的末尾有几个0? 解题思路: 是不是一下子懵了,数字好大,复杂度好高,精度怎么办···············,就问你怕不怕? 因为你是Acmer,这都不应该是问题.因为10的因子只有2和5,所以可以打表保存从1到当前数字相乘的积中分别含有2,5的个数.然后算出中分别含有2,5的个数,