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

Educational Codeforces Round 169 (Rated for Div. 2)(ABCDE)

 A. Closest Point

签到

#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
int n,m;
int q[N];
void solve()
{cin>>n;_rep(i,1,n)cin>>q[i];if(n!=2)cout<<"NO\n";else if(abs(q[1]-q[2])!=1)cout<<"YES\n";else cout<<"NO\n";return ;
}

B. Game with Doors

题意:已知房间和房间初始之间没有门,加门之后房间和房间之间就相互不连通,给定两个区间[l,r],[L,R],问至少加多少扇门可以使得区间各自选一个点,这两个点一定不连通

手玩几个例子就可以发现

给定的区间没有交集的时候用一个门隔断即可

有交集的话交集(假设大小为x)内部的门一定要选上也就是x-1

然后就是边界,假设左端点不同那么左端点靠右的左边还要额外加一扇门,右端点同理

void solve()
{int a,b,c,d;cin>>a>>b>>c>>d;int x=max(a,c),y=min(b,d);if(a==c&&b==d)cout<<b-a<<'\n';else if(x>y)cout<<"1\n";else {int res=0;if(a!=c)res++;if(b!=d)res++;cout<<y-x+res<<'\n';}return ;
}

C. Splitting Items

A,B玩家玩游戏,n个物品都有成本,从A开始轮流拿,假设A一共拿的成本为a,B一共拿的成本为b,那么A要使a-b最大化,B要使a-b最小化,现在B可以加k个成本(k可以分配给任意物品),问最终a-b最小值

思路:假设B不能加成本,A,B显然每次都拿最大值,那么从大到小排序,(编号从1开始比)A拿奇数位,B拿偶数位即可,现在B可以偷偷加成本,那么显然肯定是贪心的拿每个偶数位加成本,但是不能超过前一个奇数位,因为超过的话这一位排序之后就比前一个大了所以排在前一个前面,所以这一位反而变成了奇数位,所以最终偶数位加成本不超过前一个奇数位即可

代码实现:


#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
int n,m,k;
int q[N];
void solve()
{cin>>n>>k;_rep(i,1,n)cin>>q[i];sort(q+1,q+1+n,greater<>());int a=0,b=0;for(int i=1;i<=n;i+=2){a+=q[i];if(i+1<=n){b+=q[i+1]+min(q[i]-q[i+1],k);k-=min(q[i]-q[i+1],k);}}cout<<a-b<<"\n";return ;
}

D. Colored Portals

题意:每一个点对应两个字母,然后点与点之间如果有一个字母相同则可以连一条无向边,权重为两个点下标之差,给定n个点,m次询问,每次询问两个点的下标,要求找到两个点之间的最短路,如果没有则输出-1

思路:一共只有四个字母,可以发现询问的时候只要两个点有一个相同字母,则最短路肯定是两个点直接连边,否则要找一个中转站,两点通过中转站连接,这个中转站显然只要满同不等于a点的两个字母和b点对应的两个字母,其实也相当于这个中转站的字母组成就是a点两个字母取一个,b点两个字母取一个,那就一定能满足题目连边的条件起到中转的目的,为了实现路径最短,显然要在a点左边和右边分别找到第一个中转站或者在b点左边和b点右边找一个中转站,假设坐标为x,那么最短路长度就是abs(b-x)+abs(a-x),实际上最麻烦的点在于:假设要找"BG" 如何找到当前坐标前面第一个"BG”和后面第一个"BG",那么把所有6种字母组合从1~6编号,然后求pre数组和next数组的时候遍历6个编号即可,具体实现在下面代码里体现

#include <map>
#include <set>
#include <queue>
#include <deque>
#include <cmath>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define pp pop_back()
#define int long long
#define laile cout<<"laile"<<endl
#define lowbit(x) ((x)&(-x))
#define double long double
#define sf(x) scanf("%lld",&x)
#define sff(x,y) scanf("%lld %lld",&x,&y)
#define sd(x) scanf("%Lf",&x)
#define sdd(x,y) scanf("%Lf %Lf",&x,&y)
#define _for(i,n) for(int i=0;i<(n);++i)
#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
#define _pre(i,a,b) for(int i=(a);i>=(b);--i)
#define all(x) (x).begin(), (x).end()
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
typedef unsigned long long ULL;
typedef pair<int,int>PII;
const int N=1e6+10,INF=4e18;
int n,m;
int qian[7][N];
string s[N];
int id[255];
int get(char a,char b)//编号
{if(id[a]>id[b])swap(a,b);if(id[a]==1)return id[b]-1;else if(id[a]==2)return id[b]+1;else return 6ll;
}
void init()
{id['B']=1;id['G']=2;id['R']=3;id['Y']=4;
}
int pre[N][10],ne[N][10];//pre[i][j]表示i位置第j个字符串的编号(假设为"BG")的前面第一个"BG"的位置
void solve()
{cin>>n>>m;_rep(i,1,n)cin>>s[i];int now[10];_rep(i,1,6)now[i]=0;_rep(i,1,n){	_rep(k,1,6)pre[i][k]=now[k];now[get(s[i][0],s[i][1])]=i;}_rep(i,1,6)now[i]=n+1;_pre(i,n,1){_rep(k,1,6)ne[i][k]=now[k];now[get(s[i][0],s[i][1])]=i;}while(m--){int a,b;cin>>a>>b;if(a>b)swap(a,b);int res=INF;for(auto i:s[a])for(auto j:s[b]){if(i==j)res=b-a;else{int now=get(i,j);if(pre[a][now])res=min(res,abs(a-pre[a][now])+abs(b-pre[a][now]));if(pre[b][now])res=min(res,abs(a-pre[b][now])+abs(b-pre[b][now]));if(ne[b][now]!=n+1)res=min(res,abs(a-ne[b][now])+abs(b-ne[b][now]));
//					if(ne[a][now]!=n+1)//这里没必要了因为如果中转点在中间的话那么答案就是b-a,那么前面的pre[b][now]显然可以遍历到
//						res=min(res,abs(a-ne[a][now])+abs(b-ne[a][now]));}}if(res==INF)cout<<"-1\n";else cout<<res<<'\n';}return ;
}
signed main()
{IOS;init();int T=1;cin>>T;while(T--)solve();return 0;
}

E. Not a Nim Problem

题意,Alice和Bob做游戏,一共给定n堆石子,A先开始,每次可以从一堆石子(假设为y)中拿掉一部分(假设为x),那么一定要保证gcd(x,y)=1,最后轮到谁没有石子了谁就输了,对方就赢了

显然要用到NIM游戏的结论,所以现在要求的就是输入规模1~1e7的每一个数字的sg值

首先看一下一堆石子假设为x,那么x能走到哪些点?

首先x在满足gcd(x,y)==1的时候拿掉y个石子的所有情况构成了一个集合,可以发现和拿掉之后剩余石子x-y构成的集合一定是一样的,因为剩余的石子x-y一定也满足gcd(x,x-y)==1,为什么?假设gcd(x,x-y)=z那么x和y一定都是z的倍数(假设x=a*z,y=b*z,a>b并且gcd(a,b)=1),那么x-y=(a-b)*z,显然可以发现gcd(x,x-y)=z(因为a,b是互质所以a,a-b也互质,PS:假设a,a-b不互质那么a,a-(a-b);也就是a.b不互质与a,b互质矛盾,所以a,a-b必定互质))

现在就可以画图找规律了

手玩以下可以发现(黑色点为石子数量,红色为sg值)

1.sg[1]=0

2.石子数量为偶数时候走不到任何sg值为0的点,所以sg[偶数]=0

举个例子,现在当前只知道sg[0~5],发现sg[2]=sg[4]=0,sg[0]就不管了因为只有1能走到0,那么我现在要求sg[6],要使得6走到sg值为0的点那就只能走到2,4但是两个偶数的gcd肯定不会为1

3.sg[质数]=质数在质数序列中的编号,比如sg[3]=2,sg[5]=3,可以发现sg[x]能走到的最大sg值是sg[x‘

],x'为这个质数的上一个质数,所以sg[x]=sg[x']+1

4.对于其他的x,sg[x]=sg[x''],其中x''为x的最小质因数

看上面的图中的9,他的最小质因数是3,首先这个9至少能达到sg[3]-1(也就是sg[9]=sg[3]),因为3是它的质因数,所以它同样可以走到相对于3的所有能走到的点。

然后看一下9能否走到sg[3]?(为什么突然要看这个点呢,因为图中的9走不到sg[3]所以看一下这种情况是不是必然的)看一下sg[3]为什么为sg[3],是因为3这个数可以走到0,1这两个状态(注意是状态(sg值)而不是石子数量)而走不到2这个状态,还有哪些数能满足这个性质?很显然可以发现只要以3为质因数的数字都满足这个性质,回到这一段开始的问题,可以发现要走到sg[3]一定要走到以3为质因数的数字,但是9不可能走到3为质因数的数字因为9和这个数字都是3的倍数,不满足题目要求,所以说9可以走到的状态一定断在了sg[3],那么就可以得到sg[9]=sg[3]

代码实现

#include <map>
#include <set>
#include <queue>
#include <deque>
#include <cmath>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define pp pop_back()
#define int long long
#define laile cout<<"laile"<<endl
#define lowbit(x) ((x)&(-x))
#define double long double
#define sf(x) scanf("%lld",&x)
#define sff(x,y) scanf("%lld %lld",&x,&y)
#define sd(x) scanf("%Lf",&x)
#define sdd(x,y) scanf("%Lf %Lf",&x,&y)
#define _for(i,n) for(int i=0;i<(n);++i)
#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
#define _pre(i,a,b) for(int i=(a);i>=(b);--i)
#define all(x) (x).begin(), (x).end()
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
typedef unsigned long long ULL;
typedef pair<int,int>PII;
const int N=1e7+10,INF=4e18;
int n,m;
int prime[N],cnt,sg[N],minprime[N];
bool st[N];
void init()
{for(int i=2;i<N;i++){if(!st[i])prime[cnt++]=i;for(int j=0;prime[j]*i<N;j++){st[prime[j]*i]=true;minprime[prime[j]*i]=prime[j];if(i%prime[j]==0)break;}}for(int i=0;i<cnt;i++)sg[prime[i]]=i+1;return;
}
void solve()
{cin>>n;int res=0;while(n--){cin>>m;if(m%2==0)m=2;else if(st[m])m=minprime[m];res^=sg[m];}if(res)cout<<"Alice\n";else cout<<"Bob\n";return ;
}
signed main()
{IOS;int T=1;cin>>T;init();sg[1]=1;sg[2]=0;while(T--)solve();return 0;
}

相关文章:

Educational Codeforces Round 169 (Rated for Div. 2)(ABCDE)

A. Closest Point 签到 #define _rep(i,a,b) for(int i(a);i<(b);i) int n,m; int q[N]; void solve() {cin>>n;_rep(i,1,n)cin>>q[i];if(n!2)cout<<"NO\n";else if(abs(q[1]-q[2])!1)cout<<"YES\n";else cout<<"…...

成为Python砖家(2): str 最常用的8大方法

str 类最常用的8个方法 str.lower()str.upper()str.split(sepNone, maxsplit-1)str.count(sub[, start[, end]])str.replace(old, new[, count])str.center(width[, fillchar])str.strip([chars])str.join(iterable) 查询方法的文档 根据 成为Python砖家(1): 在本地查询Pyth…...

深入理解JVM运行时数据区(内存布局 )5大部分 | 异常讨论

前言&#xff1a; JVM运行时数据区&#xff08;内存布局&#xff09;是Java程序执行时用于存储各种数据的内存区域。这些区域在JVM启动时被创建&#xff0c;并在JVM关闭时销毁。它们的布局和管理方式对Java程序的性能和稳定性有着重要影响。 目录 一、由以下5大部分组成 1.…...

JAVA根据表名获取Oracle表结构信息

响应实体封装 import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;/*** author CQY* version 1.0* date 2024/8/15 16:33**/ Data NoArgsConstructor AllArgsConstructor Builder public class OracleTableInfo …...

网络性能优化

网络性能优化是确保网络稳定性、速度和可靠性的关键步骤。优化过程通常包括诊断问题、识别瓶颈以及实施具体的解决方案。以下是关于如何进行网络性能优化的详细指南&#xff1a; 一、问题诊断 网络性能监控 网络流量分析工具&#xff1a;使用Wireshark、NetFlow、Ntop等工具监…...

[C++String]接口解读,深拷贝和浅拷贝,string的模拟实现

&#x1f496;&#x1f496;&#x1f496;欢迎来到我的博客&#xff0c;我是anmory&#x1f496;&#x1f496;&#x1f496; 又和大家见面了 欢迎来到C探索系列 作为一个程序员你不能不掌握的知识 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低成本搭建个人网站…...

理性看待、正确理解 AI 中的 Scaling “laws”

编者按&#xff1a;LLMs 规模和性能的不断提升&#xff0c;让人们不禁产生疑问&#xff1a;这种趋势是否能一直持续下去&#xff1f;我们是否能通过不断扩大模型规模最终实现通用人工智能&#xff08;AGI&#xff09;&#xff1f;回答这些问题对于理解 AI 的未来发展轨迹至关重…...

【OCR 学习笔记】二值化——全局阈值方法

二值化——全局阈值方法 固定阈值方法Otsu算法在OpenCV中的实现固定阈值Otsu算法 图像二值化&#xff08;Image Binarization&#xff09;是指将像素点的灰度值设为0或255&#xff0c;使图像呈现明显的黑白效果。二值化一方面减少了数据维度&#xff0c;另一方面通过排除原图中…...

Java - IDEA开发

使用IDEA开发Java程序步骤&#xff1a; 创建工程 Project&#xff1b;创建模块 Module&#xff1b;创建包 Package&#xff1b;创建类&#xff1b;编写代码&#xff1b; 如何查看JDK版本 Package介绍: package是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、…...

Oracle(62)什么是内存优化表(In-Memory Table)?

内存优化表&#xff08;In-Memory Table&#xff09;是指将表的数据存储在内存中&#xff0c;以提高数据访问和查询性能的一种技术。内存优化表通过利用内存的高速访问特性&#xff0c;显著减少I/O操作的延迟&#xff0c;提升数据处理的速度。这种技术在需要高性能数据处理的应…...

#window家庭版安装hyper-v#

由于window 11 家庭版没有hyper-v虚拟机服务&#xff0c;则需要安装一下&#xff0c;使用如下操作 1:新建一个txt文件&#xff0c;拷贝如下脚本到里面 pushd "%\~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt for /f %%i in (findst…...

【云原生】Pass容器研发基础——汇总篇

云原生基础汇总 系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了云计算学习的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;每个知识点的修正和深入主要参考各平台大佬的文章&#xff0c…...

【Py/Java/C++三种语言详解】LeetCode743、网络延迟时间【单源最短路问题Djikstra算法】

可上 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 od1441了解算法冲刺训练&#xff08;备注【CSDN】否则不通过&#xff09; 文章目录 相关推荐阅读一、题目描述二、题目解析三、参考代码PythonJavaC 时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 相关推荐阅读 …...

交替输出

交替输出 题目&#xff1a;线程 1 输出 a 5 次&#xff0c;线程 2 输出 b 5 次&#xff0c;线程 3 输出 c 5 次。现在要求输出 abcabcabcabcabc wait notify 版 public class SyncWaitNotify {private volatile int flag;private volatile int loopNumber;public SyncWaitNo…...

JS(三)——更改html内数据

获取 DOM 元素&#xff0c;然后修改其属性或内容。使用 getElementById 方法获取特定 ID 的元素&#xff1a; <p id"myParagraph">这是初始的文本</p> const paragraph document.getElementById(myParagraph); paragraph.innerHTML 这是修改后的文本…...

CSS小玩意儿:文字适配背景

一&#xff0c;效果 二&#xff0c;代码 1&#xff0c;搭个框架 添加一张背景图片&#xff0c;在图片中显示一行文字。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" conte…...

C++:平衡二叉搜索树之红黑树

一、红黑树的概念 红黑树&#xff0c; 和AVL都是二叉搜索树&#xff0c; 红黑树通过在每个节点上增加一个储存位表示节点的颜色&#xff0c; 可以是RED或者BLACK&#xff0c; 通过任何一条从根到叶子的路径上各个节点着色方式的限制&#xff0c;红黑树能够确保没有一条路径会比…...

CentOS 7 系统优化

CentOS 7 系统优化 1、配置YUM源 阿里云的YUM源配置&#xff1a; CentOS 7使用以下命令&#xff1a; sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoCentOS 8使用以下命令&#xff1a; sudo wget -O /etc/yum.repos.d/CentOS…...

扫雷游戏——附源代码

扫雷游戏的源代码比较简单&#xff0c;不设计比较复杂的代码&#xff0c;主要是多个函数的组合&#xff0c;每个函数执行自己的功能&#xff0c;最终支持游戏的完成。 1.菜单 我们需要一个提醒信息来让用户进行选择。 void menu() {printf("***********************\n&…...

Vue3列表(List)

效果如下图&#xff1a;在线预览 APIs List 参数说明类型默认值bordered是否展示边框booleanfalsevertical是否使用竖直样式booleanfalsesplit是否展示分割线booleantruesize列表尺寸‘small’ | ‘middle’ | ‘large’‘middle’loading是否加载中booleanfalsehoverable是否…...

HarmonyOS NEXT - Navigation组件封装BaseNavigation

demo 地址: https://github.com/iotjin/JhHarmonyDemo 代码不定时更新&#xff0c;请前往github查看最新代码 在demo中这些组件和工具类都通过module实现了&#xff0c;具体可以参考HarmonyOS NEXT - 通过 module 模块化引用公共组件和utils 官方介绍 组件导航 (Navigation)(推…...

浅看MySQL数据库

有这么一句话&#xff1a;“一个不会数据库的程序员不是合格的程序员”。有点夸张&#xff0c;但是确是如此。透彻学习数据库是要学习好多知识&#xff0c;需要学的东西也是偏难的。我们今天来看数据库MySQL的一些简单基础东西&#xff0c;跟着小编一起来看一下吧。 什么是数据…...

Pytorch常用训练套路框架(CPU)

文章目录 1. 数据准备示例&#xff1a;加载 CIFAR-10 数据集 2. 模型定义示例&#xff1a;定义一个简单的卷积神经网络 3. 损失函数和优化器示例&#xff1a;定义损失函数和优化器 4. 训练循环示例&#xff1a;训练循环 5. 评估和测试示例&#xff1a;评估模型 6. 保存和加载模…...

C++ | Leetcode C++题解之第338题比特位计数

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> countBits(int n) {vector<int> bits(n 1);for (int i 1; i < n; i) {bits[i] bits[i & (i - 1)] 1;}return bits;} };...

智慧校园云平台电子班牌系统源码,智慧教育一体化云解决方案

智慧校园云平台电子班牌系统&#xff0c;利用先进的云计算技术&#xff0c;将教育信息化资源和教学管理系统进行有效整合&#xff0c;实现生态基础数据共享、应用生态统一管理&#xff0c;为智慧教育建设的统一性&#xff0c;稳定性&#xff0c;可扩展性&#xff0c;互通性提供…...

数据库系统 第17节 数据仓库 案例赏析

下面我将通过几个具体的案例来说明数据仓库如何在不同的行业中发挥作用&#xff0c;并解决实际业务问题。 案例 1: 零售业 背景: 一家大型零售商希望改进其库存管理和市场营销策略&#xff0c;以提高销售额和顾客满意度。 解决方案: 数据仓库: 构建一个数据仓库&#xff0…...

硬件面试经典 100 题(71~90 题)

71、请问下图电路的作用是什么&#xff1f; 该电路实现 IIC 信号的电平转换&#xff08;3.3V 和 5V 电平转换&#xff09;&#xff0c;并且是双向通信的。 上下两路是一样的&#xff0c;只分析 SDA 一路&#xff1a; 1&#xff09; 从左到右通信&#xff08;SDA2 为输入状态&…...

【git】代理相关

问题&#xff1a; 开启了翻墙代理工具&#xff0c;拉取代码时报错&#xff1a;fatal: 无法访问 xxxx : Failed to connect to github.com port 443: 连接超时 解决&#xff1a; 0&#xff0c;取消代理仍然无法拉取 1&#xff0c;查看控制面板-网络与Internet-代理&#xff…...

golang gin框架中创建自定义中间件的2种方式总结 - func(*gin.Context)方式和闭包函数方式定义gin中间件

在gin框架中&#xff0c;我们可以通过2种方式创建自定义中间件&#xff1a; 1. 直接定义一个类型为 func(*gin.Context)的函数或者方法 这种方式是我们常用的方式&#xff0c;也就是定义一个参数为*gin.Context的函数或者方法。定义的方法就是创建一个 参数类型为 gin.Handler…...

Linux高级编程 8.13 文件IO

一、文件IO 操作系统为了方便用户使用系统功能而对外提供的一组系统函数。称之为 系统调用&#xff08;unistd.h&#xff09; 其中有个 文件IO&#xff0c;一般都是对设备文件操作,当然也可以对普通文件进行操作。 这是一个基于Linux内核的没有缓存的IO机制 文件IO特性&…...