第一届ACC(AcWing Cup)全国高校联赛初赛:个人版题解

简介: 第一届ACC(AcWing Cup)全国高校联赛初赛:个人版题解

1.数圈圈

十六进制是一种基数为 16 1616 的计数系统,是一种逢 16 16161 11 的进位制。

通常用数字 0123456789 和字母 ABCDEF 表示,其中: A ∼ F A∼FAF 表示 1015,这些称作十六进制数字。

观察这些数字的图案,我们可以发现,有些数字上面包含圈圈,具体来说:

数字 0,4,6,9,A,D 中包含一个圈。

数字8,B 中包含两个圈。

数字1,2,3,5,7,C,E,F 中不含圈。

现在,给定一个十进制整数 n,请你将其转化为十六进制表示,并数一数其十六进制表示中一共含有多少个圈圈。

输入格式

一个整数 n

输出格式

一个整数,表示整数n 的十六进制表示包含的圈圈总数。

数据范围

前三个测试点满足 0≤n≤1000n100,

所有测试点满足 0≤n≤2×10^90n2×109

输入样例1:

11

输出样例1:

2

输入样例2:

14

输出样例2:

0

题解

进制转换,没什么好说的

源代码

#include<iostream>
using namespace std;
int res;
int n;
int main() {
    cin >> n;
    while (n) {
        int t = n % 16;
        n = n / 16;
        if (t == 0 || t == 4 || t == 6 || t == 9 || t == 10 || t == 0xd)
            res++;
        else if (t == 8 || t == 0xb)
            res += 2;
    }
    cout << res;
}

2.农田灌溉


image.png

输入格式

image.png

输出格式

每组数据输出一行答案。

数据范围


image.png

输入样例:

3

5 1

3

3 3

1 2 3

4 1

1

输出样例:

3

1

4

题解


image.png

#include<iostream>
using namespace std;
int n, k;
int x[205];
int main() {
  int T;
  cin >> T;
  while (T--) {
    int res = 1;
    cin >> n >> k;
    for (int i = 1; i <= k; i++)
      cin >> x[i];
    x[0] = 1;
    x[k + 1] = n;
    for (int i = 1; i < k; i++)
      res = max(res, (x[i + 1] - x[i]) / 2 + 1);
    res=max(res,x[1]);
    res=max(res,n-x[k]+1);
    cout << res<<endl;
  }
  return 0;
}

3.选取数对


image.png

输入样例1:

5 2 1

1 2 3 4 5

输出样例1:

9

输入样例2:

7 1 3

2 10 7 18 5 33 0

输出样例2:

61

题解


image.png

源代码

#include<iostream>
#include<cstring>
using namespace std;
int n, m, k;
const int N = 5005;
long long a[N];
long long s[N];
long long f[N][N];//最右右到i,选j个段
int main() {
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++)
    cin >> a[i];
  for (int i = 1; i <= n; i++)
    s[i] = s[i - 1] + a[i];
  memset(f, -0x3f3f3f3f3f3f3f3f, sizeof f);
  f[0][0] = 0;
  for(int i=0;i<=n;i++)
      f[i][0]=0;
  for (int i = m; i <= n; i++) {
    f[i][1] = max(f[i - m + 1][0] + s[i] - s[i - m], f[i - 1][1]);
  }
  for(int i=0;i<=n;i++){
      for(int j=1;j<=k;j++){
          if (i-m>=0)
              f[i][j]=max(f[i-m][j-1]+s[i]-s[i-m],f[i-1][j]);
      }
  }
/*  for(int i=0;i<=n;i++){
      for(int j=0;j<=k;j++)
          if (f[i][j]<0)
              cout<<"-1 ";
          else
              cout<<f[i][j]<<" ";
     cout<<endl;
  }*/
  cout<<f[n][k]<<endl;
}


目录
相关文章
【2022天梯赛】L1-8 静静的推荐
【2022天梯赛】L1-8 静静的推荐
【2022天梯赛】L1-7 机工士姆斯塔迪奥
【2022天梯赛】L1-7 机工士姆斯塔迪奥
|
6月前
|
C++
【PTA】​L1-079 天梯赛的善良​ (C++)
【PTA】​L1-079 天梯赛的善良​ (C++)
102 0
【PTA】​L1-079 天梯赛的善良​ (C++)
|
人工智能
天梯赛-L1-064 估值一亿的AI核心代码 (20 分)--2019全国CCCC天梯赛L1题解
天梯赛-L1-064 估值一亿的AI核心代码 (20 分)--2019全国CCCC天梯赛L1题解
363 0
|
测试技术 C++
【PTA天梯赛】L1-001 L1-002 L1-003 L-004 L-005 L-006 L-007 L-008 L-009 L1-010 c++
【PTA天梯赛】L1-001 L1-002 L1-003 L-004 L-005 L-006 L-007 L-008 L-009 L1-010 c++
214 1
LeetCode 2021 春季赛
LeetCode 2021 春季赛
43 0
|
存储 数据安全/隐私保护
|
机器人
LeetCode第 86 场双周赛
LeetCode第 86 场双周赛
LeetCode第 86 场双周赛