UVA 10763 - Foreign Exchange(二分查找)

【多解】UVa 10763 交换学生 Foreign Exchange【附输入数据构造参考代码】 【紫书第五章习题5-4】 开始做这题的时候用的是直接把每一行数对扔进map里然后一行行找是否有调换了两个数的有序整数对,有一个没找到,整个交换都不能进行。结果当然是样例都过不了,因为样例里就出现了第一个数一致但第二个数不同的情况,第二次及以后出现第一个数相同的数对根本无法输入进map中。后来试了multimap,不过貌似写了4重循环,便放弃继续深究了,因为循环能到4重基本没有不超时的,准备重新按照... 阅读详情

B - Foreign Exchange
Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu

Description

Your non-profit organization (iCORE - international Confederation of Revolver Enthusiasts) coordinates a very successful foreign student exchange program. Over the last few years, demand has sky-rocketed and now you need assistance with your task.

The program your organization runs works as follows: All candidates are asked for their original location and the location they would like to go to. The program works out only if every student has a suitable exchange partner. In other words, if a student wants to go from A to B, there must be another student who wants to go from B to A. This was an easy task when there were only about 50 candidates, however now there are up to 500000 candidates!

Input

The input file contains multiple cases. Each test case will consist of a line containing n - the number of candidates (1≤n≤500000), followed by n lines representing the exchange information for each candidate. Each of these lines will contain 2 integers, separated by a single space, representing the candidate's original location and the candidate's target location respectively. Locations will be represented by nonnegative integer numbers. You may assume that no candidate will have his or her original location being the same as his or her target location as this would fall into the domestic exchange program. The input is terminated by a case where n = 0; this case should not be processed.

Output

For each test case, print "YES" on a single line if there is a way for the exchange program to work out, otherwise print "NO".

Sample Input

10
1 2
2 1
3 4
4 3
100 200
200 100
57 2
2 57
1 2
2 1
10
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
0

Sample Output

YES
NO

===================================

关于题意的理解需要注意1 2和2 1是YES,1 2、2 3、3 1是NO

思路就是 快排+二分查找


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

bool mark[511111];

struct student
{
    int a,b;
}s[511111];

bool cmp(student x,student y)
{
    if(x.b==y.b) return x.a<y.a;
    return x.b<y.b;
}

int search(int key1,int key2,student vis[],int n)
{
    int l=0,r=n-1,m,p=0;
    while (l<=r)
    {
        m=(l+r)/2;
        if(vis[m].b==key1&&vis[m].a==key2)
        {
            p=m;//找到第一个符合相等条件的位置
            r=m-1;
        }
        else if(vis[m].b>key1||(vis[m].b==key1&&vis[m].a>key2)) r=m-1;
        else l=m+1;
    }
    if(p)
    {
        if(!mark[p]) return p;
        else
        {
            while(mark[p]) p++;
            if(vis[p].b==key1&&vis[p].a==key2) return p;
        }
    }
    return 0;//s[0]肯定会先找,所以这里返回0没有什么问题
}

int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        if(n==0) break;
        memset(s,0,sizeof(s));
        memset(mark,0,sizeof(mark));
        int ok=1;
        for(int i=0;i<n;i++)
            scanf("%d%d",&s[i].a,&s[i].b);
        sort(s,s+n,cmp);
        /*for(int i=0;i<n;i++)
        {
            cout<<s[i].a<<"---"<<s[i].b<<endl;
        }*/
        for(int i=0;i<n;i++)
        {
            if(!mark[i])
            {
                int p=search(s[i].a,s[i].b,s,n);
                //cout<<p<<endl;
                if(p)
                {
                    mark[i]=1;
                    mark[p]=1;
                }
                else
                {
                    ok=0;
                    break;
                }
            }
        }
        if(ok) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}


YOLOv11涨点改进 | NeurIPS2025最佳论文!注意力改进篇| 引入Gated Attention门控注意力模块、太牛了!直接拯救了大模型的发展,助力目标检测、图像分割、图像分类有效涨点 本文提出了一种基于门控注意力机制(GatedAttention)的YOLOv11改进方法。该模块通过在标准注意力机制中引入头部特定的sigmoid门控,有效提升了模型性能和训练稳定性。实验表明,GatedAttention能够增强模型对关键信息的聚焦能力,减少无关区域关注,提高检测精度。同时,门控机制带来的非线性和稀疏性优化了计算效率,并缓解了训练不稳定性问题。文章详细介绍了模块原理、实现代码及三种改进方案配置方法,为YOLOv11在复杂场景下的目标检测提供了有效解决方案。 阅读详情

相关推荐

当GO.db安装失败时,生物信息学新手应该知道的5个底层逻辑

本文为生物信息学新手提供了解决GO.db安装失败的5个关键底层逻辑,包括网络连接与镜像源设置、版本兼容性检查、依赖关系管理、SQLite存储机制理解以及调试技巧。特别针对Bioconductor的GO.db包安装问题,详细介绍了如何通过切换国内镜像、管理版本冲突和解决依赖问题来成功安装,帮助用户高效克服常见安装障碍。

weixin_29062823的博客 407

UVA - 10763 Foreign Exchange (题解)

题目 Your non-profit organization (iCORE - international Confederation of Revolver Enthusiasts) coordinates a very successful foreign student exchange program. Over the last few years, demand has sky-roc...

殇尘的博客 284

Verilog十大基本功2(testbench的设计 文件读取和写入操作 源代码)

需求说明:Verilog设计基础 内容       :testbench的设计 读取文件 写入文件 来自       :时间的诗 十大基本功之 testbench 1. 激励的产生 对于 testbench 而言,端口应当和被测试的 module 一一对应。 端口分为 input,output 和 inout 类型产生激励信号的时候, input  对

时间的诗 5万+

交换学生(Foreign Exchange)

有n(1≤n≤500000)个学生想交换到其他学校学习。规定每个想从A学校换到B学校的学生必须找一个想从B换到A的“搭档”。每个人都找到搭档输出“YES”,否则输出“NO”。每个学生用两个整数A,B表示,判断交换是否可以进行。 //排序+逐位比较即可 #include<bits/stdc++.h> using namespace std; int main() { int n=0; while((cin>>n)&&n) { int a[n

韶言大雅 1073

2025-08-19利用opencv检测图片中文字及图片的坐标

该代码实现了图片中中文文本的检测与位置计算功能。主要使用CnOcr库进行OCR识别,结合OpenCV和PIL库处理图像。功能包括:1)检测图片中的中文文本及位置坐标;2)计算每个文本的像素宽度和高度;3)在原图上绘制文本边界框并标注识别结果。代码通过put_chinese_text函数解决中文显示问题,最终输出各文本内容、坐标位置及尺寸信息。适用于需要获取图片中文字精确位置的应用场景。

m0_58149406的博客 395

winpcap无法安装提示新版本已经安装解决办法

问题显示如下该问题会导致ensp里的云识别不到网卡可能是因为之前安装了npcap,而且安装时勾选了第四个选项导致无法安装,需要完全卸载npcap解决办法:办法一:在控制面板的程序与卸载里面卸载npcap和winPcap,然后再安装winPcap,如果搜不到往下看办法二:在C:\Windows\SysWOW64目录下搜索wpcap.dll和packet.dll并重命名为wpcap.dll.old和packet.dll.old办法三:如果搜不到这两个文件需要安装win10Pcap才能找到这两个文件下载地址:Wi

qq_73202377的博客 3万+

UVA 10763 Foreign Exchange

Description Your non-profit organization (iCORE - international Confederation of Revolver Enthusiasts) coordinates a very successful foreign student exchange program. Over the last few years, demand ...

shanwenkang的博客 302

从Starlink看NTN:SSB波束数量少,用户体验真的会差吗?

当SpaceX的Starlink以每月新增上百颗卫星的速度扩张其星座时,一个有趣的技术现象正在引发行业讨论:为何这个全球最大的低轨卫星网络选择使用相对较少的波束数量?波束数量的选择远非简单的技术参数,而是系统设计哲学、商业策略与终端用户体验的复杂平衡。传统地面网络可以依赖密集基站实现精准覆盖,而卫星通信必须面对一个根本性挑战:如何在数百公里的高空,用有限的射频资源服务广阔的地理区域。当我们在撒哈拉沙漠测试不同波束方案时,发现了一个关键洞见:最佳波束数量不是固定的技术参数,而是随网络发展阶段变化的动态值。

weixin_32308101的博客 332

UVa10763-Foreign Exchange-交换学生--map映射和pair对的使用

题目链接:https://vjudge.net/problem/UVA-10763 有n(1≤n≤500000)个学生想交换到其他学校学习。为了简单起见,规定每个想从A学 校换到B学校的学生必须找一个想从B换到A的“搭档”。如果每个人都能找到搭档(一个人不 能当多个人的搭档),学校就会同意他们交换。每个学生用两个整数A、B表示,你的任务 是判断交换是否可以进行。 分析:map的使用

话歪之地的博客 720

习题加餐4. 冒险者工会

这个问题通过贪心算法解决,展示了贪心算法在解决一些优化问题中的强大能力。关键在于如何识别贪心选择的性质,并通过数学证明确保这种方法能够达到全局最优解。通过对问题的深入理解和逻辑推理,我们可以设计出有效的算法来解决问题,同时也需要注意代码实现中的细节,如排序和双指针的使用,以确保算法的效率和正确性。贪心算法的应用这个问题展示了贪心算法在实际问题中的应用。贪心算法通过在每一步选择当前最优的解决方案,期望最终达到全局最优解。该问题中,每次选择能力最接近但足以完成最难任务的冒险者,就是贪心选择的体现。

tang7mj的博客 1349

线性自抗扰控制(LADRC)系统算法框图

NLADRC自抗扰控制从Simulink仿真到PLC控制实现_自抗扰控制器 simulink仿真-优快云博客本文介绍了如何将ADRC自抗扰控制算法从Simulink仿真应用到PLC控制中,包括Simulink框图、TD微分器模型、MATLAB函数的使用、SCL控制代码,以及非线性状态误差反馈控制率的实现。提供了详细的MATLAB仿真步骤和PLC源代码链接。ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法-优快云博客。

RXXW_Dor的博客 1463

UVA10763 Foreign Exchange 交换学生 解题报告

有n(1≤n≤500000)个学生想交换到其他学校学习。为了简单起见,规定每个想从A学校换到B学校的学生必须找一个想从B换到A的“搭档”。如果每个人都能找到搭档(一个人不能当多个人的搭档),学校就会同意他们交换。每个学生用两个整数A、B表示,你的任务是判断交换是否可以进行。非常基础的map计数,map< pair< int, int >, int > 统计学校A到学校B交换的人数,然后统计所有B到A交换的人数是否和A到B的一样即可,详细见代码。

qq_45554473的博客 385

具身智能:原理、算法与系统 第18章 模仿学习与人类示范

与基于试错机制的强化学习不同,模仿学习假设存在能够提供高质量轨迹示范的专家策略,学习者的目标是在不直接访问专家内部决策机制的情况下,复现或泛化专家的行为模式。此外,选项 GAIL(Option-GAIL)将分层强化学习与对抗模仿结合,学习选项(Options)级别的策略,能够捕捉专家示范中的多模态行为与高层意图。X-Sim 框架提出从真实到模拟再到真实的迁移路径:首先从人类视频中重建物理仿真环境,在仿真中训练状态级策略,随后通过策略蒸馏获得基于视觉的策略,最后通过在线领域自适应对齐真实与仿真观测。

VectorShift的博客 125

uva 10763 Foreign Exchange(排序+二分查找)

这道题是我第一次算出来应该用什么复杂度写的题,或许是这一章刚介绍过,500000的数据必须用nlogn,所以我就 想到了二分,它的复杂度是logn,再对n个数据进行遍历,正好是nlogn,前两次TLE了,然后我就对我的做法没信心 了。。。看到一篇博客上说就应该这种方法,然后我就坚定的改自己的算法去了,哈哈,专注度没有达到五颗星,最多 三颗。。。 思路: 我用的是结构体保存的,先对每一对序

勿忘初心 572

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

UVA 10763 Foreign Exchange 出国交换 pair+map

题意:给出很多对数字,看看每一对(a,b)能不能找到对应的(b,a)。 放在贪心这其实有点像检索。 用stl做,map+pair。 记录每一对出现的次数,然后遍历看看对应的那一对出现的次数有没有和自己出现的此时一样即可。 代码: /* * Author: illuz * Blog: http://blog.youkuaiyun.com/hcbbt *

水果君の日常 2469

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Foreign Exchange UVA - 10763

题目链接: Foreign Exchange UVA - 10763 题目大意: 给出交换学生的原先国家和所去的国家,交换成功的条件是如果A国给B国一个学生,对应的B国也必须给A国一个学生,否则就是交换失败。 分析:一个学生有一组数据,使用pair比较简单。使用map存储学生,输入一个学生,则将学生对应交换的学生也列出,如交换的存在则,交换的-1,最后判断是否为0即可。 代码: #include ...

qq_43185391的博客 203

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

UVA - 10763 - Foreign Exchange

UVA - 10763 Foreign Exchange Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Submit Status Description Problem E Foreign Exchange Input: standard i

Never say never 1036

UVA10763 交换学生 Foreign Exchange 题解

题目链接: https://www.luogu.org/problemnew/show/UVA10763 题目分析: 本题我首先想到的做法是把每一个数都map一下,然后互相判断,例如a,b两人准备交换,那么m[a]=b,m[b]=a,最后再判断如果m[m[a]]=a就行,但是因为一个学生在双方都同意的情况下可以先后与多个学生交换,所以我的做...

ShineEternal的笔记小屋 583

Foreign Exchange(UVA 10763)

但是这个网站的测试点是间接的方式也可以(我不是在UVA那刷题的,因为要翻墙)可以不用像我用struct,直接用pair就可以了。1 到 2,2 到 3,3 到 1。最后是两个配对方式的都写了一遍。

Fool256353的博客 440

习题5-4 交换学生(Foreign Exchange,UVa 10763)

原题链接:https://vjudge.net/problem/UVA-10763 分类:<map> 备注:水题 前言:再次看到数据超水的题,直接排序都能过就很离谱了。 错误AC(排序)代码如下: #include<cstdio> #include<vector> #include<algorithm> using namespace std; in...

TK_wang_的博客 394

uva-10763 Foreign Exchange 题解

紫书第五章练习 uva-10763题解;map和pair的使用

caizhixinczx的博客 289

UVA-10763 Foreign Exchange

Vjudge题目链接,STL的map,我上来就set写了一个,wa了才发现每组有重复输入的,所以set不行。 #include<cstdio> #include<iostream> #include<map> #include<algorithm> using namespace std; int main(){ int n; wh...

good vegetable! 246

UVa 10763 - Foreign Exchange

题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1704 原题: Your non-profit organization (iCORE - international Confederation

D_Double's Journey 4606

习题5-4 UVA10763 Foreign Exchange(27行AC代码)

紫书刷题进行中,题解系列【GitHub|优快云】 习题5-4 UVA10763 Foreign Exchange(27行AC代码) 题目大意 给定n个学生的出发点A和目的地B,若每个学校的被作为出发点和目的地的次数相同,则项目可以进行;否则不可 思路分析 定义map<int, int> cnt;,其中cnt[i]表示学校i对应的人数增减变化量,若有人把学校i作为出发地,则cnt[i]...

努力做个书呆儿 393
上一篇: UVA 331 - Mapping the Swaps(回溯)
下一篇: UVA 10905 - Children’s Game
coco430
博客等级 码龄14年 9粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值