首页 > 其他分享 >Day1 备战CCF-CSP练习

Day1 备战CCF-CSP练习

时间:2024-10-08 15:50:04浏览次数:5  
标签:顶层 窗口 point int Day1 点击 CCF CSP first

Day 1

201403-1

问题描述

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

输入格式

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

输出格式

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

样例输入

5
1 2 3 -1 -2

样例输出

2

题目分析

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

C++代码

#include <bits/stdc++.h>

using namespace std;

map<int , int> p;

int main()
{
    int n;
    cin >> n;
    int cnt = 0;
    while (n -- )
    {
        int x;
        cin >> x;
        if(p[abs(x)]) cnt ++;
        else p[abs(x)] ++;
    }
    cout << cnt << '\n';
    return 0;
}

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$

输入样例:

3 4
0 0 4 4
1 1 5 5
2 2 6 6
1 1
0 0
4 4
0 5

输出样例:

2
1
1
IGNORED

样例解释

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

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

第三次点击的位置同时属于三个窗口的范围,但是由于现在第 $1$
个窗口处于顶层,它被选择。

最后点击的 $(0,5)$
不属于任何窗口。

题目分析

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

C++ 代码

#include <bits/stdc++.h>
#define x first
#define y second

using namespace std;

typedef pair<int, int> PII;
const int N = 11;

pair<PII , PII> point[N];
map<pair<PII , PII> , int> mp;

int n , m;

int main()
{
    cin >> n >> m;
    for(int i = 0 ; i < n ; i ++)
    {
        cin >> point[i].first.x >> point[i].first.y >> point[i].second.x >> point[i].second.y;
        mp[point[i]] = i + 1;
    }
    
    while(m --)
    {
        int px , py;
        cin >> px >> py;
        int ans = 0 , idx = -1;
        pair<PII , PII> t;
        for(int i = 0 ; i < n ; i ++)
            if(px >= point[i].first.x && px <= point[i].second.x && py >= point[i].first.y && py <= point[i].second.y)
                ans = mp[point[i]] , t = point[i] , idx = i;
        if(ans == 0) cout << "IGNORED" << '\n';
        else
        {
            cout << ans << '\n';
            for(int i = 0 ; i < n ; i ++)
                if(i > idx) point[i - 1] = point[i];
            point[n - 1] = t;
        }
    }
    
}


标签:顶层,窗口,point,int,Day1,点击,CCF,CSP,first
From: https://www.cnblogs.com/mathblog/p/18451786

相关文章

  • 『模拟赛』CSP-S模拟10
    Rank没学线性基输麻了,A.欧几里得的噩梦线性基,输麻了。B.清扫思维题,差点签了。(感觉其实不是很难啊,没有紫的水平)一个叶子结点和另一个叶子结点的最短路径一定经过它的父节点。根据这一性质可以让整棵树的合法性拆分成每个节点的合法性。考虑如何判断每个节点的合法性。......
  • [43] (CSP 集训) CSP-S 模拟 10
    B.清扫考虑从叶子节点往上推首先可以发现的几个性质子树内需要消除的数,要么通过子树根节点“发送”到上面(只经过子树内一个叶节点),要么通过自己的叶节点解决对于子树内既不是根也不是叶节点的节点,节点上的值只能由这一支路的叶节点消除,所以如果他节点上的值和下面节点“发......
  • 10.7 noip多校联考与牛客CSP-S总结
    我在这里对我今天在牛客考试中进入洛谷做出深刻的反省,我不应该在考试的时候上与考试无关的网站(洛谷),保证没有下犯,在该做什么的时候就做什么,分清主次。10.7noip多校联考与牛客CSP-S总结noip联考T1是一道类似于概率计数DP的题,统计概率。通过题目给出的信息,可以发现使用概率,而统......
  • java_day10_Object、Scanner、String
    1、Object类java中所有的类默认都有一个共同的父类:Object==比较:1、比较的是两个基本数据类型的话,比较两个数值是否相等2、比较的是两个引用数据类型的话,比较的是两个对象的地址值是否相等成员方法:inthashCode()返回对象的哈希码值。可以看作地址值的另外......
  • [41] (CSP 集训) CSP-S 模拟 9
    A.邻面合并观察到\(m\)很小,支持我们\(mn2^{2m}\)状压枚举二进制状态,\(f_{i,j,k}\)表示到第\(i\)位的状态为\(j\),上一位状态为\(j\)(\(i,j\)为状压位)的方案数考虑转移的时候加了什么判断这一行与上一行的联通情况,如果这一行的某一个连通块和上一行正好对上了,......
  • [CSP-S2019] 括号树
    算法特殊性质显然链的情况就是括号匹配因此显然有代码代码#include<bits/stdc++.h>#defineintlonglongconstintMAXN=5e5+20;intn;std::stringBraket;intfa[MAXN];boolCheck_Special_Quality(){for(inti=2;i<=n;i++){if(f......
  • 代码源Csp-S模拟赛Day10-11赛后总结
    代码源Csp-S模拟赛Day10-11赛后总结Day10赛时T1赛时感觉很难维护时间以及多个精灵同时到达同一格子的情况,后来想了一种做法:对于每个格子最早被遍历到的时间我们的处理是容易的,你考虑我们可以对每行每列都建一棵线段树(数据范围保证了\(rc\leq5e5\),所以总空间大致是一个\(4rc......
  • CSP2024 前集训:csp-s模拟9
    前言T1状压挂了\(10pts\),貌似做法是假的,但是一下午也没调出来哪儿假了,但是错误率很低,几百组能有一组错的。T2赛时数据锅了赛后重测了,赛时想到线段树但是没能具体实现,最后无奈写暴力。T3、T4没看。T1邻面合并\(m\le8\)所以考虑状压表示每一行哪些地方被覆盖,对与相邻两......
  • P8392 [BalticOI 2022 Day1] Uplifting Excursion(特殊背包问题)
    题意简述有\(2m+1\)种物品,体积分别为\(-m\simm\),每种物品有\(a_i\)个。你需要选出尽可能多数量的物品,使得物品体积和为\(l\)。\(m\le300,a_i,|l|\le10^{18}\)分析此题属于“背包容量极大,物品体积极小”的特殊背包问题。考虑背包问题的经典错误贪心:按照性价比降序排......
  • CSP 联训 3
    好吧,又倒数了,就签了个T2,100pts。T1我把相同颜色的存起来,每种颜色找出枚举选哪两个座位不合法的矩阵的左上和右下,如果找到的矩阵左下和右上也相同,则这个矩阵确实不合法,减去,但判断左下和右上的时候写的太急(最后十五分钟才开始打这个暴力)少判了和当前颜色是否相同,挂了80pts,!总......