【好题】好题分享

简介: 好题分享

题目描述


四舍五入是个好东西。比如你只考了45分,四舍五入后你是50分再四舍五入你就是满分啦!qdgg刚考完拓扑。成绩十分不理想。但老师觉得他每天都很认真的听课很不容易。于是决定给他一个提高成绩的机会:让他的成绩可以在小数点后的任意位置四舍五入(也可以四舍五入为最接近的整数)。

但是这是有限制的。qdgg只能四舍五入t次。请帮助qdgg找到他在不超过t次四舍五入可获得的最高成绩。请注意,他可以选择不使用全部t次机会。此外,他甚至可以选择完全不对成绩进行四舍五入。

在这个问题中,使用经典的舍入规则:将数字四舍五入到第n个数字时,必须先看一下数字n + 1,如果小于5,则第n个数字将保持不变,而所有后续数字替换为0。否则,如果n + 1位数大于或等于5,则位置n处的位数将增加1(如果此位数等于9,这也可能会更改其他一些位数),并且随后的所有位数数字将替换为0。最后,所有尾随的零将被丢弃。

例如,如果将数字1.14舍入到小数点后第一位,则结果为1.1,而如果将1.5舍入到最接近的整数,则结果为2。四舍五入到小数点后第五位的数字1.299996121将得出数字1.3。


输入描述:

输入的第一行包含两个整数n和t表示小数(含小数点)的长度以及四舍五入的次数。


第二行为一个字符串表示qdgg的初始分数。

输出描述:

一行表示qdgg能得到的最高分数(请勿输出尾零)


7.1.png

7.1.png

1012-方块与收纳盒_牛客竞赛语法入门班数组模拟、枚举、贪心习题 (nowcoder.com)


现在有一个大小n*1的收纳盒,我们手里有无数个大小为1*1和2*1的小方块,我们需要用这些方块填满收纳盒,请问我们有多少种不同的方法填满这个收纳盒


输入描述:

第一行是样例数T

第2到2+T-1行每行有一个整数n(n<=80),描述每个样例中的n。

输出描述:

对于每个样例输出对应的方法数

#include <iostream>
using namespace std;
long long a[90];
int main()
{
    a[0] = 1;
    a[1] = 1;
    int n;
    cin >> n;
    for(int i = 2;i <= 80;i ++)
    {
        a[i] = a[i-1] + a[i-2];
    }
    while(n --)
    {
        int x;
        cin >> x;
        cout << a[x] << endl;
    }
}

时间(time) (nowcoder.com)


题目描述

        Apojacsleam是一个喜欢特殊时刻的人。


       他定义了一个时刻,若电子表显示ab:ba(24小时制),则该时刻为“回文时刻”(可以有前导零)。例如00:00就是回文时刻。


       给定一个时刻,求此时刻的上一个和下一个回文时刻。


J题附加:00:00就是24:00,没有24:00这一时刻


J题附加:输入可能有前导0,输出不含前导0,例如10:1的意思是10:01,而10:10的输出为10:10


输入描述:

两个正整数,用“:”隔开,表示小时和分钟,保证输入时间合法。

输出描述:

两行,两个时刻(不含前导0),用“:”隔开,表示上一个时刻和下一个时刻

#include <cstdio>
using namespace std;
int main() {
    int a, b, A, B;
    scanf("%d:%d", &a, &b);
    A = a, B = b;
    while (true) {
        b--;       //找之前的时间
        if (b < 0) //回到上个小时
            a--;
        b = (b + 60) % 60; //防止负数
        a = (a + 24) % 24;
        if (a % 10 == b / 10 && b % 10 == a / 10) {//回文
            printf("%d:%d\n", a, b);
            break;
        }
    }
    while (true) {
        B++;         //找之后的时间
        if (B == 60) //去到下个小时
            A++;
        B = (B + 60) % 60;
        A = (A + 24) % 24;
        if (A % 10 == B / 10 && B % 10 == A / 10) {
            printf("%d:%d\n", A, B);
            break;
        }
    }
    return 0;
}

「水」滔天巨浪 (nowcoder.com)


这个题没有要求输出前导0,如果要输出前导0,可以用%02d(宽度为2,左端补0)


题目描述

帕秋莉掌握了一种水属性魔法


在此之前,她已经忍了雾之湖上的妖精们很久了


现在,她决定反击!


雾之湖上有n只妖精排成一列,每只妖精的飞行高度严格单调递增,且高度1≤x≤1000


帕秋莉能清除掉列里面一个连续子区间的妖精,当且仅当它们被清理之后,帕秋莉仍然能还原出这个子区间的所有妖精的飞行高度


如,若妖精们飞行高度为1,3,4,5,6,8,那么可以清理飞行高度为4,5的两只妖精,因为清理之后,这两个空位之间的数据是唯一确定的


帕秋莉一次最多选择清除一个连续子区间,请问帕秋莉一次最多能清除多少妖精呢?


输入描述:

第一行一个整数n,表示有n只妖精下一行n个数ai,表示每只妖精飞行高度

输出描述:

输出一行,一个整数表示答案

#include<iostream>
using namespace std;
const int N=1010;
int a[N];
int main()
{
    int n,max1=0,b=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    a[n+1]=1001;
    for(int i=1;i<=n;i++)
    {
        int j=0;
        while(a[i]+1==a[i+1]&&a[i]-a[i-1]==1)//双指针算法  
        {                                    //这里要用while 而不是if
            j++;
            i++;
        }
        max1=max(max1,j);//取最大值
    }
    printf("%d",max1);
    return 0;
}

Problem - 1777A - Codeforces

cf的题就是妙,有的不能按它的字面意思来写

7.2.png

如果这样写,会爆掉

因为a[i+1]*=a[i]不合适

#include<iostream>
using namespace std;
const long long N=100010;
long long a[N];
int main()
{
  long long t;
  cin>>t;
  while(t--){
    long long n,num=0;
    cin>>n;
    for(long long i=0;i<n;i++)
    {
      cin>>a[i];
    }
    for(long long i=0;i<n-1;i++)
    {
      if(a[i]%2==0&&a[i+1]%2==0||a[i]%2==1&&a[i+1]%2==1)
      {
        num++;
        a[i+1]*=a[i];
      }
    }
    cout<<num<<endl;
  }
}

image.png

正确解法

#include<iostream>
using namespace std;
const long long N=100010;
long long a[N];
int main()
{
  long long t;
  cin>>t;
  while(t--){
    long long n,num=0;
    cin>>n;
    for(long long i=0;i<n;i++)
    {
      cin>>a[i];
    }
    for(long long i=0;i<n-1;i++)
    {
      if(a[i]%2==0&&a[i+1]%2==0||a[i]%2==1&&a[i+1]%2==1)
      {
        num++;
        //a[i+1]*=a[i];
      }
    }
    cout<<num<<endl;
  }
}

Code over!

相关文章
|
6月前
|
C语言
快速幂+高精乘(填坑)洛谷1226+1045
快速幂+高精乘(填坑)洛谷1226+1045
|
27天前
lanqiao oj 17136 星球(状态压缩dp)
lanqiao oj 17136 星球(状态压缩dp)
8 0
|
6月前
每日一题(珠玑妙算,两数之和)
每日一题(珠玑妙算,两数之和)
53 1
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
78 0
|
算法 Android开发 容器
LeetCode 周赛上分之旅 #35 两题坐牢,菜鸡现出原形
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
91 0
|
存储
剑指Offer - 面试题14:剪绳子
剑指Offer - 面试题14:剪绳子
82 0
三道好题分享
上课睡觉 - AcWing题库
84 0
|
人工智能
好题分享
好题分享
82 0
|
算法 JavaScript 前端开发
日拱算法:解两道“杨辉三角”题
什么是“杨辉三角”,想必大家并不陌生~~ 在「杨辉三角」中,每个数是它左上方和右上方的数的和。