一道完全不会的题和一道做出来40分的题
  • 板块题目总版
  • 楼主zhege122
  • 当前回复23
  • 已保存回复25
  • 发布时间2024/12/14 10:37
  • 上次更新2024/12/14 13:05:06
查看原帖
一道完全不会的题和一道做出来40分的题
1123449
zhege122楼主2024/12/14 10:37

Problem 1

题目描述

DODO作为班级的体育委员,在每一次上体育课前,要把队伍整好。除了他之外的NN位同学有固定的编号1...N1...N,但是每一次上课前学生们总是随意站队,这个时候就需要DODO来进行整队。

整队要求:由于同学们都很调皮,DODO任何时刻都只能对面向自己的同学发送指令。每一次他可以让这位同学沿着队伍向后移动kk个位置,kk可以是11~N1N-1中的任意数字。他经过的kk位同学会向前移动,腾出空间使得他能够插入到队伍中。

例如,假设N=4N=4,一开始的顺序是:

DODO: 4,3,2,1

此时DODO只能对44号学生发送指令,当这位学生向后移动33步之后,队伍的顺序变成:

DODO: 3,2,1,4

此时DODO只能对33号学生发送指令,如此进行直到学生们拍好顺序。

DODO急需完成排序,这样他就可以开始体育锻炼了。请帮助他求出这NN位同学排好顺序所需要的最小操作次数。

注意: DODO总是站在队伍的前面面向学生。

输入

输入第一行包含NN

第二行包含NN个空格分隔的整数,表示学生们初始的顺序。

输出

输出一个整数,为DODO采用最佳策略可以将这NN位同学排好顺序所需要的操作次数。

样例

输入数据1

4
1 2 4 3

输出数据1

3

输入数据2

5
5 1 4 2 3

输出数据2

3

数据范围

对于前 40% 的数据:1n1061 \le n \le 10^6

Problem 2

题目描述

众所周知,在《我的世界》这款游戏中,玩家只能放置各种各样的方块。

现在史蒂夫想在游戏中建造一个球体,但是只用方块是不可能建成完美的球形的。

聪明的史蒂夫想到了,球形的边界距离球心的距离即为半径RR,这个数值是固定的。所以他打算将所有距离球心R\le R的位置全部放置方块,这样就能组成一个近似的球形。

史蒂夫将问题简化成了一个三维坐标系。在这个坐标系中,球心的坐标是原点(即(0,0,0)(0, 0, 0),他想知道在坐标系中有多少个整点,距离球心的距离R\le R

求出这个数字后,他就能知道自己该准备多少方块了。

输入

输入仅一个整数RR, 表示球的半径。

输出

输出仅一个整数,表示在三维坐标系中,有多少个整点被球心为原点,半径为RR的球覆盖。

样例

输入数据 1

1

输出数据 1

7

输入数据 2

10

输出数据 2

4169

对于 Problem 2 我的40分代码!

#include <bits/stdc++.h>

using namespace std;

int cntF(int R) {
    int cnt = 0;
    for (int x = -R; x <= R; x++) {
        for (int y = -R; y <= R; y++) {
            long long mx = static_cast<long long>(x) * x + static_cast<long long>(y) * y;
            if (mx > static_cast<long long>(R) * R) {
                continue;
            }
            int mxn = static_cast<int>(sqrt(R * R - mx));
            for (int z = -mxn; z <= mxn; z++) {
            	cnt++;
            }
        }
    }
    return cnt;
}

int main() {
    int R;
    scanf("%d", &R);
    printf("%d\n", cntF(R));

    return 0;
}

如果能将这两道题解出来的大佬,感激不尽!!!

2024/12/14 10:37
加载中...