博客
关于我
2020牛客NOIP赛前集训营-普及组(第四、五场)
阅读量:360 次
发布时间:2019-03-04

本文共 2280 字,大约阅读时间需要 7 分钟。

Powered by:AB_IN 局外人

第四场

模拟即可。

P y t h o n 3 Python3 Python3

a,b=map(int , input().split(":"))b += 30if b >= 60:    a += 1    b -= 60a = (a + 3) % 24if a < 10:    a1 = "0" + str(a)else:    a1 = str(a)if b < 10:    b1 = "0" + str(b)else:    b1 = str(b)print(a1+":"+b1)

C + + C++ C++
记一下 % 02 d \%02d %02d,默认情况下,数据数据宽度不够2位是用空格填补的,但是因为2d前面有0,表示,数据宽度不足时用0填补。

#include <bits/stdc++.h>using namespace std;int main(){       int a, b;    scanf("%d:%d", &a, &b);    b += 30;    if(b >= 60){           a += 1;        b -= 60;    }    a = (a + 3) % 24;    printf("%02d:%02d\n", a, b);    return 0;}

抱着混分的心态写的代码,但经过几次模拟之后发现, A l i c e Alice Alice是很难获胜的,因为至少取一个,还得是偶数。集中情况试了试,发现只有当石子是一堆,且石子数量为偶数的时候, A l i c e Alice Alice为必胜。

while True:    try:        n = int(input())        lst = list(map(int , input().split()))        if n == 1:            if lst[0]&1:                print("NO")            else:                print("YES")        elif lst.count(1) == n:            print("NO")        else:            print("NO")    except:        break

第五场

在这里插入图片描述
我确实只适合做水题。

列出公式即可,既除了赠送的,其他都是要用 x x x买的。所以算一下赠送的,就是 n / / ( k + 1 ) n // (k + 1) n//(k+1),即参与这个买 k k k赠一活动的次数。

for _ in range(int(input())):    n,k,x = map(int , input().split())    print( (n - n // (k + 1)) * x)

两种情况取最大值

  • 第一种就是原字符串中 1 1 1的最长的长度,用 p y py py s p l i t split split分开即可。
  • 第二种就是要用题目中的条件,把一段前面的 [ 1 , x ] [1,x] [1,x]接到最后,即让 1 1 1 n n n接上。所以,如果通过这个条件想要创造出一个更长的 1 1 1串,那么就得 1 1 1 n n n两个地方都得为 1 1 1,再利用刚才 s p l i t ( " 0 " ) split("0") split("0")分出来的段,取第一段和最后一段的长度加和即可。
s = input()lst = s.split("0")ans = len (max( lst , key = lambda x : len(x)) )if s[0]=='0' or s[-1]=='0' or len(lst) == 1:    print(ans)else:    print( max( len(lst[0]) + len(lst[-1]) , ans ))

随机选两个相邻的数,一个加1,一个减1,最后要所有数都一样,那么就都是平均数。所以一开始想判断是否每个数都能变成相同。如果可以,就从尾到头遍历,和平均值比较,大了就减,然后前一个加。

for _ in range(int(input())):    n = int(input())    lst = list(map(int , input().split()))    if sum(lst) % len(lst) != 0 :        print(-1)    else:        ans=0        ave = sum(lst) // len(lst)        for i in range(n-1 , -1 , -1):            if lst[i] != ave:                ans += abs (lst[i] - ave)                if lst[i] > ave:                    lst[i-1] += abs (lst[i] - ave)                else:                    lst[i-1] -= abs (lst[i] - ave)        print(ans)

完结。

转载地址:http://nzfg.baihongyu.com/

你可能感兴趣的文章
STM32boot启动
查看>>
回调函数(callback function)
查看>>
omnet++
查看>>
23种设计模式一:单例模式
查看>>
Qt中的析构函数
查看>>
CSharp中委托(一)委托、匿名函数、lambda表达式、多播委托、窗体传值、泛型委托
查看>>
二叉堆的c++模板类实现
查看>>
C语言实现dijkstra(adjacence matrix)
查看>>
SQL Server SQL语句调优技巧
查看>>
用C#实现封装-徐新帅-专题视频课程
查看>>
C语言学习从初级到精通的疯狂实战教程-徐新帅-专题视频课程
查看>>
三层框架+sql server数据库 实战教学-徐新帅-专题视频课程
查看>>
NAT工作原理
查看>>
Processes, threads and goroutines
查看>>
c++中的10种常见继承
查看>>
E28 LoRa模块透传 定点传输 RSSI测试与MicroPython应用
查看>>
Vue学习—深入剖析渲染函数
查看>>
Vue学习—深入剖析函数式组件
查看>>
简单Makefile的编写
查看>>
使用BAT批处理 匹配查找指定文件夹,并在当文件夹下创建空文件
查看>>