甜甜马里奥赛事总结第一点五天——牛客练习赛56 338/372

开心就好,重在陪跑

分析:本题当时的困扰我的是不知道音节的排序。所以开始的时候努力错了方向,作为我唯一做对的题还是有改进空间的

我采用的方法是把分正负判断然后提取列表中的每个值,将其取余后在列表中查找看是否有相同的

好解法闪光点:

1.自定义读取 以及 int值加速程序

2.在对数组数据读入时就直接处理(一步到位的处理方式是十分值得提倡的,为了防止负数,直接加7再次取余)

3.Register声明的作用

是为了提高效率。 
它明确要求CPU把变量始终保存在寄存器里面,直至它消亡。 
不过现代编译器都很厉害,根本不需要你多此一举。 
所以根本就极少用。

补充: 
        大多数情况下,你声明了也没有用,因为编译器不会照你说得做,而是在系统优化的时候自己决定让哪些作为寄存器变量存在。

#include 
宏定义1
#define RI register int
typedef long long LL;
  
#define FILEIO(name) freopen(name".in", "r", stdin), freopen(name".out", "w", stdout);
  
using namespace std;
  
char buf[1000000], *p1 = buf, *p2 = buf;
inline char gc() {
  if (p1 == p2) p2 = (p1 = buf) + fread(buf, 1, 1000000, stdin);
  return p1 == p2 ? EOF : *(p1++);
}
template <class T> inline void read(T &n) {
  n = 0; RI ch = gc(), f;
  while ((ch < '0' || ch > '9') && ch != '-') ch = gc();
  f = (ch == '-' ? ch = gc(), -1 : 1);
  while (ch >= '0' && ch <= '9') n = n * 10 + (ch ^ 48), ch = gc();
  n *= f;
}
  
int a[1000005];
  
int main() {
    
#ifdef LOCAL
  FILEIO("a");
#endif
  
  int n; read(n);
  for (RI i = 1; i <= n; ++i) {
    read(a[i]);
    int tmp = (a[i] % 7 + 7) % 7;
    if (tmp == 1 || tmp == 2 || tmp == 3 || tmp == 5 || tmp == 6)
      a[i] = 1;
    else a[i] = 0;
  }
  int ans = 0, cnt = 0;
  for (RI i = 1; i <= n; ++i) {
    if (a[i]) ++cnt;
    else cnt = 0;
    ans = max(ans, cnt);
  }
  printf("%d\n", ans);
    
  
  return 0;
}

 

1.链接:https://ac.nowcoder.com/acm/contest/3566/A
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

小蒟上音乐课的时候,老师说宫商角征羽(分别对应C大调的do,re,mi,sol,la)五个音是乐音,它们和它们升降任意个八度的得到音是好听的音(即高音do、低音mi等也是好听的音),用好听的音谱的曲会很好听。

小蒟觉得他的老师说得对,于是他打开了一本乐谱,随便找了一首曲子,他想知道这首曲子的好听程度。

小蒟太蒻了,善良的你不得不帮助他。

注:

一首曲子是一个整数序列,数字表示音高,1~7分别代表C大调的do,re,mi,fa,sol,la,si,8代表高音do(即1˙\dot{1}1˙),0代表低音si,15代表1˙˙\dot{ \dot{1} }1˙˙,-123表示很低很低的mi,以此类推。

曲子的好听程度定义为曲子中最长的全部由好听的音组成的子串的长度。
对于100%的数据,1≤ n ≤ 1,000,000,-10 9≤ A_i ≤ 10 9

输入描述:

第一行一个正整数,表示这首曲子的音符数量。

第二行n个整数,表示每个音符的音高。

输出描述:

一行一个整数,即曲子的好听程度。
示例1

输入

复制
14
1 2 3 4 5 6 7 8 9 10 11 12 13 14

输出

复制
3
链接:https://ac.nowcoder.com/acm/contest/3566/B
来源:牛客网

小琛和他的学校
链接: https://ac.nowcoder.com/acm/contest/3566/B
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

小琛是一所学校的校长。 
他的学校有n个校区(编号1~n),被n-1条双向道路连接,呈树形结构。
第i个校区共有A i个学生。
第i天早上,所有的学生会沿最短路走到第i个校区参加活动,晚上再原路返回。
一个人通过第j条通道一次(即一人次),需要小琛支付w j的维护费用。
小琛想知道第n天结束之后,对于每一条通道,他总共需要支付多少费用。
对于100%的数据,1≤ n ≤ 200,000,1≤ A[i]≤ 10,000,1≤ w[i] ≤ 10,000。

输入描述:

第一行一个整数n,表示校区的数量。
接下来一行,n个整数,表示A1~An。
第3到第n+1行,每行包含3个整数。第i行包含三个整数ui-2,vi-2,wi-2,表示第i-2条通道所连接的两个校区的编号,以及一人次通过这条通道的费用。

输出描述:

共n-1行,每行一个整数。
第i行的整数表示小琛对于第i条通道所需支付的费用。
示例1

输入

复制
4
2 1 2 3
1 3 1
1 2 3
4 1 2

输出

复制
24
60
56

你可能感兴趣的:(甜甜马里奥赛事总结第一点五天——牛客练习赛56 338/372)