牛客练习赛108

article/2025/10/19 20:06:55

A.惊鸿

链接:https://ac.nowcoder.com/acm/contest/51208/A

来源:牛客网

题目描述

云浅有四个正整数 a1,a2,a3,a4a_1,a_2,a_3,a_4a1,a2,a3,a4。

她可以进行任意次操作,每次操作中,她可以选出某两个 ai,aja_i,a_jai,aj,然后将 aia_iai 变为 ai or aja_i\text{ or }a_jai or aj。其中 or\text{or}or 是位或运算。

她想要最大化 a1+a2+a3+a4a_1+a_2+a_3+a_4a1+a2+a3+a4 的值。你需要帮她求出这个最大值。

输入描述:

本题有多组数据。第一行一个正整数 TTT 表示数据组数。

每组数据会输入四个非负整数 a1,a2,a3,a4a_1,a_2,a_3,a_4a1​,a2​,a3​,a4​,并换行。

对于 100%100\%100% 的数据,1≤T≤104,0≤a1,a2,a3,a4<2291\le T\le 10^4,0\le a_1,a_2,a_3,a_4<2^{29}1≤T≤104,0≤a1​,a2​,a3​,a4​<229。

输出描述:

对于每组数据,输出一行一个非负整数表示 a1+a2+a3+a4a_1+a_2+a_3+a_4a1​+a2​+a3​+a4​ 的最大值。

示例1

输入

复制

2

1 1 4 5

1 2 3 4

输出

复制

20

28

#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 4;int T;
int a[N], w[N];int main()
{scanf ("%d", &T);while (T -- ){memset(w, 0, sizeof w);LL res = 0;for (int i = 0; i < 4; i ++ ) scanf ("%d", &a[i]);for (int i = 0; i < 4; i ++ ){for (int j = 0; j < 4; j ++ )a[i] = max(a[i], a[i] | a[j]);}for (int i = 0; i < 4; i ++ ) res += a[i];printf ("%lld\n", res);}return 0;
}

B.风间

示例1

输入

复制

4

3

1 3 5

5 3 1

4

1 3 5 7

2 4 6 8

5

1 2 3 4 5

5 4 3 2 1

4

1 1 4 5

5 4 1 1

输出

复制

4

-1

10

-1

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 100010;typedef long long LL;int n;
int a[N], b[N];int main()
{int T;scanf ("%d", &T);while (T -- ){LL ra = 0, rb = 0;bool flag = true;scanf ("%d", &n);for (int i = 1; i <= n; i ++ ) scanf ("%d", &a[i]);for (int i = 1; i <= n; i ++ ) scanf ("%d", &b[i]);LL cnt = 0;for (int i = 1; i <= n; i ++ ){if (a[i] % 2 != b[i] % 2){flag = false;break;}else cnt += (abs(a[i] - b[i]) / 2);}if (!flag) puts("-1");else printf ("%lld\n", cnt);}return 0;
}

C.梦迹

示例1

输入

复制

4 3 6

1 0 4 6

2 2

4 4

1 2

输出

复制

5

7

7

树状数组:

代码:

#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N = 300010;int n, q, w;
LL tr[N], a[N];
LL ans;int lowbit(int x)
{return x & (-x);
}void add(int x, int c)
{for (int i = x + 1; i < N; i += lowbit(i)) tr[i] += c;
}LL query(int x)
{LL res = 0;for (int i = x + 1; i; i -= lowbit(i)) res += tr[i];return res;
}int main()
{scanf ("%d%d%d", &n, &q, &w);for (int i = 1; i <= n; i++){scanf ("%lld", &a[i]);add(a[i], 1);ans += query(w - a[i]);}while (q--){int p, x; cin >> p >> x;ans -= query(w - a[p]);add(a[p], -1);a[p] = x;add(a[p], 1);ans += query(w - a[p]);printf ("%lld\n", ans);}return 0;
}

D.Small Cloud Sugar Candy

示例1

输入

复制

2

5 4

1 1 4

5 1 4

2 3 3

3 4 1

4 4

1 2 3

2 4 1

1 3 2

3 4 1

输出

复制

2 2 1 0 2

-1

代码:

#include <bits/stdc++.h>using namespace std;#define x first
#define y second
typedef pair<int, long long> PII;
typedef long long LL;
const int N = 200010, mod = 998244353;
const long long INF = 1e18;int a[N], r[N];
LL c[N], ans[N], q[N << 4];
vector<PII> V[N];
bool flag;void bfs(int S)
{int hh = 0, tt = 0;q[tt ++ ] = S;LL val = INF;c[S] = 0, a[S] = 1;while(hh < tt){int x = q[hh ++ ];r[x] = 1;if(ans[x] != INF){LL temp = (ans[x] - c[x]) / a[x];if(val == INF)val = temp;else if(val != temp)flag = false;}if(!flag) return;for(auto it : V[x]){int y = it.x;LL z  = it.y;LL c1 = z - c[x];int b1 = -a[x];if(r[y] == 0){q[tt ++ ] = y;c[y] = c1;a[y] = b1;}else{LL c2 = c[y];int b2 = a[y];if(b1 == b2){if(c1 != c2)flag = false;}else if(abs(c2 - c1) & 1){flag = false;}else{LL temp = (c2 - c1) / (b1 - b2);if(val == INF)val = temp;else if(val != temp)flag = false;}}}}if(!flag)return;if(val == INF)val = 0;hh = 0, tt = 0;q[tt ++ ] = S;r[S] = 2;while(hh < tt){int x = q[hh ++ ];ans[x] = c[x] + a[x] * val;for(auto it : V[x]){int y = it.first;if(r[y] == 1){q[tt ++ ] = y;r[y] = 2;}}}
}int main()
{int T;scanf ("%d", &T);while (T -- ){flag = true;int n, m;scanf ("%d%d", &n, &m);for (int i = 1; i <= n; i ++ ){V[i].clear();ans[i] = INF;a[i] = r[i] = c[i] = 0;}for (int i = 1; i <= m; i ++ ){int x, y, z;scanf ("%d%d%d", &x, &y, &z);if (x == y){if (z % 2) flag = false;else{if (ans[x] == INF) ans[x] = z / 2;else if (ans[x] != z / 2) flag = false;}}else{V[x].push_back({y, z});V[y].push_back({x, z});}}for (int i = 1; i <= n; i ++ )if (ans[i] == INF) bfs(i);if (!flag) puts("-1");else{for (int i = 1; i <= n; i ++ ) printf ("%lld ", ans[i]);puts("");}}return 0;
}

http://chatgpt.dhexx.cn/article/H5vZKcJ0.shtml

相关文章

股票和期货的108个区别(股票和期货的108个区别pdf)

期货和股票有什么区别 股票与期货的区别&#xff1a; 股票是股份公司发行的所有权凭证&#xff0c;是股份公司为筹集资金而发行给各个股东作为持股凭证并借以取得股息和红利的一种有价证券&#xff0c;每股股票都代表股东对企业拥有一个基本单位的所有权。期货是以某种大众产…

《缠中说禅108课》16:中小资金的高效买卖法

上章说过&#xff0c;市场任何品种任何周期下的走势图&#xff0c;都可以分解成上涨、下跌、盘整三种基本情况的组合。上涨、下跌构成趋势&#xff0c;如何判断趋势与盘整&#xff0c;是判断走势的核心问题。一个最基本的问题就是&#xff0c;走势是分级别的&#xff0c;在 30 …

ngrok 错误 ERR_NGROK_108,并且有时闪退

ngrok 内网穿透报错闪退 ERROR: authentication failed: Your account is limited to 1 simultaneous ngrok agent session. ERROR: You can run multiple tunnels on a single agent session using a configuration file. ERROR: To learn more, see https://ngrok.com/do…

108原稿

108事件委托 就是把我要做的事情委托给别人来做 因为我们的冒泡机制&#xff0c;点击子元素的时候&#xff0c;也会同步触发父元素的相同事件 我们就可以把子元素的事件委托给父元素来做 //减少多个函数的绑定的性能损耗 //动态添加li&#xff0c;也会有事件处理 109正则表达…

JavaOOP面试题(108道)

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java面试题…

108.(cesium篇)cesium初始定位动画

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <

cmd 108个常用命令,看看你知道多少

背景 一、CMD是什么 在不同的操作系统环境下&#xff0c;命令提示符各不相同&#xff0c;在Windows环境下&#xff0c;命令行程序为cmd.exe&#xff0c;是一个32 位的命令行程序。 cmd是指命令提示符&#xff0c;是在操作系统中&#xff0c;提示进行命令输入的一种工作提示符…

LeetCode-108

将有序数组转换为二叉搜索树 题目 给一个整数数组 nums &#xff0c;其中元素已经按升序排列&#xff0c;请你将其转换为一棵高度平衡二叉搜索树。 高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例 输入&#xff1a;nums [-10,-…

华为机试108题(C 语言解答)

Nowcoder题库链接&#xff1a;华为机试 HJ1 字符串最后一个单词的长度&#xff08;字符串&#xff09; 输入&#xff1a;hello nowcoder输出&#xff1a;8说明&#xff1a; 最后一个单词为nowcoder&#xff0c;长度为8 示例代码: HJ1.c #include <stdio.h> #include &l…

米哈游108薪年终奖,假的

记者丨鄢子为 韩璐 编辑丨鄢子为 米哈游年终奖发108个月的工资&#xff1f;假的。 1月12日&#xff0c;针对“年终奖108薪”的消息&#xff0c;米哈游方面回应《21CBR》记者称&#xff0c;消息不实。 之所以有这样的流言传出&#xff0c;或许是因为米哈游现金流充沛&#xff0c…

【计算机毕业设计】108精品在线试题库系统

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 使用旧方法对作业管理信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在作业管理信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;…

详细解释数据挖掘的十大算法

在一份调查问卷中&#xff0c;三个独立专家小组投票选出的十大最有影响力的数据挖掘算法&#xff0c;今天我打算用简单的语言来解释一下。 一旦你知道了这些算法是什么、怎么工作、能做什么、在哪里能找到&#xff0c;我希望你能把这篇博文当做一个跳板&#xff0c;学习更多的数…

数据挖掘领域十大经典算法之—EM算法

相关文章&#xff1a; 数据挖掘领域十大经典算法之—C4.5算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—K-Means算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—Apriori算法数据挖掘领域十大经典算法之—EM算法数据挖掘领域十大…

数据挖掘经典十大算法_ID3算法

一、ID3算法介绍 ID3算法通过自顶向下的方式构建一棵决策树来进行学习&#xff0c;每一次选择的是当前样本集中具有最大信息增益的属性作为测试属性。样本集根据测试属性的属性值进行划分&#xff0c;测试属性有多少取值就能够将样本属性划分为多少子样本集。 构建决策树&…

常用数据挖掘算法

本文对数据挖掘的基础理论&#xff0c;做个框架性的总结概要&#xff0c;罗列一些通用的数据挖掘的算法和思路&#xff0c;对于自己来讲是一个回顾&#xff0c;同时也便于自己以后查阅。 频繁模式挖掘&#xff0c;关系挖掘&#xff0c;以及相互关系挖掘 所谓频繁模式挖掘&…

【数据挖掘】数据挖掘简介及十大经典算法

数据挖掘十大经典算法系列&#xff0c;点击链接直接跳转&#xff1a; 数据挖掘简介及十大经典算法&#xff08;大纲索引&#xff09; 1. 数据挖掘十大经典算法之——C4.5 算法 2. 数据挖掘十大经典算法之——K-Means 算法 3. 数据挖掘十大经典算法之——SVM 算法 4. 数据挖掘十…

数据挖掘十大经典算法 整理

数据挖掘的主要任务是分类、聚类、关联分析、预测、时序模式和偏差分析。 &#xff08;一&#xff09;C4.5 算法 C4.5算法是机器学习中的一种分类决策树算法&#xff0c;其核心是ID3 算法&#xff0c;C4.5算法继承了ID3算法的优点&#xff0c;并在以下几方面对ID3算法进行了改…

数据挖掘领域十大经典算法之—SVM算法(超详细附代码)

相关文章&#xff1a; 数据挖掘领域十大经典算法之—C4.5算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—K-Means算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—Apriori算法数据挖掘领域十大经典算法之—EM算法数据挖掘领域十大…

数据挖掘十大算法--Apriori算法

一、Apriori 算法概述 Apriori 算法是一种最有影响力的挖掘布尔关联规则的频繁项集的 算法&#xff0c;它是由Rakesh Agrawal 和RamakrishnanSkrikant 提出的。它使用一种称作逐层搜索的迭代方法&#xff0c;k- 项集用于探索&#xff08;k1&#xff09;- 项集。首先&#xff0c…

数据挖掘领域十大经典算法之—AdaBoost算法(超详细附代码)

相关文章&#xff1a; 数据挖掘领域十大经典算法之—C4.5算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—K-Means算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—SVM算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经…