ZCMU - 1992: Swiss-system tournament

简介: ZCMU - 1992: Swiss-system tournament

题目链接:点击打开链接


题目大意:给出 2*n 个人,每次第1个人和第2个人比赛,第3个人和第4个人比赛…进行 r 轮比赛,每轮比完赛都进行排名,求出最后第 q 名是谁。能力大的获胜,获胜的加 1分,输了的加 0分。


解题思路:归并排序思想,每轮比赛,把赢者放一组,输者放一组,这样单个数组t1/t2也是有序的,然后进行合并也能保证数组nds有序。


AC 代码

#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a)
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=1e5*2+10;
int len;
struct node
{
    int id,score,power;
}nds[maxn],t1[maxn],t2[maxn];
int cmp(node n1,node n2)
{
    return n1.score==n2.score?n1.id<n2.id:n1.score>n2.score;
}
void mergeArr()
{
//    printf("Before Merge :\n");
    /* nds因为第一次sort过,所以接下来分别分为 胜利组t1 和 失败组t2 */
    int k1=1,k2=1;
    for(int i=1;i<=len;i+=2)
    {
        if(nds[i].power>nds[i+1].power)
            nds[i].score++,t1[k1++]=nds[i],t2[k2++]=nds[i+1];
        else
            nds[i+1].score++,t1[k1++]=nds[i+1],t2[k2++]=nds[i];
    }
//    for(int i=1;i<k1;i++)
//    {
//        printf("%d ",t1[i].id);
//    }
//    puts("");
//    for(int i=1;i<k1;i++)
//    {
//        printf("%d ",t1[i].score);
//    }
//    puts("");
//
//    for(int i=1;i<k2;i++)
//    {
//        printf("%d ",t2[i].id);
//    }
//    puts("");
//    for(int i=1;i<k2;i++)
//    {
//        printf("%d ",t2[i].score);
//    }
//    puts("");
//
//    printf("After Merge :\n");
    /* 胜利组t1 和 失败组t2 合并为nds,而且一定保证是有序的,节省了原生归并排序的mergeSort步骤 */
    int i=1,j=1,k=1;
    while(i<k1&&j<k2)
    {
        if(t1[i].score>t2[j].score)
            nds[k++]=t1[i++];
        else if(t1[i].score==t2[j].score)
            t1[i].id<t2[j].id ? nds[k++]=t1[i++] : nds[k++]=t2[j++];
        else
            nds[k++]=t2[j++];
    }
    while(i<k1)
        nds[k++]=t1[i++];
    while(j<k2)
        nds[k++]=t2[j++];
//    for(i=1;i<=len;i++)
//    {
//        printf("%d ",nds[i].id);
//    }
//    puts("");
//    for(i=1;i<=len;i++)
//    {
//        printf("%d ",nds[i].score);
//    }
//    puts("");
}
//void mergeSort(int first, int last) // TLE
//{
//    if(first<last)
//    {
//        int m=first+((last-first)>>1);
//        mergeSort(first,m);
//        mergeSort(m+1,last);
//        mergeArr(first,m,last);
//    }
//}
int main()
{
    int T; scanf("%d",&T);
    int n,r,q;
    while(T-- && ~scanf("%d%d%d",&n,&r,&q))
    {
        len=2*n;
        for(int i=1;i<=len;i++)
        {
            nds[i].id=i;
            scanf("%d",&nds[i].score);
        }
        for(int i=1;i<=len;i++) scanf("%d",&nds[i].power);
        sort(nds+1,nds+1+len,cmp);
        for(int i=1;i<=r;i++)
        {
            mergeArr();
        }
        printf("%d\n",nds[q].id);
    }
    return 0;
}


/

目录
相关文章
|
人工智能 API 开发工具
ChatGPT 人工智能助理 Assistant
Assistants API 让你构建定制化的AI助手,通过指令引导助手运用模型、工具和知识回应查询。核心模块包括名称、指令、模型选择(如GPT-4)、工具(如Code Interpreter)及知识检索。需注意,免费账户限制较多,建议使用付费账户以获得完整体验。可通过界面操作或Python SDK实现助手创建、线程管理及信息交互等功能。相关资源包括官方文档和体验平台。
|
安全 Java
Java模拟生产者-消费者问题。生产者不断的往仓库中存放产品,消费者从仓库中消费产品。其中生产者和消费者都可以有若干个。在这里,生产者是一个线程,消费者是一个线程。仓库容量有限,只有库满时生产者不能存
该博客文章通过Java代码示例演示了生产者-消费者问题,其中生产者在仓库未满时生产产品,消费者在仓库有产品时消费产品,通过同步机制确保多线程环境下的线程安全和有效通信。
|
BI 数据格式
如何快速将txt类型的日志文件转换为excel表格并进行数据分析报表统计图(如:饼图、折线图、柱状图)?
如何快速将txt类型的日志文件转换为excel表格并进行数据分析报表统计图(如:饼图、折线图、柱状图)?
|
21小时前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
1890 9
|
12天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
5912 54
|
1天前
|
人工智能 安全 机器人
2026版OpenClaw(Clawdbot)部署指南:Windows本地+阿里云上集成方案,无缝对接飞书机器人
在AI智能体工具爆发的2026年,OpenClaw(前身为Clawdbot、Moltbot)凭借“高权限系统操作+多平台即时通讯对接”的核心优势,成为个人与企业部署私有AI助手的首选。这款开源工具支持通过飞书、Telegram、Discord等常用聊天软件,实现文件读写、日程管理、系统命令执行、多模型调用等多样化功能,真正做到“聊天框里搞定所有事”。
1240 5
|
7天前
|
存储 人工智能 负载均衡
阿里云OpenClaw多Agent实战宝典:从极速部署到AI团队搭建,一个人=一支高效军团
在AI自动化时代,单一Agent的“全能模式”早已无法满足复杂任务需求——记忆臃肿导致响应迟缓、上下文污染引发逻辑冲突、无关信息加载造成Token浪费,这些痛点让OpenClaw的潜力大打折扣。而多Agent架构的出现,彻底改变了这一现状:通过“单Gateway+多分身”模式,让一个Bot在不同场景下切换独立“大脑”,如同组建一支分工明确的AI团队,实现创意、写作、编码、数据分析等任务的高效协同。
2418 27
|
29天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
41480 156
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API