2021上海市赛【10.10训练补题】

news2025/6/22 0:14:09

 Dashboard - The 2021 Shanghai Collegiate Programming Contest - Codeforces

参考题解:2021CCPC上海省赛题解ABCDEGHIJK_2021ccpc上海题解_Hytidel的博客 

A. 小 A 的点面论(数学几何)

题解:求平面的法向量(外积法)

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef __int128 i128;
const int N=1e5+5;
const i128 mod=998244353;
const int inf=1<<30;

int x1,x2,y1,y2,x3,y3,z1,z2,z3;
int main(){
	scanf("%d%d%d%d%d%d",&x1,&y1,&z1,&x2,&y2,&z2);
	x3=y1*z2-y2*z1;
	y3=-(x1*z2-x2*z1);
	z3=x1*y2-x2*y1;
	printf("%d %d %d",x3,y3,z3);
}

G. 鸡哥的雕像 

 题解:当a[ i ]中有一个998244353出现,雕像放在 i 处的答案为其他数的乘积,放在其他处的答案为0;当a[ i ]中有两个及以上998244353出现,所有答案为0

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef __int128 i128;
const int N=1e5+5;
const i128 mod=998244353;
const int inf=1<<30;

i128 n;
inline i128 quickp(i128 base,i128 pow){
	i128 res=1;
	while(pow){
		if(pow&1)res=res*base%mod;
		pow>>=1;
		base=base*base%mod;
	}return res;
} 
inline i128 inv(i128 x){
	return quickp(x,mod-2);
}
inline i128 read(){  //__int128 可以换成 int longlong 基于自己的需求即可
    i128 x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}
inline void out(i128 x){    //输出
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9)
        out(x/10);
    putchar(x%10+'0');
}

i128 a[N];
i128 res=1;
int main(){
	n=read();int cnt=0;
	for(i128 i=1;i<=n;i++){
		a[i]=read();
		if(a[i]!=mod) res=res*a[i]%mod;
		else cnt++;
	}
	if(cnt){
		for(i128 i=1;i<=n;i++){
			if(a[i]==mod&&cnt==1){
				out(res);printf(" ");
			}else printf("0 ");
		}
	}
	else{
		for(i128 i=1;i<=n;i++){
			out(res*inv(a[i])%mod);printf(" ");
		}
	}
}

H. 鸡哥的 AI 驾驶(二分)

题解:

若会发生事故,则时间越久越可能发生事故,故是否发生事故的性质具有二段性,可二分出其分界点.

考虑如何check.显然两不同型号的车发生事故的充要条件是它们的相互位置发生改变,即直观上它们互相穿过了对方.注意到每辆车不发生事故的移动范围是数轴上该型号的车最左边与最右边的位置之间的线段,则某型号的车离开该范围也会发生事故.

考察二分时间的范围.显然耗时最久的是从x=−1e9以速度v=1走到x=1e9,耗时t=2e9,则边界可取[0,2e9+1],其中+1是为了退出循环后断定l=2e9是否有解.

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int>pi;
const int mod=1e9+7;
const int N=1e5+5;
inline ll read(){
    ll x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}
int n,k;
ll res=-1;
struct node{
	ll x,v;
	int id;
	bool operator<(const node&B)const{
		if(x!=B.x)return x<B.x;
		return v<B.v;
	}
}a[N];
int seg[N][3];
pair<ll,int>tx[N];//{tx,id}
int chk(ll t){//[0,t]不会撞车 
	for(int i=1;i<=n;i++){
		tx[i]={a[i].x+t*a[i].v,i};
	}sort(tx+1,tx+1+n);
	
	//检查同一位置是否有不同编号,同一编号区间的车辆是否超出区间
	for(int i=2;i<=n;i++){
		//printf("tx[%d].x:%lld id:%d\n",i,tx[i].first,tx[i].second);
		if(tx[i].first==tx[i-1].first&&tx[i].second!=tx[i-1].second)return 0;
	} for(int i=1;i<=n;i++){
		//printf("i%d seg[%d]l:%d r:%d\n",i,tx[i].second,seg[tx[i].second][1],seg[tx[i].second][2]);
		if(i<seg[tx[i].second][1]||i>seg[tx[i].second][2])return 0;
	}return 1;
}
//1 1 2 2 2 1 1
//[1,2][3,5][6,7]
int main(){
    n=read();k=read();
    for(int i=1;i<=n;i++){
    	a[i].x=read();a[i].v=read();a[i].id=read();
	} 
	sort(a+1,a+n+1);
	//预处理区间
	seg[1][1]=1;seg[n][2]=n;
	for(int i=2;i<=n;i++){
		if(a[i].id==a[i-1].id)seg[i][1]=seg[i-1][1];
		else seg[i][1]=i;
	} 
	for(int i=n-1;i>=1;i--){
		if(a[i].id==a[i+1].id)seg[i][2]=seg[i+1][2];
		else seg[i][2]=i;
	}
	
	ll l=0,r=2e9+1;
	while(l<=r){
		ll mid=(l+r)/2;
		//printf("mid:%lld res%lld\n",mid,res);
		if(chk(mid))res=mid,l=mid+1;
		else r=mid-1;
	}if(res!=2e9+1)printf("%lld",res);
	else printf("-1");
	return 0;
}

J. Alice and Bob-1(贪心)

题解:

Alice要 |A|-|B| 尽量大,Bob要 |A|-|B|尽量小  <=>  两人每次都选择尽量大的数字

如:-8 -7 -5  -3 1 3     Alice:-8 -5 1=12  Bob:-7 -3 3=7

所以可能先选正值最大,也可能先选负值最大,Alice先手则考虑更利于Alice的情况,即在两人每次都选择最大值的情况下 |A|-|S-A| 最大

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
const int mod=1e9+7;
const int N=1e5+5;
inline ll read(){
    ll x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}
ll a[5005];
ll n,s1,s2,s;
int main(){
    n=read();
    
    for(int i=1;i<=n;i++){
    	a[i]=read();
    	s+=a[i];
	} 
	sort(a+1,a+n+1);
	int f=1;
	for(int i=n;i>=1;i-=2)s1+=a[i];
	for(int i=1;i<=n;i+=2)s2+=a[i];
	
	ll res=max(abs(s1)-abs(s-s1),abs(s2)-abs(s-s2));
	printf("%lld",res);
}

 

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

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

相关文章

sshpass传输文件提示Host key verification failed.

1. sshpass功能简述 sshpass指令可用于A服务器向B服务器传输文件或执行某些指令。 2. 传输文件指令 基本传输命令&#xff1a;sshpass -p 远程服务器登录密码 scp 本地路径文件 远程服务器登录用户名远程服务器IP地址:远程服务器文件保存路径 示例&#xff1a; sshpass -p 1…

HVV行动是什么?网络安全的重要布局!

1 什么是HVV行动 “HVV行动” 是国家应对网络安全问题所做的重要布局之一&#xff0c;是由政府统一组织的"网络安全实战攻防演习&#xff0c;通过与进攻方的对抗&#xff0c;企事业单位网络、系统以及设备等的安全能力会大大提高。 2 发展 “HVV行动”从2016年开始&#…

基于R和gephi做宏基因组与代谢组等多组学联合network相关性网络图

写在前面 拿到多组学的数据后一直在找合适的方法将二者进行关联&#xff0c;比如我这里是三种体液的代谢组与一种体液的宏基因组。需求是对多组学进行关联分析&#xff0c;直到最近看到不少文章里利用Gephi将相关性表格进行可视化的图&#xff0c;效果还不错&#xff0c;于是写…

拼多多商品品牌数据接口,拼多多商品详情数据接口,拼多多优惠券数据接口,拼多多API接口

拼多多商品品牌数据采集方法如下&#xff1a; 手动数据采集。直接在拼多多平台上搜索并手动复制商品数据&#xff0c;适合采集小批量的商品数据&#xff0c;但不适用于大规模数据采集。手动采集需要手动输入搜索词&#xff0c;进行筛选后再复制所需的数据&#xff0c;该方法需…

mybaits入门实验

实验准备 创建数据库和数据表sql语句&#xff0c;代码如下所示。 CREATE DATABASE mybait_demo; USE mybait_demo;CREATE TABLE tb_student( sno INT AUTO_INCREMENT PRIMARY KEY, student_name VARCHAR(20) NULL, student_age INT NULL );给表中插入四条数据…

2023年09月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 Python编程&#xff08;1~6级&#xff09;全部真题・点这里 第1题&#xff1a;谁是你的潜在朋友 “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男&…

【操作系统】BIOS开机自检

一.BIOS的基本功能 BIOS 全称 Basic Input/Output System&#xff0c;中文可译为基本输入/输出系统。电脑在按下电源键后的第一反应就是执行BIOS这个程序。之所以会被称之为“基本”&#xff0c;是因为它主要负责了一些开启计算机所需要最最基本的东西&#xff0c;其它更加复杂…

Visual Studio配置OpenCV(保姆及教程)

Visual Studio配置OpenCV OpenCV安装Visual Studio安装Visual Studio配置OpenCV OpenCV安装 OpenCV安装地址&#xff0c;点击进行下载 二话不说&#xff0c;直接最新版本&#xff0c;安装挺简单的这里就不进行叙述了&#xff0c;安装完后记住安装地址。 打开你的安装目录&#…

dp模板题(y总小迷弟)

这个是总结y总的闫式dp分析方法来写的下面的题目主要核心就是&#xff1a; dp的含义&#xff1a;集合代表说明 如何根据最后一个子问题进行划分根据划分的范文推出状态式 四大经典dp问题 01背包 01背包问题可描述为如下问题&#xff1a; 有一个容量为V的背包&#xff0c;还…

Crypto/加密货币 应用

1. 应用程序功能模块 1) 实时加密货币数据 2) 保存当前用户的货币数据 3&#xff09;搜索、筛选、排序和重新加载数据 4&#xff09;自定义颜色主题和加载动画 2. 技术点 1&#xff09;MVVM 体系结构 2&#xff09;Core Data&#xff08;保存当前用户的投资组合&#xff09; 3…

Web后端开发登录校验及JWT令牌,过滤器,拦截器详解

如果用户名正确则成功进入 登录功能 代码 Controller Service Mapper 结果 若登录成功结果如下: 如果登录失败,结果如下 登录校验 为什么需要登录校验 有时再未登录情况下, 我们也可以直接访问部门管理, 员工管理等功能 因此我们需要一个登录校验操作, 只有确认用户登录…

易点云CFO向征:CFO不能只讲故事,价值创造才是核心

作者 | 曾响铃 文 | 响铃说 在今年6月初&#xff0c;也是易点云上市6天后&#xff0c;《巴伦周刊》正式启动评价“2023港美上市中国企业CFO精英100”的活动。 时间来到9月&#xff0c;评价揭秘&#xff0c;易点云CFO向征成功入选&#xff0c;被评为“年度最具成长潜力CFO”…

入手DDR5内存最佳时机到了,价格大跳水香过DDR4

当时 DDR5 内存刚出来那会儿大家怎么说的来着&#xff0c;售价离谱&#xff0c;提升微弱&#xff0c;鬼都不买… 不过嘛&#xff0c;随着 13 代酷睿以及锐龙 7000 系 CPU 上市&#xff0c;DDR5 彻底真香起来了。 先不说花重金升级 13 代酷睿平台&#xff0c;还用 DDR4 会不会有…

【开源项目】一款轻量级、基于Java语言开发的低代码开发框架,开箱即用!

在当今数字化时代&#xff0c;企业对于灵活、高效和安全的软件开发需求日益旺盛。为了满足这些需求&#xff0c;许多组织转向开源技术&#xff0c;以寻求更具成本效益和创新性的解决方案。JVS基础框架正是在这一背景下应运而生&#xff0c;凭借其私有化部署和完全开源的特性&am…

LeetCode 2578. 最小和分割【贪心,排序+奇偶分组】1350

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

Redis 新手必读。这篇文章是学 Redis 的捷径。

Redis 简介Redis 优势Redis 数据类型基本命令发布订阅订阅者的客户端显示如下事务持久化复制哨兵分片 Redis 简介 Redis 是完全开源免费的&#xff0c;遵守 BSD 协议&#xff0c;是一个高性能的 key - value 数据库 Redis 与 其他 key - value 缓存产品有以下三个特点&#…

经典面试题第九更---Promise养猪场

前言&#xff1a; &#x1f921; 作者简介&#xff1a;我是Morning&#xff0c;计算机的打工人&#xff0c;想要翻身做主人 &#x1f648; &#x1f648; &#x1f648; &#x1f3e0; 个人主页&#xff1a; Morning的主页 &#x1f4d5;系列专栏&#xff1a; 前端…

Magic Bullet Suite2024.0.1(ae降噪插件合集)

Red Giant Magic Bullet Suite是一套专业的视频后期处理软件&#xff0c;适用于Adobe Premiere Pro、After Effects等视频编辑软件。它提供了多种精美的视频特效和调色工具&#xff0c;使得视频制作更加专业和出色。 Magic Bullet Suite包括多个插件&#xff0c;其中最为知名的…

安防视频监控平台EasyCVR集成到ios系统不能播放是什么原因?如何解决?

视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#…

什么是多云? 为什么我们需要多云可观测性 (Observability)?

Observe 是一家提供可观察性云解决方案的公司&#xff0c;以帮助企业加速应用故障排查和问题解决的效率。公司成立于2017年9月&#xff0c;总部位于美国加利福尼亚州圣马特奥。到目前为止&#xff0c;Observe 已经在5轮融资中总共筹集了1.62亿美元。他们最近的一轮融资是在2023…