[!note] 比赛链接 https://ac.nowcoder.com/acm/contest/953231

A.茕茕孑立之影

题目标签

构造 数论

题目大意

找到一个数x,x和长度为n的数组中的数互不为倍数,找不到输出-1,否则输出这个数.

解题思路

  • 数组中出现1,则输出-1,任何数都是1的倍数
  • 其他情况下输出范围内的最大数即可 (1e9+7
#include <bits/stdc++.h>
using namespace std; void solve(){
int n;cin >> n;
int arr[n];
for(int i=0;i<n;i++){
cin >> arr[i];
} for(auto x : arr){
if(x == 1) {
cout << -1 << endl;
return;
}
} int ans = 1e9 + 7;
cout << ans << endl ;
} int main(){
int t;cin >>t;
while(t--){
solve();
} return 0;
}

B. 一气贯通之刃

题目标签

图论

题目大意

在树上寻求简单路径问题,路径不重复不遗漏所有节点,不存在这个路径输出-1

解题思路

#include <bits/stdc++.h>
using namespace std; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n;
cin >> n;
vector<int> d(n+1);
for (int i =0; i<n-1;i++) ~{
int u,v;
cin>>u>>v;
d[u]++;
d[v]++;
} bool b = true;
vector<int> l;
for (int i=1;i<=n;i++) {
if (d[i] > 2) b = false;
if (d[i] == 1) l.push_back(i);
} if (b && l.size() == 2)
cout << l[0] << ' ' << l[1] << endl;
else
cout << -1 << endl; return 0;
}

虽然AB解出来了,但是写都写了就不舍得删掉了 留着把


E. 双生双宿之错

题目描述

小红定义一个数组是“双生数组”,当且仅当该数组大小为偶数,数组的元素种类恰好为2种,且这两种元素的出现次数相同。例如 \(\{1, 1, 4, 4, 1\}\) 是双生数组。

现在小红拿到了一个长度为偶数的数组,她可以进行若干次操作,每次操作将选择一个元素,使其加1或者减1。小红希望你计算将该数组变成双生数组的最小操作次数。

输入描述:

每个测试文件均包含多组测试数据。第一行输入一个整数 \(T (1 \leq T \leq 10^4)\) 代表数据组数,每组测试数据描述如下:

  • 第一行输入一个正偶数 \(n (2 \leq n \leq 10^5)\) 代表数组元素数量。
  • 第二行输入 \(n\) 个正整数 \(a_1, a_2, \ldots, a_n (1 \leq a_i \leq 10^9)\) 代表数组元素。

除此之外,保证单个测试文件的 \(n\) 之和不超过 \(10^5\)。

输出描述:

对于每组测试数据,新起一行。输出一个整数,代表将该数组变成双生数组的最小操作次数。

测试用例

示例1
  • 输入
3
4
1 1 3 1
4
6 6 6 6
6
1 1 4 4 1 4
  • 输出
2
2
0

解题思路

现将数组排序,分成前后两端,分别找出中位数,然后计算出操作次数,若前后中位数相同,前段-1 或后段+1 取最优解。

AC代码

#include <bits/stdc++.h>
using ll = long long;
using namespace std;
#define all(a) a.begin(), a.end()
#define endl '\n'
#define ios ios::sync_with_stdio(false), cin.tie(0), cout.tie(0) void solve(){
int n;
cin >> n; vector<int> a(n);
for(auto &x : a) cin >> x;
sort(all(a)); int h = n / 2;
int ml = a[h /2],mr = a[h + h/2]; ll ans = LLONG_MAX;
for(auto xl : {ml,ml - 1}){
for(auto xr : {mr,mr + 1}){
if(xl == xr){
continue;
} ll res = 0;
for (int i = 0; i < h; i++){
res += abs(a[i] - xl);
res += abs(a[h + i] - xr);
}
ans = min(ans,res);
}
} cout << ans << endl; }
signed main(){
ios;
int _ = 1;
cin >> _;
while (_--) solve(); return 0;
}

M. 数值膨胀之美

题目描述

定义一个数组的极差为:数组的元素最大值减去最小值。

小红拿到了一个数组,她准备进行恰好一次操作:选择一个非空区间,将其中所有元素都乘以 2。

小红希望最小化数组的极差,你能帮帮她吗?

输入描述

第一行输入一个正整数 $( n \ (1 \leq n \leq 10^5) ) $代表数组中的元素数量。

第二行输入 $ n $个正整数 $( a_1, a_2, \ldots, a_n \ (1 \leq a_i \leq 10^9) ) $代表数组元素。

输出描述

输出一个整数,代表操作恰好一次后,数组的最小极差。

解题思路

优先将最小值翻倍,扩大区间时应从最小值往次小值从小到大扩展

赛时代码

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n' int _=1; void solve(){
int n;cin >> n;
vector<int > a(n);
for(int i=0;i<n;i++){
cin >> a[i];
} sort(a.begin(),a.end());
int t_max,t_min;
t_max = a[n-1];
t_min = a[0]; if(t_max == t_min) {
cout << 0 << endl;
return;
} int n_max=a[n-2];
int n_min=a[1]; int diff1 = abs (max(t_max,t_min*2) - min(t_min*2,n_min));
int diff2 = abs (max(t_max*2,n_max) - min(t_min*2,n_min)); cout << abs(min(diff1,diff2)); } signed main(){
//cin >> _;
while(_--){
solve();
} return 0;
}

~~赛时使用差分进行计算,由于数据弱了,蒟蒻骗到AC,赛后增强hack数据,该方法已经失效、

AC代码

~~没有,蒟蒻就会这么多了 >v< 也有可能是前世的记忆还未恢复,后面的区域,以后再来探索把 )

End...

2025牛客寒假算法基础集训营1 (E)的更多相关文章

  1. 2020牛客寒假算法基础集训营2 J题可以回顾回顾

    2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...

  2. 2020牛客寒假算法基础集训营1 J题可以回顾回顾

    2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...

  3. Applese 的毒气炸弹 G 牛客寒假算法基础集训营4(图论+最小生成树)

    链接:https://ac.nowcoder.com/acm/contest/330/G来源:牛客网 Applese 的毒气炸弹 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262 ...

  4. 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)

    链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  5. 牛客寒假算法基础集训营4 I题 Applese 的回文串

    链接:https://ac.nowcoder.com/acm/contest/330/I 来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如--判断一个字符串是不是回文串. ...

  6. 牛客寒假算法基础集训营4 I Applese 的回文串

    链接:https://ac.nowcoder.com/acm/contest/330/I来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如……判断一个字符串是不是回文串. ...

  7. 牛客寒假算法基础集训营2 【处女座与复读机】DP最小编辑距离【模板题】

    链接:https://ac.nowcoder.com/acm/contest/327/G来源:牛客网 一天,处女座在牛客算法群里发了一句“我好强啊”,引起无数的复读,可是处女座发现复读之后变成了“处女 ...

  8. 欧拉函数-gcd-快速幂(牛客寒假算法基础集训营1-D-小a与黄金街道)

    题目描述: 链接:https://ac.nowcoder.com/acm/contest/317/D来源:牛客网小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们拿 ...

  9. 牛客寒假算法基础集训营3处女座和小姐姐(三) (数位dp)

    链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  10. 牛客寒假算法基础集训营4 F Applese 的大奖

    链接:https://ac.nowcoder.com/acm/contest/330/H来源:牛客网 Applese 和它的小伙伴参加了一个促销的抽奖活动,活动的规则如下:有一个随机数生成器,能等概率 ...

随机推荐

  1. Flink 1.10中idea运行出错invalid flag

    今日好奇,下载Flink 1.10的源码在本机玩一玩. 将工程按照正常流程导入IDEA后,运行flink-examples中的demo竟出现如下错误 Error:java: invalid flag: ...

  2. NET 6 中新增的LINQ 方法

    .NET 6 中添加了许多 LINQ 方法. 下表中列出的大多数新方法在 System.Linq.Queryable 类型中具有等效方法. 欢迎关注 如果你刻意练习某件事情请超过10000小时,那么你 ...

  3. Java基础 —— 泛型

    泛型  泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 理解  为了可以进一步理解泛型,我们先来看一个问题 需求:  编写一个程序,在ArrayList中添加三个对象,类 ...

  4. 浅谈右值引用 移动语义 完美转发 std::move std::forward,窥探模板元编程的一角

    右值引用 移动语义 完美转发具体是什么,就不说了,网上一搜一大堆,主要介绍下std::move和std::forward std::move std::forward 查下源码,gcc版本:gcc v ...

  5. uni-app项目uview的表单验证在小程序上不生效

    前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app,在uniapp生态中u ...

  6. VMpwn总结

    前言: 好久没有更新博客了,关于vm的学习也是断断续续的,只见识了几道题目,但是还是想总结一下,所谓vmpwn就是把出栈,进栈,寄存器,bss段等单独申请一块空闲实现相关的功能,也就是说一些汇编命令通 ...

  7. The 2nd GUAT Collegiate Programming Contest (Round 1)

    第二届 GUAT大学生程序设计大赛 第一场 题解(A-M) 前言 比赛的内容主要包括计算机科学的常用算法,基本的计算理论,(如:离散数学,具体数学,组合数学基础),数据结构基础,程序设计语言(规定是C ...

  8. Lummmax 雷曼克斯 翔龙 X15 专业对讲机常用功能

    Lummmax 雷曼克斯 翔龙 X15 专业对讲机常用功能 工作模式切换 ESC/M 在频率模式 (VFO) 与信道模式之间切换 编辑信道 在频率模式 (VFO) 下,输入目标频率并进行相关设置之后, ...

  9. Ubuntu 22.04 LTS 代号已经公布:那就是 Jammy Jellyfish

    Ubuntu 22.04 LTS 代号已在 Ubuntu 开发之家 Launchpad 上公布. 在字母系列中的字母"I"之后,是"J". 因此,Canonic ...

  10. Docker学习笔记(一) - Docker安装

    1.安装yum-utils yum install yum-utils device-mapper-persistent-data lvm2 复制 安装yum-utils是为方便添加yum源使用的,d ...