Day8 备战CCF-CSP练习
Day8
前几天写了牛客周赛和集美大学ACM赛的题,耽误了几天,这几天会陆续发他们的题解,前两天的题就不补了,😃。
题目描述#
涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。
每位读者有一个唯一编号,每条记录用读者的编号来表示。
给出读者的来访记录,请问每一条记录中的读者是第几次出现。
输入格式#
输入的第一行包含一个整数
第二行包含
输出格式#
输出一行,包含
数据范围#
输入样例:#
5
1 2 1 1 3
输出样例:#
1 1 2 3 1
题目分析#
语法题
每次出现次数++即可
C++代码#
#include <bits/stdc++.h>
using namespace std;
int n;
map<int , int> p;
int main()
{
cin >> n;
while (n -- )
{
int x;
cin >> x;
p[x] ++;
cout << p[x] << ' ';
}
return 0;
}
题目描述#
在图像编码的算法中,需要将一个给定的方形矩阵进行
给定一个
对于下面的
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3
对其进行 1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
。
请实现一个
输入格式#
输入的第一行包含一个整数
输入的第二行到第
输出格式#
输出一行,包含
数据范围#
输入样例:#
4
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3
输出样例:#
1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
题目解析#
曼哈顿距离 + 模拟
观察斜着打印的坐标的特点,可以发现直线方程都是
那么打印的顺序观察
要注意的是,这里不是所有坐标都有值,要判断要打印的坐标是否合法
时间复杂度
C++代码#
#include <bits/stdc++.h>
using namespace std;
const int N = 510;
int a[N][N];
int n;
int main()
{
cin >> n;
for(int i = 1 ; i <= n ; i ++)
for(int j = 1 ; j <= n ; j ++)
cin >> a[i][j];
for(int i = 2 ; i <= 2 * n ; i ++)
{
if(i % 2 == 0)
for(int y = 1 ; y <= n ; y ++)
{
if(i - y <= 0 || i - y > n) continue;
// cout << y << ' ' << i - y << '\n';
cout << a[i - y][y] << ' ';
}
else
for(int x = 1 ; x <= n; x ++)
{
if(i - x <= 0 || i - x > n) continue;
// cout << x << ' ' << i - x << '\n';
cout << a[x][i - x] << ' ';
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端