Codeforces Round 925 (Div. 3)

D. Divisible Pairs

题意:给定一个长度为n(2<=n<=2*10^5)的数组,给出两个数x、y(1<x,y<=10^9),找出完美对的个数

完美对满足 (ai+aj)整除x  (ai-aj)整除y 且(1<=i<j<=n)

统计数组a中的完美对有多少个

思路:统计<i,j>的对数

         一般来说 就是枚举 i,j  时间复杂度:n*(n-1)/2--->O(n^2)--->会超时

          这时就想优化  枚举i 将j进行分类 按照分类,提前统计-->避免查询的时候重复统计

          根据题意可得(ai+aj)%x==0 (ai-aj)%y==0

          aj=-ai%x aj=ai%y -->满足这两个条件 就可与i组成完美对 就提前统计

          结合map用pair去存储个数  

#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
typedef pair<int,int>PII;
const int N=5e5+10;
map<PII,int>mp;
int a[N];
int main()
{int t;cin>>t;while(t--){int n;cin>>n;ll x,y;cin>>x>>y;for(int i=1;i<=n;i++){cin>>a[i];mp[{a[i]%x,a[i]%y}]++;//满足条件的个数有多少个}ll ans=0;for(int i=1;i<=n;i++){mp[{a[i]%x,a[i]%y}]--;//先减去自身的 然后统计后面满足这个条件的个数ans+=mp[{(x-a[i]%x)%x,a[i]%y}];//(x-a[i]%x)%x-->-a[i]%x-->得到正数}cout<<ans<<endl;}return 0;
}

 E. Anna and the Valentine's Day Gift(贪心)

    题意:

输入数据 

9

2 2

14 2

3 5

9 56 1

4 10

1 2007 800 1580

4 5

5000 123 30 4

10 10

6 4 6 2 3 1 10 9 10 7

1 1

6

1 1

10

8 9

1 2 9 10 10 2 10 2

4 5

10 10 10 10

 输出数据

Sasha
Anna
Anna
Sasha
Sasha
Anna
Anna
Anna
Sasha

思路:题意中若最后的数 大于等于10^m则Sasha赢 否则Anna赢

实际上就是求最终的长度与之相比 10^2=100 故 求的就是最终的数的长度与m+1的长度的大小

 Anna的操作 XXZZ--ZZXX   XZ00-ZX Anna可以使有后缀0的数 长度变短 故其每一次进行操作 都应该找后缀0 最长的进行翻转

Sasha  若选择的两个数为 xxz yyo -->xxzyyo  xxz000  yyot-->xxz000yyot 这样可以保护后缀0 

故Anna 应可能使有后缀0 翻转 使长度减小 Sasha 应尽可能的使有后缀0 与其他数结合 使其长度不变 (采用贪心的策略 用后缀0 的长度从大到小排序 每次处理后缀0 长度最大的--即最优) 

#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
using namespace std;
typedef long long ll;
typedef pair<int,int>PII;
const int N=5e5+10;
map<PII,int>mp;
int a[N];
int main()
{int t;cin>>t;//t  t (1≤t≤10^4)while(t--){int n,m;cin>>n>>m;//n, m(1≤n≤2*10^5, 0≤m≤2*10^6) priority_queue<PII>q;//采用优先队列 对后缀0进行从大到小的排序(优先队列默认从大到小排)for(int i=1;i<=n;i++){cin>>a[i];//to_string 是C++11新引进的函数,用于将各种类型(包括整型、浮点型、布尔型等)转换为字符串类型。int len1=to_string(a[i]).length();//统计每个数的总长度int len2=0;//统计后缀0的长度while(a[i]%10==0){len2++;a[i]/=10;}q.push({len2,len1});}int x=0;int flag=0;while(q.size()){PII t=q.top();q.pop();if(!flag){x+=t.second-t.first;//Anna 删掉后缀0}else{x+=t.second;//Sasha 保护后缀0}if(!flag) flag=1;else flag=0;}if(x>=m+1) cout<<"Sasha"<<endl;else cout<<"Anna"<<endl;}return 0;
}

F. Chat Screenshots(拓扑排序)

题意:

 输入样例:

10

5 1

1 2 3 4 5

4 4

1 2 3 4

2 3 1 4

3 2 1 4

4 2 3 1

6 2

1 3 5 2 4 6

6 3 5 2 1 4

3 3

1 2 3

2 3 1

3 2 1

10 2

1 2 3 4 5 6 7 8 9 10

10 9 8 7 6 5 4 3 2 1

1 1

1

5 2

1 2 3 5 4

2 1 3 5 4

3 3

3 1 2

2 3 1

1 3 2

5 4

3 5 1 4 2

2 5 1 4 3

1 5 4 3 2

5 1 4 3 2

3 3

1 3 2

2 1 3

3 2 1 

 输出样例:

YES
YES
YES
YES
NO
YES
YES
YES
YES
NO

思路:根据 题意 求得就是能否找出一种排队方式,满足k个人提高的关系

本体考察了拓扑排序 难点在于如何抽象出来

例如 

5 4

3 5 1 4 2  --->  5>1>4>2

2 5 1 4 3  --->5>1>4>3

1 5 4 3 2 --->5>4>3>2

5 1 4 3 2 --->1>4>3>2

如何代替这种大小关系 考虑用图 用有向边去表示

2<4 则表示有一条边 由2指向4 依次取建图

根据拓扑排序 能表示出来 2 3 4 1 5 若是有环则不能 

#include<iostream>
#include<algorithm>
#include<set>
#include<vector>
#include<queue>
using namespace std;
const int N=2e5+10;
vector<int>v[N];
set<int>s[N];
int a[N],d[N];
int main()
{int t;cin>>t;while(t--){int n,k;cin>>n>>k;for(int i=1;i<=n;i++) d[i]=0,s[i].clear();for(int i=1;i<=k;i++){for(int j=1;j<=n;j++) cin>>a[j];//有重边 用set进行优化 不能直接在这里进行 入度的计算 有重边 会导致出错//建边for(int j=2;j<n;j++) s[a[j]].insert(a[j+1]);}for(int i=1;i<=n;i++){for(auto it:s[i]){d[it]++;}}//拓扑排序--看是否有环 若有环则不行 queue<int>q;for(int i=1;i<=n;i++) if(!d[i]) q.push(i);int ans=0;while(q.size()){int t=q.front();q.pop();ans++;for(auto it:s[t]){d[it]--;if(!d[it]) q.push(it);}}if(ans==n) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}

 

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

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

相关文章

【2024年毕设系列】如何使用Anaconda和Pycharm

【2024年毕设系列】如何使用Anaconda和Pycharm 视频教程地址&#xff1a;【2024毕设系列】Anaconda和Pycharm如何使用_哔哩哔哩 Hi&#xff0c;各位好久不见&#xff0c;这里是肆十二&#xff0c;首先在这里给大伙拜年了。 诸位过完年之后估计又要开始为了大作业和毕业设计头疼…

Virt a Mate(VAM)游戏折腾记录

如有更新见原文&#xff1a;https://blog.iyatt.com/?p13283 1 前言 如果在网上看到有些视频名字带有 VAM 的&#xff0c;可能就是玩这个游戏录屏的。这个游戏可以建模、操作模型动作、构建场景等等。之前大致知道有这么个东西&#xff0c;只是电脑配置太差了&#xff0c;新…

Vue项目创建和nodejs使用

Vue项目创建和nodejs使用 一、环境准备1.1.安装 node.js【下载历史版本node-v14.21.3-x64】1.2.安装1.3.检查是否安装成功&#xff1a;1.4.在Node下新建两个文件夹 node_global和node_cache并设置权限1.5.配置npm在安装全局模块时的路径和缓存cache的路径1.6.配置系统变量&…

网安常用的三个攻击方式

1.渗透测试执行标准&#xff08;PTES&#xff09; 渗透测试执行标准由7个部分组成&#xff0c;包括前期交互、情报收集、威胁建模、漏洞分析、渗透利用、后渗透、撰写报告。在中国&#xff0c;渗透测试必须经过授权&#xff0c;否则就违背了网络安全法。前期交互主要指开展渗透…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Marquee组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Marquee组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Marquee组件 跑马灯组件&#xff0c;用于滚动展示一段单行文本&#xff0c;仅当…

SpringCloud-Eureka服务注册中心测试实践

5. Eureka服务注册中心 5.1 什么是Eureka Netflix在涉及Eureka时&#xff0c;遵循的就是API原则.Eureka是Netflix的有个子模块&#xff0c;也是核心模块之一。Eureka是基于REST的服务&#xff0c;用于定位服务&#xff0c;以实现云端中间件层服务发现和故障转移&#xff0c;服…

Linux:开源世界的王者

在科技世界中&#xff0c;Linux犹如一位低调的王者&#xff0c;统治着开源世界的半壁江山。对于许多技术爱好者、系统管理员和开发者来说&#xff0c;Linux不仅仅是一个操作系统&#xff0c;更是一种信仰、一种哲学。 一、开源的魅力 Linux的最大魅力在于其开源性质。与封闭的…

curl 命令-接口测试

curl 命令-接口测试 JUST DO IT 温暖春日 在linux/Unix 为代表的os上, 对后端进行测试, 模拟连接请求都会书写脚本 场景: 在Linux 上接口测试工具有ab, restClient, postman等, 最常用的方法是curl进行简单测试 curl是非常方便的Rest 客户端, 可以很方便的完成 Rest API测…

leetcode142. 环形链表 II

leetcode142. 环形链表 II 题目 思路 集合法 将节点存入set&#xff0c;若重复出现则说明是环 快慢指针法 分别定义 fast 和 slow 指针&#xff0c;从头结点出发&#xff0c;fast指针每次移动两个节点&#xff0c;slow指针每次移动一个节点&#xff0c;如果 fast 和 slow指…

【成长记录】第一次写博客入csdn榜单了 还是第一.....

庆祝一下第一次拿综合榜榜一 Java内容榜第二 总之谢谢大家支持 小苏会继续努力的 可以看看我的新作 嘻嘻&#x1f601;&#x1f924;&#x1f449;&#x1f3fb;&#x1f448;&#x1f3fb; 谢谢大家

Linux之多线程

目录 一、进程与线程 1.1 进程的概念 1.2 线程的概念 1.3 线程的优点 1.4 线程的缺点 1.5 线程异常 1.6 线程用途 二、线程控制 2.1 POSIX线程库 2.2 创建一个新的线程 2.3 线程ID及进程地址空间布局 2.4 线程终止 2.5 线程等待 2.6 线程分离 一、进程与线程 在…

代码随想录算法训练营29期|day50 任务以及具体任务

第九章 动态规划part07 70. 爬楼梯 &#xff08;进阶&#xff09;import java.util.Scanner; class climbStairs{public static void main(String [] args){Scanner sc new Scanner(System.in);int m, n;while (sc.hasNextInt()) {// 从键盘输入参数&#xff0c;中间用空格隔开…

[C#] 如何调用Python脚本程序

为什么需要C#调用python&#xff1f; 有以下几个原因需要C#调用Python&#xff1a; Python拥有丰富的生态系统&#xff1a;Python有很多强大的第三方库和工具&#xff0c;可以用于数据科学、机器学习、自然语言处理等领域。通过C#调用Python&#xff0c;可以利用Python的生态系…

【从Python基础到深度学习】4. Linux常用命令(进阶)

接上篇 【从Python基础到深度学习】4. Linux 常用命令-CSDN博客 1.文件查找 - find 命令 find [搜索路径] [搜索条件] [操作]1.1 常用选项和参数 -name&#xff1a;按文件名搜索。 find 命令的 -name 选项可以接受通配符来匹配文件名。通配符可以帮助你更灵活地搜索文件名&a…

fluent脱硝SCR相对标准偏差、氨氮比、截面速度计算

# -*- coding: utf-8 -*- """ Created on Wed Sep 20 20:40:30 2023 联系QQ:3123575367&#xff0c;专业SCR脱硝仿真。 该程序用来处理fluent通过export-solution-ASCII-Space导出的数据&#xff0c;可计算标准偏差SD、相对标准偏差RSD,适用于求解平面的相对均匀…

【MATLAB源码-第135期】基于matlab的变色龙群优化算法CSA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 变色龙群优化算法&#xff08;Chameleon Swarm Algorithm&#xff0c;CSA&#xff09;是一种新颖的群体智能优化算法&#xff0c;受到自然界中变色龙捕食和社交行为的启发。变色龙以其独特的适应能力而著称&#xff0c;能够根…

猫头虎分享:localhost和127.0.0.1的区别是什么?

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Visual studio Code 配置用户代码片段---Vue为例

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

【JavaEE进阶】 图书管理系统开发日记——陆

文章目录 &#x1f38b;前言&#x1f343;删除图书&#x1f6a9;约定前后端交互接口&#x1f6a9;完善前端代码&#x1f6a9;接口测试 &#x1f38d;批量删除&#x1f6a9;约定前后端交互接口&#x1f6a9;实现后端服务器代码&#x1f388;控制层&#x1f388;业务层&#x1f3…

【双指针】【C++算法】1537. 最大得分

作者推荐 【深度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目 本文涉及知识点 双指针 LeetCoce 1537. 最大得分 你有两个 有序 且数组内元素互不相同的数组 nums1 和 nums2 。 一条 合法路径 定义如下&#xff1a; 选择数组 nums1 或者 nums2 开始遍历&…