2021“MINIEYE杯”中国大学生算法设计超级联赛

2023-05-16

2021“MINIEYE杯”中国大学生算法设计超级联赛

1006

  • Given a sequence of integers of length n, find the shortest consecutive subsequence witch XOR sum not less than k.

    If there are multiple consecutive subsequences of the same length, print the consecutive subsequence with the smallest left end point.

    If there are no consecutive subsequence witch XOR sum not less than k, just print “-1”.

【这道题可以说是完全给了自己一道警钟,早早的就写过trie的01树的题目,写这题的时候不仅没想到,百度知道要01trie做之后都没有思路,明明写过求最大异或的题目,害。】

​ 首先这题使用了异或前缀和的01字典树,我们可以边遍历边补充建树,遍历右端点,那么现在已有的树便是所有有可能存在左端点的一颗前缀树,每次从最高位开始找,找是否可能异或为1的点,然后维护一个到当前位置的异或值,如果大于k,则我们维护一个返回的值,而v[p]越大则区间长度越小。

解释

else
        {
            p = son[p][x];
            //if (res >= k)
              //  ans = max(ans, v[p]);
        }

因为如果p = son[p] [x],值是不会变大的,而不会变的点其实都是之前的点,是肯定会长度更长的。(每次建树每个点都是存的最后一个位置)

int n, k;
int son[30 * maxn][2], idx;
int v[30 * maxn],a[maxn];

void creat(int u,int pos)
{
    int p = 0;

    pre(i, 29, 0)
    {
        int x = u >> i & 1;
        if (son[p][x] == 0) son[p][x] = ++idx;
        p = son[p][x];
        v[p] = pos;
    }

    return;
}

int ser(int u)
{
    int ans = -1;
    int res = 0;
    int p = 0;
    pre(i, 29, 0)
    {
        int x = u >> i & 1;
        if (son[p][!x])
        {
            p = son[p][!x];
            res = res + (1 << i);
            if (res >= k)
                ans = max(ans, v[p]);
        }
        else
        {
            p = son[p][x];
            //if (res >= k)
              //  ans = max(ans, v[p]);
        }
    }

    return ans;
}

signed main()
{
    //ios::sync_with_stdio(0);
    //cin.tie(0),cout.tie(0);

    int t = read();
    while (t--)
    {
        n = read(), k = read();

        rep(i, 0, 30 * n) 
            son[i][0] = son[i][1] = 0;
        idx = 0;

        rep(i, 1, n) a[i] = read();

        int sum = 0;
        int l = -1, r = -1;
        int res = 0,minn = inf;

        rep(i, 1, n)
        {
            sum = sum ^ a[i];
            if ((res = ser(sum)) != -1)
            {
                if (minn > (i - res))
                {
                    //see1(i);
                    minn = i - res;
                    l = res + 1;
                    r = i;
                }
            }
            creat(sum, i);
        }

        if (~l)
        {
            printf("%d %d\n", l, r);
        }
        else out(-1);
    }

    return 0;
}

1009

  • Let’s call a weighted connected undirected graph of n vertices and m edges KD-Graph, if the
    following conditions fulfill:

    * n vertices are strictly divided into K groups, each group contains at least one vertice

    * if vertices p and q ( p ≠ q ) are in the same group, there must be at least one path between p and q meet the max value in this path is less than or equal to D.

    * if vertices p and q ( p ≠ q ) are in different groups, there can’t be any path between p and q meet the max value in this path is less than or equal to D.

    You are given a weighted connected undirected graph G of n vertices and m edges and an integer K.

    Your task is find the minimum non-negative D which can make there is a way to divide the n vertices into K groups makes G satisfy the definition of KD-Graph.Or −1 if there is no such D exist.

    老毛病了二分之前不想是不是满足单调性不过脑子。

首先最暴力的方法就是从1尝试到inf (X) 从0试到inf(√)但是显然会超时。

那么我们怎么样才能减小找D的次数呢,如果一个d是可行的话,那么d有可能夹在2个权值之间,而如果d可行的话,小于d的那个权值也可行,因为<=d的在一个组里面,所以其实答案就在m个权值中,如果从小到大排序,就只需要遍历1e5次了。

而每次比较都需要在某一阶段合并完成后,再去看是否满足k。

int n, m, k;
int fa[maxn];

struct nod
{
    int a, b, c;

    bool operator < (const nod& b) const&
    {
        return c < b.c;
    }

}mp[5*maxn];

int find(int x)
{
    if (fa[x] != x) fa[x] = find(fa[x]);
    return fa[x];
}

void solve()
{
    rep(i, 1, n) fa[i] = i;

    sort(mp + 1, mp + 1 + m);

    int now = n,ans = 0;

    rep(i, 1, m)  
    {
        if (mp[i].c > ans)  // 在将某一阶段合并完成后,再去比较 
        {
            if (now == k)
            {
                out(ans);
                return;
            }
        }

        if ( find(mp[i].a) == find(mp[i].b) ) continue;

        now--; // 现在有的集合数减少
        fa[find(mp[i].a)] = find(mp[i].b);
        ans = mp[i].c;

    }
    printf("%d\n", now == k ? ans : -1); //最后有一次是没有判断的
    return ;
}

signed main()
{
    //ios::sync_with_stdio(0);
    //cin.tie(0),cout.tie(0);

    int t = read();
    while (t--)
    {
        n = read(), m = read(), k = read();

        rep(i, 1, m)
        {
            int x = read(), y = read(), z = read();
            mp[i] = { x,y,z };
        }

        solve();
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021“MINIEYE杯”中国大学生算法设计超级联赛 的相关文章

  • 2021 CondaHTTPError: HTTP 000 CONNECTION FAILED for url 的问题终极解决方案

    一 首先执行命令 xff0c 查看自己的镜像源 conda config show channels 二 可以首先删除已经存在的镜像源 xff08 注 xff1a 上述三个镜像源无需删除 xff01 xff01 xff01 xff09 xf
  • Java面试复习体系总结(2021版,持续更新)

    Java面试复习体系总结 xff08 2021版 xff09 感谢各位点赞 xff0c 收藏 xff0c 关注 xff01 文章会持续更新 xff0c 继续输出更多优质内容 xff0c 希望各位都能拿到好的offer 如果在准备算法题的话
  • 2021-02-07 SONiC SAI结构2 1D Bridge

    SONiC SAI结构2 1D Bridge 以太网交换流水线结构 SONiC SAI对交换机 路由器的报文处理流程建立了标准化的行为模型 即使不同的交换芯片内部实现报文处理的方式各不相同 xff0c 由于行为模型是报文处理过程的抽象描述
  • 2021-08-20 SONiC中的FRR和Zebra

    2021 08 20 SONiC中的FRR和Zebra SONiC中采用FRR和Zebra处理路由协议 以前写过SONiC系统所默认包含的BGP模块在201811版的SONiC之前是开源的Quagga软件 xff0c 之后改成了更流行的FR
  • 2021 => 手把手搭建dhcp服务(详细)

    架构解析 dhcp服务器配置 配置实验环境 关闭VMware的dhcp服务 给虚拟机添加网卡为VMnet1 安装与配置dhcp服务 给新添的网络配置IP 配置dhcp服务 在真实的主机系统上查看dhcp配置 为真实主机系统分配固定的IP 修
  • 2021 => 手把手教你NFS部署(实用)

    NFS服务 原理 xff1a 供文件共享服务 为Web Server 配置集群中的后端存储 支持多节点同时挂载以及并发送与写入 架构解析 这是一张大型网站高并发架构图 xff0c 我们只需注意图中圈红的地方 建立NFS文件系统本质就是用来进
  • 2021最新阿里云部署k8s集群(篇1 购买服务器)

    实验kubernetes版本 xff1a v1 22 1 x1f947 阿里云地址 阿里云开发者社区 阿里云官网开发者社区 云计算社区 注意 xff1a 做此实验先准备100RM xff0c 本实验为抢占实例 CentOs版本 xff1a
  • 一文加强对React的记忆(2021 年 6 月更新),收藏再也不用查看文档、教程了

    我不经常使用 React xff0c 所以每当我需要在 React 中做最小的事情时 xff0c 我都必须查看文档 教程或在论坛上发布问题 这就是我决定做这个记忆辅助工具的原因 xff0c 鉴于我的记忆力不是那么好 xff0c 我想为什么不
  • 10 个 GitHub 上最火的程序员简历项目,2021 金三银四必备!

    大家好 xff0c 我是你们的 猫哥 xff0c 一个不喜欢吃鱼 又不喜欢喵 的超级猫 前言 猫哥是一个常年混迹在 GitHub 上的猫星人 xff0c 所以发现了不少好的前端开源项目 常用技巧 xff0c 在此分享给大家 公众号 xff1
  • 2021-02-13

    昨天学习了关于位运算的一些常识 xff0c 自己也跟着视频敲了一些位运算代码如下 xff1a package com raisecom tiap ems basic mgt domain acl import java util Array
  • 【日记 2021-05-01】 leetcode练习&& Linux修改文件权限

    题目 xff1a 1335 工作计划的最低难度 题目内容 xff1a 你需要制定一份 d 天的工作计划表 工作之间存在依赖 xff0c 要想执行第 i 项工作 xff0c 你必须完成全部 j 项工作 xff08 0 lt 61 j lt i
  • VsCode+LaTexWorkshop外置PDF预览配置(2021.3.3)

    随着插件版本的升级有些配置命令发生了改变 xff0c 这里只是做个简单记录 xff0c 写的比较粗糙 后面有闲工夫再来做做美工 VsCode一侧配置 34 latex workshop view pdf viewer 34 34 exter
  • rosdep update 超时失败2021最新解决方法

    好记性不如烂笔头 xff0c 记录方法 xff0c 方便大家 一 关于 rosdep 安装ros的最后一步是rosdep init和rosdep update xff0c rosdep是解决ros包依赖问题的一个工具 rosdep init
  • 2021数学建模E题

    E 题 中药材的鉴别 不同中药材表现的光谱特征差异较大 xff0c 即使来自不同产地的同一药材 xff0c 因其无机元素的化学成分 有机物等存在的差异性 xff0c 在近红外 中红外光谱的照射下也会表现出不同的光谱特征 xff0c 因此可以
  • 2021-02-18

    多旋翼飞行器学习笔记 二 机架设计 2 1布局设计 1 机身基本布局 交叉型 xff1a 目前常用的是X字型布局 xff0c 因为 xff1a xff08 1 xff09 机动性更强 xff1b xff08 2 xff09 前视相机的视场角
  • 2021电赛F题视觉教程+代码免费开源

    2021电赛F题视觉教程 43 代码免费开源 最近好多要电赛题的源码 xff0c 其他csdn营销号下载都需要会员或钱 xff0c 正好最近课设又要做一遍电赛小车题 xff0c 哥们先把代码开源了 xff0c 饿死营销号 电赛宝藏链接 xf
  • 2021-11-11 机械臂路径规划学习进展

    机械臂关节空间和末端空间路径规划 关节空间路径规划简单障碍物情况 xff1a 之后搭建复杂障碍物场景 xff1a 测试发现路径规划的两个步骤 xff1a 采用了关节空间进行路径规划的方案 xff0c 原因主要是在关节空间也就是构型空间中 x
  • 2021总结. 2022展望

    2021 收获了许多 技能上 学习了多个技能 自由泳自由倒立复刻拳王梅威瑟的跳绳训练单板滑雪 总结 技能上尽量是身体力行的 自从看过 囚徒健身 后 被作者的自传所影响 希望成为想他那样的人 认知上 认知上也有了提升 读了许多书 今年比较喜欢
  • 2021-10-07

    舵机PWM信号转继电器开关信号 本文由 麦粒电子 撰写 xff0c 并提供相应产品服务 叙述 航模玩家经常需要DIY改装 譬如飞行器做一个投弹的开关 xff0c 船用模型做一个投食机关 再或者弄一些彩灯控制 往往这些功能只需要有一个简单的开
  • 2021校招_大华

    大华面试 xff1a 一面和二面 一面 xff1a 首先自我介绍 1 序列化的使用方式以及情景 2 Springboot的启动过程 3 Mysq中lB 43 树和B树索引区别 xff0c 聚簇索引和非聚簇索引区别 4 Spring中bean

随机推荐

  • 【求解答】pyqt5 主界面和控制算法运行的多进程

    求解答 pyqt5 主界面和控制算法运行的多进程 有个特别头大的问题 xff0c 希望在CSDN里面能得到相关大佬的解答 呜呜呜 xff0c 无助 情况说明 xff1a 我使用了pyqt5开发深度学习算法的应用程序 xff0c 主进程是控制
  • 9 在思科路由器上配置IS-IS路由选择

  • 数码管动态静态显示原理

    8段发光二极管连接有两种结构 xff1a 共阴极和共阳极 8位数码管字段码为8位 xff0c 从高位到低位的顺序依次是dp g f e d c b a 例如共阴数码管数字0的字段码为00111111B xff08 3FH xff09 共阴极
  • Linux系统安装FFmpeg以及依赖库

    最近这两周都在搞FFmpeg的安装 xff0c 先是在windows平台上做了一个rtsp音视频流采集程序 但总监必须要我运行在Linux 平台上 xff0c 没办法 xff0c 就这样开始了我的噩梦 小白一个 xff0c 大神勿喷 附件中
  • armbian换源

    先科普一下源格式 deb http mirrors aliyun com ubuntu ports xenial main 源类型 地址 系统版本 包范围 src源 没看源码需求可以注释以加快速度 一般换源直接更换地址即可 系统版本要和自己
  • c++报错合集

    c 43 43 报错合集 未定义标识符mkdir不存在从string到const char 的转换函数C4996 39 fopen 39 This function or variable may be unsafe Consider us
  • 直方图中最大矩形面积

    原文地址 xff1a http www geeksforgeeks org largest rectangle under histogram 注意 xff1a 本文并未对原文完整翻译 xff0c 而是结合原文并根据本人理解写出 xff0c
  • 常用的第三方api汇总[获取天气]

    这里mark一下自己经常用第三方api xff0c 非商用 xff0c 适合自己学习测试使用 例如js里的fetch xff0c 不要恶意访问 xff0c 后续会慢慢补充 1 随机用户 GET请求 JSON格式 https api rand
  • 私有服务器gitlab15.1.1-ce.0.el7版本添加新用户

    1 在menu下找到admin 2 进入admin后 xff0c 点击new user 3 进入new user之后 xff0c 以下三项必填 xff0c 其中第二项不能为中文 4 之后下划 xff0c 点击creature user 系统
  • Django 项目初始化

    文章目录 初始化流程1 环境准备1 1 制定规范1 2 建立虚拟环境1 3 安装 virtualenv1 4 激活虚拟环境1 5 退出虚拟环境1 6 安装 Django 2 创建项目 project3 创建应用 application 初始
  • 优酷路由宝 OpenWrt 刷机

    优酷路由宝 OpenWrt 刷机 资源列表 优酷土豆路由宝已获取 root 权限的版本固件 下载 https biaowong lanzouu com iChJt031yeud 密码 e6otBreed 刷机工具 下载 https biao
  • 谈一下两次CSP认证从180分到380分的感想

    最近联系我的小可爱们比较多 xff0c 我用qq建了一个ccf csp考试交流群 xff0c 群号673612216 xff0c 如果感觉有用可以加一下哦 欢迎访问我的CCF认证考试题解目录哦 https blog csdn net ric
  • Deepin Linux v20+安装Calibre官方最新版的方法

    电子书阅读 管理 编辑神器 xff0c 官方提供了非常简单高效的安装脚本 xff0c 下面一句指令就可以快速安装 xff0c 非常方便 xff0c 大家可以不必安装商店里面的版本 xff0c 直接安装最新版的 安装命令 xff1a sudo
  • 硬盘安装Debian与Xp双系统

    发个debian 6 0的简单安装教程 2009年10月写了个 debian lenny的简单安装教程 xff0c 前段时间一直盼望的6 0 squeeze终于正式发布了 xff0c 所以在lenny的教程基础上进行了修改 xff0c 以满
  • c语言链表及其基本操作

    链表及其基本操作 文章目录 链表及其基本操作 一 链表是什么 xff1f 二 链表是如何实现的1 创建链表2 输出链表 三 基本操作 xff08 增删改查插 xff09 1 查找结点2 删除结点3 插入结点4 清空结点 做为一名 新生蒟蒻来
  • 湖南大学第十六届程序设计竞赛

    湖南大学第十六届程序设计竞赛 https ac nowcoder com acm contest 18196 description D 遇到这种题 xff0c 其实可以去大胆点找规律 正解是对于排位的期望 xff0c 我们只需要在意排的位
  • VS2010中CString Format出错

    VS2010中 Format 用法 xff1a 我在项目中需要实现一个字符串的转化 xff0c 代码如下 xff1a CString mess int x y x 61 640 y 61 480 mess Format 34 当前为 xff
  • 数据库MySQL安装方法:官网下载安装、国内镜像源安装

    一 官网下载安装 xff08 MySQL Download MySQL Yum Repository xff09 下载rpm包 xff0c 上传到虚拟机上 xff08 rz命令 xff09 root 64 localhost ls 在官网下
  • 输出函数print的用法

    print函数的作用 xff1a 可以将想要展示的内容输出在d IDLE上或者输出在文件中 print xff08 xff09 函数的使用 xff1a 1 print xff08 xff09 函数输出的内容可以是数字 2 print xff
  • 2021“MINIEYE杯”中国大学生算法设计超级联赛

    2021 MINIEYE杯 中国大学生算法设计超级联赛 1006 Given a sequence of integers of length n find the shortest consecutive subsequence witc