模拟题1(考虑周全以及情况较多)

牛客小白月赛96(重现赛)D题

题目解析以及注意事项

该题主要是找线路最多和最少的各种情况,从而达到整体连通图的构建代价最小的情况。
注意事项:a,b的正负影响着这个图的线尽可能的多还是少
思路图
{ a ≥ b { b < 0 a < 0 : 能连的线都连上 b < 0 a ≥ 0 :奇偶性不同线能连的的全连上 b > 0 :连奇偶性不同的点,而且线的数量要尽量小 a < b { a < 0 b < 0 : 能连的线都连上 a < 0 b ≥ 0 : 奇偶性相同的点互相之间能连的都连上,最后连一个奇偶性不同的点以形成连通图 a > 0 : 奇偶性相同的点互相之间连上,而且尽量少,最后连一个奇偶性不同的点 \begin{cases}a\geq b & \begin{cases}b<0 & a<0:能连的线都连上\\ b<0 & a\geq0:奇偶性不同线能连的的全连上\\ b>0 & :连奇偶性不同的点,而且线的数量要尽量小\end{cases}\\ a<b & \begin{cases}a<0 & b<0:能连的线都连上\\ a<0 & b\geq0:奇偶性相同的点互相之间能连的都连上,最后连一个奇偶性不同的点以形成连通图\\ a>0 & :奇偶性相同的点互相之间连上,而且尽量少,最后连一个奇偶性不同的点\end{cases}\end{cases} aba<b b<0b<0b>0a<0:能连的线都连上a0:奇偶性不同线能连的的全连上:连奇偶性不同的点,而且线的数量要尽量小 a<0a<0a>0b<0:能连的线都连上b0:奇偶性相同的点互相之间能连的都连上,最后连一个奇偶性不同的点以形成连通图:奇偶性相同的点互相之间连上,而且尽量少,最后连一个奇偶性不同的点
注意事项
当考虑n个点之间所有能连的都连上的时候,线的数量count为
n ∗ ( n − 1 ) 2 \frac{n*(n-1)}{2} 2n(n1)
注意n数据范围是
1 ≤ n ≤ 2 e 5 1\leq n\leq 2e^5 1n2e5
而count如果不开long long会超,(呜呜呜,因为这个又多WA了一发)
其他情况同理需要考虑,所以最好全开ll。

 #define ll=long long;

key代码实现

odd记录数组中奇数的个数,even记录数组中偶数的个数。

	if(odd==0||even==0){if(a>=0)cout<<(n-1)*a<<endl;else cout<<(odd*(odd-1)>>1)*a+(even*(even-1)>>1)*a<<endl;return;}if(b<=a){if(b>=0) cout<<(odd+even-1)*b<<endl;else if(a>=0) cout<<odd*even*b<<endl;else if(a<0) cout<<odd*even*b+(odd*(odd-1)>>1)*a+(even*(even-1)>>1)*a<<endl;return;}else {if(a>=0)cout<<(odd+even-2)*a+b<<endl;else if(b>=0) cout<<((odd*(odd-1)>>1)+(even*(even-1)>>1))*a+b<<endl;else cout<<((odd*(odd-1)>>1)+(even*(even-1)>>1))*a+b*odd*even<<endl;}

完整代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define For for (ll i = 1; i <= n; i++)
#define rFor for (ll i = n; i > 0; i--)
#define rep(i, sta, end) for (ll i = sta; i <= end; i++)
#define rrep(i, end, sta) for (ll i = end; i >= sta; i--)
#define ALL(x) for (auto item : x)inline void solve() {ll n,a,b;cin>>n>>a>>b;ll odd=0,even=0;ll tmp;For {cin>>tmp;odd+=(tmp%2==1);even+=(tmp%2==0);}if(n==1){cout<<0<<endl;return;}if(odd==0||even==0){if(a>=0)cout<<(n-1)*a<<endl;else cout<<(odd*(odd-1)>>1)*a+(even*(even-1)>>1)*a<<endl;return;}if(b<=a){if(b>=0) cout<<(odd+even-1)*b<<endl;else if(a>=0) cout<<odd*even*b<<endl;else if(a<0) cout<<odd*even*b+(odd*(odd-1)>>1)*a+(even*(even-1)>>1)*a<<endl;return;}else {if(a>=0)cout<<(odd+even-2)*a+b<<endl;else if(b>=0) cout<<((odd*(odd-1)>>1)+(even*(even-1)>>1))*a+b<<endl;else cout<<((odd*(odd-1)>>1)+(even*(even-1)>>1))*a+b*odd*even<<endl;}
}int	 main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);ll num = 1;cin >> num;while (num--) {//cout << "Main function execute properly before solve function " << endl;solve();//	cout << "Main function execute properly after solve function" << endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 工程副总裁卸任

Android 工程副总裁卸任 Android工程副总裁Dave Burke宣布&#xff0c;他将辞去领导Android工程的职位&#xff0c;将重心转向“AI/生物”项目。不过&#xff0c;他并没有离开Alphabet&#xff0c;目前仍将担任Android系统开发顾问的角色。 Burke参与了Android系统的多个关键…

CSS伪类与伪元素的区别

CSS中的伪类&#xff08;Pseudo-classes&#xff09;和伪元素&#xff08;Pseudo-elements&#xff09;是两个不同的概念&#xff0c;它们的主要区别在于它们的作用和目标。 伪类&#xff08;Pseudo-classes&#xff09; 伪类用于选择处于特定状态的元素。这些状态并不是由HT…

【TypeScript】类型兼容(协变、逆变和双向协变)

跟着小满zs 学习 ts&#xff0c;原文&#xff1a;学习TypeScript进阶类型兼容_typescript进阶阶段类型兼容 小满-CSDN博客 类型兼容&#xff0c;就是用于确定一个类型是否能赋值给其他的类型。如果A要兼容B 那么A至少具有B相同的属性。 // 主类型 interface A {name: string,a…

边界内聚和耦合

内聚 功能内聚 功能内聚是软件工程中一个重要的概念&#xff0c;它描述了一个模块内部各个元素之间的紧密程度。一个具有高功能内聚的模块意味着其内部的各个组件都共同完成一个具体的、明确的功能&#xff0c;并且这些组件之间的联系不是偶然的&#xff0c;而是因为它们共同服…

快手爬票概述

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 无论是出差还是旅行&#xff0c;都无法离开交通工具的支持。现如今随着科技水平的提高&#xff0c;高铁与动车成为人们喜爱的交通工具。如果想要知道…

【C语言】联合(共用体)

目录 一、什么是联合体 二、联合类型的声明 三、联合变量的创建 四、联合的特点 五、联合体大小的计算 六、联合的应用&#xff08;判断大小端&#xff09; 七、联合体的优缺点 7.1 优点 7.2 缺点 一、什么是联合体 联合也是一种特殊的自定义类型。由多个不同类型的数…

SqlSugar 集成

1 关于 SqlSugar SqlSugar 是 .NET/C# 平台非常优秀的 ORM 框架&#xff0c;目前 Nuget 总下载突破 700K&#xff0c;Github 关注量也高达 3.2K&#xff0c;是目前当之无愧的国产优秀 ORM 框架之一。 SqlSugar 官方地址&#xff1a;果糖网 &#xff08; SqlSugar 官网 &#…

LVS三种负载均衡模式:NAT、Tunneling和DR的技术对比

1. LVS-NAT 模式的特性 IP使用&#xff1a;RS&#xff08;Real Server&#xff09;应使用私有地址&#xff0c;RS的网关必须指向DIP&#xff08;Director IP&#xff09;。网络范围&#xff1a;DIP和RIP必须在同一个网段内。数据包处理&#xff1a;请求和响应报文都需要经过Di…

Vue 3 组合式编程:革新前端开发的新时代

Vue.js作为一种流行的前端框架&#xff0c;因其简洁、灵活和高性能而深受开发者喜爱。随着前端开发需求的不断演变和复杂度的增加&#xff0c;Vue.js也在不断地进化和改进。Vue 3的推出标志着Vue.js进入了一个新的阶段&#xff0c;其中最重要的一个变化就是引入了组合式编程&am…

数据库开发——并发控制(第十一章)

文章目录 前言并发执行例题一、封锁二、封锁协议三、可串行调度四、总结 学习目标&#xff1a;重点为并发控制的基本概念及几个基本协议 前言 数据库管理系统必须提供并发控制机制&#xff0c;保证事务的隔离性和一致性 并发执行例题 一、封锁 排他锁称为写锁&#xff0c;共…

react-redux搭建及不同版本间的对比

一.经典版 1. 安装Redux和React Redux npm install redux react-redux 2. 创建action // actions/counterActions.js export const increment () > {return {type: INCREMENT}; };export const decrement () > {return {type: DECREMENT}; };export const add (amo…

atmega8 上传程序

使用icsp 烧写时先关闭串口程序&#xff0c;与串口uart连接相关的电路勿于电脑连接 接触不良 1.使用icsp 上传 1&#xff09;可以直接上传程序 如官方示例blink 或是 serial示例 2&#xff09;可以先烧录bootload 方便下次使用串口上传程序代码 A)使用专门的icsp 上传器上传…

关于二分法的理解(以JS为例)

算法介绍 基本概念 二分查找算法&#xff0c;又称折半查找算法&#xff0c;是一种在有序数组中查找特定元素的高效方法。它的核心思想是将数组分成两半&#xff0c;然后根据目标值与中间元素的比较结果来决定是继续在左半部分还是右半部分进行搜索。 工作原理 初始化&#…

【iOS】如何断点看系统方法在哪一个库

如何断点看系统方法在哪一个库 开源网站如何断点看系统方法在哪一个库1 下符号断点2 符号断点中输入 load &#xff0c;并且开启断点&#xff08;Enable&#xff09;。3 运行程序&#xff0c;触发断点&#xff0c;在堆栈信息中找到load方法&#xff0c;可以看到其在libobjc.A.d…

程序员的wsl2

坑 wsl无法打开 上班时打开wsl2提示 WSL 正在完成升级... Could not write value to key \SOFTWARE\Classes\Directory\shell\WSL. Verify that you have sufficient access to that key, or contact your support personnel. 原因未知&#xff0c;之前并没有更新过&#xff…

【AI+编程】工作日常场景随时可以AI编程,记一个问答SQL快速导出数据日常示例

今天有个场景&#xff0c;我们有个老项目&#xff0c;由于历史原因差不多1年多没使用了&#xff0c;恰巧客户紧急情况要使用。因为当时没有需求&#xff0c;所以V1.0上线后 就没做更新。 需求很简单&#xff1a;我们假定 项目问题表、客户表、问题答案表&#xff0c; 实时查询…

TCP协议报头详解

目录 前言 TCP特点 TCP报头 1.源端口和目的端口 2.序号 3.确认号 4.数据偏移 5.保留 6.控制位 ① 紧急URG&#xff08;URGent&#xff09; ② 确认ACK&#xff08;ACKnowledgment&#xff09; ③ 推送PSH&#xff08;PuSH&#xff09; ④复位RST&#xff08;ReSeT&…

tornado.httputil.HTTPFile

tornado.httputil.HTTPFile 在 Tornado web 框架中并不是直接提供的一个类或者对象。但是&#xff0c;当你提到与文件上传相关的功能时&#xff0c;通常我们是在谈论 Tornado 的 tornado.web.RequestHandler 类中处理文件上传的方法。 在 Tornado 中&#xff0c;文件上传通常是…

【React】《React 学习手册 (第2版) 》笔记-Chapter1-初识 React

一、初识 React 在 package.json 文件中提供具体的版本信息&#xff0c;以便安装各个包的正确版本。 官方文档&#xff1a;https://zh-hans.react.dev/ 建议安装 React 开发者工具&#xff0c;来辅助开发 React 项目。这些工具可通过扩展 Chrome 和 Firefox 中安装&#xff0…

Android获取CPU的使用率

Android获取CPU的使用率 1、参考博客2、使用读取/proc/stat方案2.1 读取/proc/stat权限2.2 CPU使用率获取代码 1、参考博客 android系统之获取CPU的使用率 安卓性能测试之cpu占用率统计方法总结 CPU使用率指标内核源码分析 Android获取CPU&#xff0c;内存&#xff0c;磁盘使用…