Day 1

201403-1

题目描述

有 \(N\) 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(\(a\) 和 \(-a\) 为一对相反数)。

输入格式

第一行包含一个正整数 \(N\)。\((1 ≤ N ≤ 500)\)。

第二行为 \(N\) 个用单个空格隔开的非零整数,每个数的绝对值不超过\(1000\),保证这些整数各不相同。

  

输出格式

  只输出一个整数,即这 \(N\) 个数中包含多少对相反数。

样例输入

  1. 5
  2. 1 2 3 -1 -2

样例输出

  1. 2

题目分析

语法题

保证输入整数互不相同,所以直接看输入的数的相反数是否存在即可(哈希表,标记都可)

C++代码

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. map<int , int> p;
  4. int main()
  5. {
  6. int n;
  7. cin >> n;
  8. int cnt = 0;
  9. while (n -- )
  10. {
  11. int x;
  12. cin >> x;
  13. if(p[abs(x)]) cnt ++;
  14. else p[abs(x)] ++;
  15. }
  16. cout << cnt << '\n';
  17. return 0;
  18. }

201403-2

题目描述

在某图形操作系统中,有 \(N\) 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。

窗口的边界上的点也属于该窗口。

窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。

当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变。

如果你点击的位置不属于任何窗口,则系统会忽略你这次点击。

现在我们希望你写一个程序模拟点击窗口的过程。

输入格式

输入的第一行有两个正整数,即 \(N\) 和 \(M\)。

接下来 \(N\) 行按照从最下层到最顶层的顺序给出 \(N\) 个窗口的位置。

每行包含四个非负整数 \(x_1,y_1,x_2,y_2\),表示该窗口的一对顶点坐标分别为 \((x_1,y_1)\) 和\((x_2,y_2)\)。保证 \(x_1<x_2,y_1<y_2\)。

接下来 \(M\) 行每行包含两个非负整数 \(x,y\),表示一次鼠标点击的坐标。

题目中涉及到的所有点和矩形的顶点的 \(x,y\) 坐标分别不超过 \(2559\) 和 \(1439\)。

输出格式

输出包括 \(M\) 行,每一行表示一次鼠标点击的结果。

如果该次鼠标点击选择了一个窗口,则输出这个窗口的编号(窗口按照输入中的顺序从 \(1\)

编号到 \(N\)。

如果没有,则输出 IGNORED

数据范围

\(1≤N,M≤10\)

输入样例:

  1. 3 4
  2. 0 0 4 4
  3. 1 1 5 5
  4. 2 2 6 6
  5. 1 1
  6. 0 0
  7. 4 4
  8. 0 5

输出样例:

  1. 2
  2. 1
  3. 1
  4. IGNORED

样例解释

第一次点击的位置同时属于第 \(1\) 和第 \(2\) 个窗口,但是由于第 \(2\)个窗口在上面,它被选择并且被置于顶层。

第二次点击的位置只属于第 \(1\)个窗口,因此该次点击选择了此窗口并将其置于顶层。现在的三个窗口的层次关系与初始状态恰好相反了。

第三次点击的位置同时属于三个窗口的范围,但是由于现在第 \(1\)

个窗口处于顶层,它被选择。

最后点击的 \((0,5)\)

不属于任何窗口。

题目分析

大模拟题,因为数据量很小模拟就行

C++ 代码

  1. #include <bits/stdc++.h>
  2. #define x first
  3. #define y second
  4. using namespace std;
  5. typedef pair<int, int> PII;
  6. const int N = 11;
  7. pair<PII , PII> point[N];
  8. map<pair<PII , PII> , int> mp;
  9. int n , m;
  10. int main()
  11. {
  12. cin >> n >> m;
  13. for(int i = 0 ; i < n ; i ++)
  14. {
  15. cin >> point[i].first.x >> point[i].first.y >> point[i].second.x >> point[i].second.y;
  16. mp[point[i]] = i + 1;
  17. }
  18. while(m --)
  19. {
  20. int px , py;
  21. cin >> px >> py;
  22. int ans = 0 , idx = -1;
  23. pair<PII , PII> t;
  24. for(int i = 0 ; i < n ; i ++)
  25. if(px >= point[i].first.x && px <= point[i].second.x && py >= point[i].first.y && py <= point[i].second.y)
  26. ans = mp[point[i]] , t = point[i] , idx = i;
  27. if(ans == 0) cout << "IGNORED" << '\n';
  28. else
  29. {
  30. cout << ans << '\n';
  31. for(int i = 0 ; i < n ; i ++)
  32. if(i > idx) point[i - 1] = point[i];
  33. point[n - 1] = t;
  34. }
  35. }
  36. }

Day1 备战CCF-CSP练习的更多相关文章

  1. CCF CSP 认证

    参加第八次CCF CSP认证记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四 ...

  2. CCF CSP 201609-2 火车购票

    题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...

  3. CCF CSP 201703-3 Markdown

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...

  4. CCF CSP 201703

    CCF CSP 2017·03 做了一段时间的CCF CSP试题,个人感觉是这样分布的 A.B题基本纯暴力可满分 B题留心数据范围 C题是个大模拟,留心即可 D题更倾向于图论?(个人做到的D题基本都是 ...

  5. CCF CSP 201312-3 最大的矩形

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...

  6. CCF CSP 201609-3 炉石传说

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-3 炉石传说 问题描述 <炉石传说:魔兽英雄传>(Hearthston ...

  7. CCF CSP 201403-3 命令行选项

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...

  8. CCF CSP 201709-4 通信网络

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...

  9. CCF CSP 201409-3 字符串匹配

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-3 字符串匹配 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那 ...

  10. CCF CSP 201503-3 节日

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-3 节日 问题描述 有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形 ...

随机推荐

  1. Linux内核中块层上的多队列

    如果你想知道SSD为什么使用多队列,可以看看这篇文章:https://kernel.dk/blk-mq.pdf 1. 多块层 以下关于多队列层的总结来自 The Multi-Queue Interfa ...

  2. C# 拓展方法( 二)——模拟拓展方法的场景

    namespace ExpandingMethodDemo{ class Program { static void Main(string[] args) { Phone ph = new Phon ...

  3. Navicat Premiun已经停止工作

    与网易有道词典冲突.退出词典即可.

  4. 【代码】JS|前端密码,浪漫至死不渝,祝我生日快乐

    今天是特别的日子,我想把这篇存稿发出来. 一次缺席,次次缺席,便不再期待重逢. 也是时候,解开最后一个设计过的谜题. 学加密的同时,我恰好写前端比较多,也有朋友找我测试他们前端页面上的加密方案的安全性 ...

  5. Dify 架构全景:从模块设计到部署实践的完整指南

    项目概述 Dify 是一个开源的 LLM 应用开发平台,提供直观的界面,结合了AI Agent工作流.RAG 管道.智能体能力.模型管理和可观察性功能等,使用户能够快速从原型转向生产环境.Dify 允 ...

  6. useEffect的那些坑,你知道多少

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 14px; o ...

  7. IDEA开启热加载

    然後 Ctrl+Shift+Ait+/ pom.xml里添加 <build> <plugins> <!-- 配置插件,让热部署依赖spring-boot-devtools ...

  8. VMware workstation 部署微软MDT系统

    一.环境准备 1. VMware Workstation 虚拟机配置 新建虚拟机 类型:Microsoft Windows Server 2022 Standard 内存:4GB+ 硬盘:100GB( ...

  9. Windows配置VS Code详细流程

      本文介绍Visual Studio Code(VS Code)软件在Windows操作系统电脑中的下载.安装.运行方法.   Visual Studio Code(简称VS Code)是一款由微软 ...

  10. Spring 注解之 @MapperScan 和 @Mapper

    @Mapper注解 为了让别的类能够引用UserMapper,需要在UserMapper类上添加@Mapper注解: @Mapper public interface UserMapper { pub ...