当前位置: 首页 > article >正文

Hello 2025

在这里插入图片描述

Hello 2025

A. MEX Table

题意:

给出 0 到 n ∗ m − 1 的数字,排列成 n × m 的表格,最大化 ∑ i = 1 n mex ⁡ ( { a i , 1 , a i , 2 , … , a i , m } ) + ∑ j = 1 m mex ⁡ ( { a 1 , j , a 2 , j , … , a n , j } ) 给出0到n*m-1的数字,排列成n×m的表格,最大化\sum\limits_{i = 1}^{n} \operatorname{mex}(\{a_{i,1}, a_{i,2}, \ldots, a_{i,m}\}) + \sum\limits_{j = 1}^{m} \operatorname{mex}(\{a_{1,j}, a_{2,j}, \ldots, a_{n,j}\}) 给出0nm1的数字,排列成n×m的表格,最大化i=1nmex({ai,1,ai,2,,ai,m})+j=1mmex({a1,j,a2,j,,an,j})

思路:

取行列中最大的值 m , 0 所在的另一行 / 列为 1 ,其余均为 0 ,最大值 取行列中最大的值m,0所在的另一行/列为1,其余均为0,最大值 取行列中最大的值m0所在的另一行/列为1,其余均为0,最大值
为 m + 1 。 为m+1。 m+1

AC code:

void solve() {   
    int n, m; cin >> n >> m;
    cout << max(n, m) + 1 << endl;
} 

B. Gorilla and the Exam

题意:

定义将数组 b 清空的方式,每次选取任意长度区间并任选一个值 x 将 定义将数组b清空的方式,每次选取任意长度区间并任选一个值x将 定义将数组b清空的方式,每次选取任意长度区间并任选一个值x
区间中等于 x 的元素删除 ; 区间中等于x的元素删除; 区间中等于x的元素删除;

现在可以将数组 b 中最多 k 个元素任意改变,求操作后最少需要多少 现在可以将数组b中最多k个元素任意改变,求操作后最少需要多少 现在可以将数组b中最多k个元素任意改变,求操作后最少需要多少
次操作可以删除数组 b 。 次操作可以删除数组b。 次操作可以删除数组b

思路:

每次删除操作即删除当前数组中相同的元素, m a p 记录一下不同元 每次删除操作即删除当前数组中相同的元素,map记录一下不同元 每次删除操作即删除当前数组中相同的元素,map记录一下不同元
素的个数,从数量少的元素开始修改即可。 素的个数,从数量少的元素开始修改即可。 素的个数,从数量少的元素开始修改即可。

AC code:

void solve() {   
    int n, k; cin >> n >> k;
    vector<int> v(n + 1);
    map<int, int> mp;
    for (int i = 1; i <= n; i ++) {
        cin >> v[i];
        mp[v[i]] ++;
    }
    vector<int> ca;
    for (auto [x, y] : mp) ca.push_back(y);
    sort(ca.begin(), ca.end());
    int ans = ca.size();
    for (auto x : ca) {
        if (x > k) break;
        k -= x; 
        ans --;
    }
    cout << max(1LL, ans) << endl;
} 

C. Trip to the Olympiad

题意:

从 l 到 r 的区间内任选三个不同的元素,使得 ( a ⊕ b ) + ( b ⊕ c ) + ( a ⊕ c ) 的值最大 从l到r的区间内任选三个不同的元素,使得(a \oplus b) + (b \oplus c) + (a \oplus c)的值最大 lr的区间内任选三个不同的元素,使得(ab)+(bc)+(ac)的值最大

思路:

首先通过打表可以发现最大值情况的三元素总会出现相邻的情况, 首先通过打表可以发现最大值情况的三元素总会出现相邻的情况, 首先通过打表可以发现最大值情况的三元素总会出现相邻的情况,
所以可以通过定位其中一个元素的方式来找到其余两个; 所以可以通过定位其中一个元素的方式来找到其余两个; 所以可以通过定位其中一个元素的方式来找到其余两个;

通过由高到低逐位比较最大最小元素的二进制前缀,找到最高的不 通过由高到低逐位比较最大最小元素的二进制前缀,找到最高的不 通过由高到低逐位比较最大最小元素的二进制前缀,找到最高的不
同位,在这之前的相同前缀无贡献; 同位,在这之前的相同前缀无贡献; 同位,在这之前的相同前缀无贡献;

所取的值要在范围内尽可能的大,所以累加无贡献但存在的位, 所取的值要在范围内尽可能的大,所以累加无贡献但存在的位, 所取的值要在范围内尽可能的大,所以累加无贡献但存在的位,
以及不同的最高位,即为定位的元素; 以及不同的最高位,即为定位的元素; 以及不同的最高位,即为定位的元素;

找到定位元素 x 取其前后即为所求,特殊的,对于定位元素 x 为边界 找到定位元素x取其前后即为所求,特殊的,对于定位元素x为边界 找到定位元素x取其前后即为所求,特殊的,对于定位元素x为边界
值 r 时,取 x − 2 , x − 1 值r时,取x-2,x-1 r时,取x2,x1

AC code:

void solve() { 
    int l, r; cin >> l >> r;
    int sum = 0, pos = 30;
    while (pos --) {
        int now = (1LL << pos);
        if ((l & now) != (r & now)) break;
        if ((l & now)) sum += now;
    }
    int cnt = (1LL << pos) + sum;
    if (r == cnt) cout << cnt - 2 << ' ' << cnt - 1 << ' ' << cnt << endl;
    else cout << cnt - 1 << ' ' << cnt << ' ' << cnt + 1 << endl;
} 

http://www.kler.cn/a/468541.html

相关文章:

  • (六)优化 ChatGPT 交互:任务式 Prompt 的力量
  • 神经网络第一课
  • 条件期望窥探
  • salesforce 可以为同一个简档的同一个 recordtype 的对象设置多种页面布局吗
  • 权限掩码umask
  • Neo4j的部署和操作
  • 《机器学习》从入门到实战——决策树
  • 记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)
  • 算法13、基础二分查找的应用(木根切割等)
  • kubernetes-循序渐进了解coredns
  • 打造三甲医院人工智能矩阵新引擎(二):医学影像大模型篇--“火眼金睛”TransUNet
  • Spring Boot教程之四十九:Spring Boot – MongoRepository 示例
  • 【数据结构与算法:二、线性表】
  • Zookeeper模式安装Kafka(含常规、容器两种安装方式)
  • SpringBoot的6种API请求参数读取方式
  • 【C++】P1428 小鱼比可爱
  • Unity开发2d游戏全套教程[入门案例]
  • 0-基于蚁群优化和带注意力机制的循环神经网络的新型混合算法用于解决旅行商问题(HAL science)(完)
  • 【数据结构与算法:五、树和二叉树】
  • Springboot使用Rabbitmq的延时队列+死信队列实现消息延期消费
  • 快速将索尼手机联系人导出为 HTML 文件
  • 2024 年度时序数据库 IoTDB 论文总结
  • From matplotl1b.path 1mport failed to import ImportError:numpy.core.multiarray
  • CentOS — 群组管理
  • NVIDIA DLI课程《NVIDIA NIM入门》——学习笔记
  • 【USRP】教程:在Macos M1(Apple芯片)上安装UHD驱动(最正确的安装方法)