P14358 [CSP-J 2025] 座位

CSP-J 2025 座位分配问题解析

题目来源

P14358 [CSP-J 2025] 座位 - 洛谷

题目描述

CSP-J 2025 第二轮正在进行。小 R 所在的考场共有 n×m 名考生,其中所有考生的 CSP-J 2025 第一轮成绩互不相同。所有 n×m 名考生将按照 CSP-J 2025 第一轮的成绩,由高到低蛇形分配座位,排列成 n  m 。具体地,设小 R 所在的考场的所有考生的成绩从高到低分别为 s1​>s2​>⋯>sn×m​,则成绩为 s1​ 的考生的座位为第 1 第 1 ,成绩为 s2​ 的考生的座位为第 1 第 2 ,…,成绩为 sn​ 的考生的座位为第 1 第 n ,成绩为 sn+1​ 的考生的座位为第 2 第 n ,…,成绩为 s2n​ 的考生的座位为第 2 第 1 ,成绩为 s2n+1​ 的考生的座位为第 3 第 1 ,以此类推。

例如,若 n=4,m=5,则所有 4×5=20 名考生将按照 CSP-J 2025 第一轮成绩从高到低的顺序,根据下图中的箭头顺序分配座位。

给定小 R 所在的考场座位的行数 n 与列数 m,以及小 R 所在的考场的所有考生 CSP-J 2025 第一轮的成绩 a1​,a2​,…,an×m​,其中 a1​ 为小 R CSP-J 2025 第一轮的成绩,你需要帮助小 R 求出,他的座位为第几第几

输入格式

输入的第一行包含两个正整数 n,m,分别表示小 R 所在的考场座位的行数列数

输入的第二行包含 n×m 个正整数 a1​,a2​,…,an×m​,分别表示小 R 所在的考场的所有考生 CSP-J 2025 第一轮的成绩,其中 a1​ 为小 R CSP-J 2025 第一轮的成绩。

输出格式

输出一行两个正整数 c,r,表示小 R 的座位为第 c 第 r 

输入输出样例

输入 #1复制

2 2
99 100 97 98

输出 #1复制

1 2

输入 #2复制

2 2
98 99 100 97

输出 #2复制

2 2

输入 #3复制

3 3
94 95 96 97 98 99 100 93 92

输出 #3复制

3 1

说明/提示

【样例 1 解释】

按照成绩从高到低的顺序,成绩为 100 的考生的座位为第 1 第 1 ,成绩为 99 的考生的座位为第 1 第 2 ,成绩为 98 的考生的座位为第 2 第 2 ,成绩为 97 的考生的座位为第 2 第 1 。小 R 的成绩为 99,因此座位为第 1 第 2 

【样例 2 解释】

按照成绩从高到低的顺序,成绩为 100 的考生的座位为第 1 第 1 ,成绩为 99 的考生的座位为第 1 第 2 ,成绩为 98 的考生的座位为第 2 第 2 ,成绩为 97 的考生的座位为第 2 第 1 。小 R 的成绩为 98,因此座位为第 2 第 2 

【数据范围】

对于所有测试数据,保证:

  • 1≤n≤10, 1≤m≤10;
  • 对于所有 1≤i≤n×m,均有 1≤ai​≤100,且 a1​,a2​,…,an×m​ 互不相同

代码

#include<bits/stdc++.h>
using namespace std;
int n[15][15];
int a[105];
int main(){
    int n,m,h;
    cin>>n>>m;
    int i1=1,j1=1;
    for(int i=1;i<=n*m;i++){
        cin>>a[i];
    }
    int num=a[1];
    sort(a+1,a+n*m+1);
    for(int i=1;i<=n*m;i++){
        if(a[i]==num){
            h=i;
        }
    }
    h=n*m-h+1;//求小R第几;
    for(int i=1;i<h;i++){
        if(i1%2==1&&j1<n){//当行数为单数时,列数++;
            j1++;
        }
        else if(i1%2==1&&j1==n){//当行数为单数时,并且到头(j1==n),行数加一;
            i1=i1+1;
        }
        else if(i1%2==0&&j1>1){//当行数为双数时,列数--;
            j1--;
        }
        else{//当行数为双数时,并且到头(j1==1),行数加一;
            i1=i1+1;
        }
    }
    cout<<i1<<" "<<j1;
    return 0;
}

# P14358 [CSP-J 2025] 座位 / seat ## 题目描述 CSP-J 2025 第二轮正在进行。小 R 所在的考场共有 $n \times m$ 名考生,其中所有考生的 CSP-J 2025 第一轮成绩互不相同。所有 $n \times m$ 名考生将按照 CSP-J 2025 第一轮的成绩,由高到低蛇形分配座位,排列成 $n$ 行 $m$ 列。具体地,设小 R 所在的考场的所有考生的成绩从高到低分别为 $s_1 > s_2 > \dots > s_{n \times m}$,则成绩为 $s_1$ 的考生的座位为第 1 列第 1 行,成绩为 $s_2$ 的考生的座位为第 1 列第 2 行,$\dots$,成绩为 $s_n$ 的考生的座位为第 1 列第 $n$ 行,成绩为 $s_{n+1}$ 的考生的座位为第 2 列第 $n$ 行,$\dots$,成绩为 $s_{2n}$ 的考生的座位为第 2 列第 1 行,成绩为 $s_{2n+1}$ 的考生的座位为第 3 列第 1 行,以此类推。 例如,若 $n = 4, m = 5$,则所有 $4 \times 5 = 20$ 名考生将按照 CSP-J 2025 第一轮成绩从高到低的顺序,根据下图中的箭头顺序分配座位。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/hfprtmco.png) ::: 给定小 R 所在的考场座位的行数 $n$ 与列数 $m$,以及小 R 所在的考场的所有考生 CSP-J 2025 第一轮的成绩 $a_1, a_2, \dots, a_{n \times m}$,其中 $a_1$ 为小 R CSP-J 2025 第一轮的成绩,你需要帮助小 R 求出,他的座位为第几列第几行。 ## 输入格式 输入的第一行包含两个正整数 $n, m$,分别表示小 R 所在的考场座位的行数与列数。 输入的第二行包含 $n \times m$ 个正整数 $a_1, a_2, \dots, a_{n \times m}$,分别表示小 R 所在的考场的所有考生 CSP-J 2025 第一轮的成绩,其中 $a_1$ 为小 R CSP-J 2025 第一轮的成绩。 ## 输出格式 无 ## 输入输出样例 #1 ### 输入 #1 ``` 2 2 99 100 97 98 ``` ### 输出 #1 ``` 1 2 ``` ## 输入输出样例 #2 ### 输入 #2 ``` 2 2 98 99 100 97 ``` ### 输出 #2 ``` 2 2 ``` ## 输入输出样例 #3 ### 输入 #3 ``` 3 3 94 95 96 97 98 99 100 93 92 ``` ### 输出 #3 ``` 3 1 ``` ## 说明/提示 ### 【样例 1 解释】 按照成绩从高到低的顺序,成绩为 $100$ 的考生的座位为第 $1$ 列第 $1$ 行,成绩为 $99$ 的考生的座位为第 $1$ 列第 $2$ 行,成绩为 $98$ 的考生的座位为第 $2$ 列第 $2$ 行,成绩为 $97$ 的考生的座位为第 $2$ 列第 $1$ 行。小 R 的成绩为 $99$,因此座位为第 $1$ 列第 $2$ 行。 ### 【样例 2 解释】 按照成绩从高到低的顺序,成绩为 $100$ 的考生的座位为第 $1$ 列第 $1$ 行,成绩为 $99$ 的考生的座位为第 $1$ 列第 $2$ 行,成绩为 $98$ 的考生的座位为第 $2$ 列第 $2$ 行,成绩为 $97$ 的考生的座位为第 $2$ 列第 $1$ 行。小 R 的成绩为 $98$,因此座位为第 $2$ 列第 $2$ 行。 ### 【数据范围】 对于所有测试数据,保证: - $1 \leq n \leq 10$, $1 \leq m \leq 10$; - 对于所有 $1 \leq i \leq n \times m$,均有 $1 \leq a_i \leq 100$,且 $a_1, a_2, \dots, a_{n \times m}$ 互不相同。 | 测试点编号 | $n \leq$ | $m \leq$ | 特殊性质 | | :--: | :--: | :--: | :--: | | 1 | 1 | 1 | AB | | 2, 3 | ^ | 10 | 无 | | 4, 5 | 10 | 1 | ^ | | 6 | 2 | 2 | A | | 7 | ^ | ^ | B | | 8, 9 | ^ | ^ | 无 | | 10 | ^ | 10 | A | | 11 | ^ | ^ | B | | 12 ~ 14 | ^ | ^ | 无 | | 15 ~ 17 | 10 | 2 | ^ | | 18 ~ 20 | ^ | 10 | ^ | 特殊性质 A: 对于所有 $1 \leq i \leq n \times m$,均有 $a_i = i$。 特殊性质 B: 对于所有 $1 \leq i \leq n \times m$,均有 $a_i = n \times m - i + 1$。
11-02
# P14358 [CSP-J 2025] 座位 / seat(官方数据) ## 题目描述 CSP-J 2025 第二轮正在进行。小 R 所在的考场共有 $n \times m$ 名考生,其中所有考生的 CSP-J 2025 第一轮成绩**互不相同**。所有 $n \times m$ 名考生将按照 CSP-J 2025 第一轮的成绩,**由高到低蛇形分配座位**,排列成 $n$ **行** $m$ **列**。具体地,设小 R 所在的考场的所有考生的成绩**从高到低**分别为 $s_1 > s_2 > \dots > s_{n \times m}$,则成绩为 $s_1$ 的考生的座位为第 1 **列**第 $1$ **行**,成绩为 $s_2$ 的考生的座位为第 $1$ **列**第 $2$ **行**,$\dots$,成绩为 $s_n$ 的考生的座位为第 $1$ **列**第 $n$ **行**,成绩为 $s_{n+1}$ 的考生的座位为第 $2$ **列**第 $n$ **行**,$\dots$,成绩为 $s_{2n}$ 的考生的座位为第 $2$ **列**第 $1$ **行**,成绩为 $s_{2n+1}$ 的考生的座位为第 $3$ **列**第 $1$ **行**,以此类推。 例如,若 $n = 4, m = 5$,则所有 $4 \times 5 = 20$ 名考生将按照 CSP-J 2025 第一轮成绩从高到低的顺序,根据下图中的箭头顺序分配座位。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/hfprtmco.png) ::: 给定小 R 所在的考场座位的**行数** $n$ 与**列数** $m$,以及小 R 所在的考场的所有考生 CSP-J 2025 第一轮的成绩 $a_1, a_2, \dots, a_{n \times m}$,其中 $a_1$ 为小 R CSP-J 2025 第一轮的成绩,你需要帮助小 R 求出,他的座位为第几**列**第几**行**。 ## 输入格式 输入的第一行包含两个正整数 $n, m$,分别表示小 R 所在的考场座位的**行数**与**列数**。 输入的第二行包含 $n \times m$ 个正整数 $a_1, a_2, \dots, a_{n \times m}$,分别表示小 R 所在的考场的所有考生 CSP-J 2025 第一轮的成绩,其中 $a_1$ 为小 R CSP-J 2025 第一轮的成绩。 ## 输出格式 输出一行两个正整数 $c, r$,表示小 R 的座位为第 $c$ **列**第 $r$ **行**。 ## 输入输出样例 #1 ### 输入 #1 ``` 2 2 99 100 97 98 ``` ### 输出 #1 ``` 1 2 ``` ## 输入输出样例 #2 ### 输入 #2 ``` 2 2 98 99 100 97 ``` ### 输出 #2 ``` 2 2 ``` ## 输入输出样例 #3 ### 输入 #3 ``` 3 3 94 95 96 97 98 99 100 93 92 ``` ### 输出 #3 ``` 3 1 ``` ## 说明/提示 ### 【样例 1 解释】 按照成绩从高到低的顺序,成绩为 $100$ 的考生的座位为第 $1$ **列**第 $1$ **行**,成绩为 $99$ 的考生的座位为第 $1$ **列**第 $2$ **行**,成绩为 $98$ 的考生的座位为第 $2$ **列**第 $2$ **行**,成绩为 $97$ 的考生的座位为第 $2$ **列**第 $1$ **行**。小 R 的成绩为 $99$,因此座位为第 $1$ **列**第 $2$ **行**。 ### 【样例 2 解释】 按照成绩从高到低的顺序,成绩为 $100$ 的考生的座位为第 $1$ **列**第 $1$ **行**,成绩为 $99$ 的考生的座位为第 $1$ **列**第 $2$ **行**,成绩为 $98$ 的考生的座位为第 $2$ **列**第 $2$ **行**,成绩为 $97$ 的考生的座位为第 $2$ **列**第 $1$ **行**。小 R 的成绩为 $98$,因此座位为第 $2$ **列**第 $2$ **行**。 ### 【数据范围】 对于所有测试数据,保证: - $1 \leq n \leq 10$, $1 \leq m \leq 10$; - 对于所有 $1 \leq i \leq n \times m$,均有 $1 \leq a_i \leq 100$,且 $a_1, a_2, \dots, a_{n \times m}$ 互不相同。 ::cute-table{tuack} | 测试点编号 | $n \leq$ | $m \leq$ | 特殊性质 | | :--: | :--: | :--: | :--: | | $1$ | $1$ | $1$ | AB | | $2, 3$ | ^ | $10$ | 无 | | $4, 5$ | $10$ | $1$ | ^ | | $6$ | $2$ | $2$ | A | | $7$ | ^ | ^ | B | | $8, 9$ | ^ | ^ | 无 | | $10$ | ^ | $10$ | A | | $11$ | ^ | ^ | B | | $12 \sim 14$ | ^ | ^ | 无 | | $15 \sim 17$ | $10$ | $2$ | ^ | | $18 \sim 20$ | ^ | $10$ | ^ | 特殊性质 A:对于所有 $1 \leq i \leq n \times m$,均有 $a_i = i$。 特殊性质 B:对于所有 $1 \leq i \leq n \times m$,均有 $a_i = n \times m - i + 1$。 使用C++
11-09
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值