codeforce #925 (div3) 题解

D. Divisible Pairs

给出数组 a a a,如果二元组 ( i , j ) (i,j) (i,j)满足 a i + a j m o d x = = 0 & & a i − a j m o d y = = 0 a_i + a_j mod x ==0 \&\& a_i - a_j mod y == 0 ai+ajmodx==0&&aiajmody==0,则beauty。其中 i < j i<j i<j

根据题意不难得出,符合条件的二元组应满足
a i m o d x + a j m o d x = x a i m o d y = a j m o d y a_i \mod x + a_j \mod x = x \\ a_i \mod y = a_j \mod y aimodx+ajmodx=xaimody=ajmody

所以用 ( a i m o d x , a i m o d y ) (a_i \mod x, a_i \mod y) (aimodx,aimody)作为key,对于每个元素 a i a_i ai查找 ( x − a i m o d x , a i m o d y ) (x- a_i \mod x, a_i \mod y) (xaimodx,aimody)的个数

#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <time.h>
#include <set>
#include <map>
#include <queue>#define IOS     ios::sync_with_stdio(0);cin.tie(0);
#define rep(index,start,end) for(int index = start;index < end; index ++)
#define drep(index,start,end) for(int index = start;index >= end; index --)using namespace std;typedef long long ll;
ll gcd(ll a, ll b){ll t;while(b){t = b;b = a % b;a = t;}return a;
}const int maxn = 2e5+5;typedef pair<int, int> key;
int n,x,y;
map<key, int> store;
int main() {IOSint t;cin>>t;while(t--) {store.clear();cin>>n>>x>>y;int tmp;ll sum = 0LL;rep(i,0,n) {cin>>tmp;int modx = tmp % x;int mody = tmp % y;key now ={modx, mody};// calint bmody = tmp % y;int bmodx = (x - tmp%x) % x;sum += store[{bmodx, bmody}];if (store.find(now) != store.end()) {store[now] += 1;} else {store[now] = 1;}}cout<<sum<<endl;}return 0;
}

E. Anna and the Valentine’s Day Gift 博弈论

俩人玩游戏,一个能选一个数reverse,一个能选一个数拼接,看最后的结果能不能大于 1 0 m 10^m 10m

如果想要减少最终结果的位数,那么必须reverse之后产生前导零,例如10000,反转后变成1。那么这道题就变成了对反转后产生前导零个数的排序。注意我们的对手不傻,当我们把产生最多前导零的数字反转后,对手肯定会把产生第二多的拼接保护,防止最终结果位数减少,所以只能减去排序结果的偶数位

#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <time.h>
#include <set>
#include <map>
#include <queue>#define IOS     ios::sync_with_stdio(0);cin.tie(0);
#define rep(index,start,end) for(int index = start;index < end; index ++)
#define drep(index,start,end) for(int index = start;index >= end; index --)using namespace std;typedef long long ll;
ll gcd(ll a, ll b){ll t;while(b){t = b;b = a % b;a = t;}return a;
}const int maxn = 2e5+5;struct node{int digit;int zero;
};int n,m;
node store[maxn];
bool cmp(const node& a, const node& b) {return a.zero > b.zero;
}
int main() {IOSint t;cin>>t;while(t--) {int tmp;cin>>n>>m;int sum = 0;rep(i,0,n) {cin>>tmp;int dig = 0;int zero = 0;bool leading = true;while(tmp > 0) {dig ++;if (leading && !(tmp % 10)) {zero ++;} else {leading = false;}tmp /= 10;}
//            cout<<"dig :"<<dig<<" zero:"<<zero<<endl;store[i].digit = dig;store[i].zero = zero;sum += dig;}sort(store, store+n, cmp);
//        cout<<"test log:"<<store[0].zero<<endl;for(int i=0;i<n;i+=2) {sum -= store[i].zero;}if (sum < m+1) {cout<<"Anna"<<endl;} else {cout<<"Sasha"<<endl;}}return 0;
}

https://codeforces.com/contest/1931/problem/F 拓扑排序

给几个数组,第一位没有用,问有没有一个排列能满足这几个数组中元素的先后关系。

数组给出的顺序天然形成有向图。像 1 → 2 1 \rightarrow 2 12 2 → 1 2 \rightarrow 1 21这种矛盾的顺序必然是不存在序列的,也就是说给出的关系不能有环。所以简单套一个拓扑排序就可以了


#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <time.h>
#include <set>
#include <map>
#include <queue>#define IOS     ios::sync_with_stdio(0);cin.tie(0);
#define rep(index,start,end) for(int index = start;index < end; index ++)
#define drep(index,start,end) for(int index = start;index >= end; index --)using namespace std;const int maxn = 2e5+5;int store[maxn];
vector<int> adj[maxn];
int in_degrad[maxn];
queue<int> Q;
int main() {IOSint t;cin>>t;while(t--) {int n,k;cin>>n>>k;// initmemset(in_degrad, 0, sizeof(in_degrad));rep(i,0,n+1) adj[i].clear();while(!Q.empty()) Q.pop();rep(i,0,k) {rep(j,0,n) cin>>store[j];rep(j,1,n-1) {int commonA = store[j];int commonB = store[j+1];if (find(adj[commonA].begin(), adj[commonA].end(), commonB) == adj[commonA].end()) {adj[commonA].push_back(commonB);in_degrad[commonB] ++;}}}rep(i,1,n+1) {if (!in_degrad[i])Q.push(i);}while (!Q.empty()) {int now = Q.front();Q.pop();int len = adj[now].size();rep(i,0,len) {int next = adj[now][i];if (-- in_degrad[next] == 0)Q.push(next);}}bool _loop = false;rep(i,1,n+1)if (in_degrad[i]) {
//                cout<<i<<' '<<in_degrad[i]<<endl;_loop = true;break;}cout<<(_loop? "NO":"YES")<<endl;}return 0;
}

G. One-Dimensional Puzzle 高二排列组合问题

题干太长懒得翻译 有多少种排列方式可以把给出的所有形状拼成一个长条。

请添加图片描述
大概就是这么个拼接的方法。shape 1和shape 2的个数相差不能超过1,超过就拼不出来;shape 3和shape 4就是造成不同拼接方式的关键,穿插在shape 1和shape 2的间隙,要注意shape 3是可以自拼接,并不是每个间隙只能塞一个

#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <time.h>
#include <set>
#include <map>
#include <queue>#define IOS     ios::sync_with_stdio(0);cin.tie(0);
#define mem(A,B) memset(A,B,sizeof(A));
#define rep(index,start,end) for(int index = start;index < end; index ++)
#define drep(index,start,end) for(int index = start;index >= end; index --)using namespace std;typedef long long ll;const int maxn = 3e6+5;
const int mod = 998244353;ll fact[maxn];ll pow_mod(ll x, ll p) {if (p == 0) {return 1;}if (p % 2 == 0) {ll y = pow_mod(x, p / 2);return (y * y) % mod;}return (x * pow_mod(x, p - 1)) % mod;
}ll inv(ll x) {return pow_mod(x, mod - 2);
}
ll cnk(ll n, ll k) {ll res = fact[n];res = (res * inv(fact[k])) % mod;res = (res * inv(fact[n - k])) % mod;
//    cout<<"n:"<<n<<" k:"<<k<<" res:"<<res<<endl;return res;
}
int abs(int num) {return num<0 ? -num :num;
}int store[5];
int main() {IOSfact[0] = fact[1] = 1;rep(i,2,maxn)fact[i] = (fact[i-1] * i) % mod;int t;cin>>t;while(t--) {rep(i,0,4) cin>>store[i];if (store[0] == 0 && store[1] == 0) {cout<<((store[2]!=0 && store[3] != 0)? 0:1)<<endl;continue;}int dfi = abs(store[1] - store[0]);if (dfi > 1) {cout<<0<<endl;continue;}ll ans = 0;if (dfi == 0) {// same and not 0int x3,x4;x3 = store[1];x4 = x3 + 1;ans += (cnk(store[2]+x3-1, store[2]) * cnk(store[3]+x4-1, store[3])) % mod;x4 = store[1];x3 = x4 + 1;ans = ans + (cnk(store[2]+x3-1, store[2]) * cnk(store[3]+x4-1, store[3])) % mod;ans = ans % mod;} else {// greater than oneint x3,x4;x3 = x4 = max(store[0], store[1]);ans = (cnk(store[2]+x3-1, store[2]) * cnk(store[3]+x4-1, store[3])) % mod;}cout<<ans<<endl;}return 0;
}

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

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

相关文章

HarmonyOS鸿蒙端云一体化开发--适合小白体制

端云一体化 什么是“端”&#xff0c;什么是“云”&#xff1f; 答&#xff1a;“端“&#xff1a;手机APP端 “云”:后端服务端 什么是端云一体化&#xff1f; 端云一体化开发支持开发者在 DevEco Studio 内使用一种语言同时完成 HarmonyOS 应用的端侧与云侧开发。 …

《经典论文阅读1》YouTubeDNN—基于深度学习的搜推系统开山之作

论文链接&#xff1a; https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf全文由『说文科技』原创出品。版权所有&#xff0c;翻版必究。 这篇发表于2016年九月的文章&#xff0c;在搜索推荐仍然基于矩阵分解的时代&#xff0c;抛…

python基础——类型注解【变量,函数,Union】

&#x1f4dd;前言&#xff1a; 上一篇文章Python基础——面相对象的三大特征提到&#xff0c;python中的多态&#xff0c;python中&#xff0c;类型是动态的&#xff0c;这意味着我们不需要在声明变量时指定其类型。然而&#xff0c;这可能导致运行时错误&#xff0c;因为我们…

【数据结构】泛型(分享重点)

什么是泛型&#xff1f; 泛型就是适用于许多许多类型&#xff0c;对类型参数化。 怎么创建一个泛型呢 class 泛型类名称<类型形参列表> { // 这里可以使用类型参数 } class ClassName<T1, T2, ..., Tn> { } class 泛型类名称<类型形参列表> extends 继承类…

2024HW --> 安全产品 Powershell无文件落地攻击

在HW中&#xff0c;除了了解中间件&#xff0c;web漏洞&#xff0c;这些攻击的手法&#xff0c;还得了解应急响应&#xff0c;安全产品&#xff0c;入侵排查&#xff0c;溯源反制...... 那么今天&#xff0c;就来说一下安全产品&#xff08;安全公司我就不说了&#xff0c;这个…

自动化收集Unity版本更新日志

自动化收集Unity版本更新日志 &#x1f365;功能介绍&#x1f96a;食用手册填写配置开始搜集 &#x1f368;数据展示 &#x1f365;功能介绍 &#x1f4a1;获取指定年份中所有的Unity版本更新日志。 &#x1f4a1;根据指定字符串过滤。 &#x1f4a1;.收集后自动保存成markdow…

Niobe开发板OpenHarmony内核编程开发——定时器

本示例将演示如何在Niobe Wifi IoT开发板上使用cmsis 2.0 接口进行定时器开发 Timer API分析 osTimerNew() /// Create and Initialize a timer./// \param[in] func function pointer to callback function./// \param[in] type \ref osTimerOnce …

Kafka 架构深入探索

目录 一、Kafka 工作流程及文件存储机制 二、数据可靠性保证 三 、数据一致性问题 3.1follower 故障 3.2leader 故障 四、ack 应答机制 五、部署FilebeatKafkaELK 5.1环境准备 5.2部署ELK 5.2.1部署 Elasticsearch 软件 5.2.1.1修改elasticsearch主配置文件 5.2…

事务隔离级别的无锁实现方式 -- MVCC

MVCC的全称是Multiversion Concurrency Control(多版本并发控制器)&#xff0c;是一种事务隔离级别的无锁的实现方式&#xff0c;用于提高事务的并发性能&#xff0c;即事务隔离级别的一种底层实现方式。 在了解MVCC之前&#xff0c;我们先来回顾一些简单的知识点&#xff1a;…

终端工具命令行颜色配置(解决终端工具连上服务器之后,无颜色问题)

本期主题&#xff1a; 讲解使用mobaxterm等终端工具连上服务器&#xff0c;但是命令行没有颜色的问题 目录 1. 问题描述2. 原因解释3.测试 1. 问题描述 使用终端工具&#xff08;Mobaxterm等&#xff09;连上服务器之后&#xff0c;发现终端工具没有颜色&#xff0c;如下图&am…

API接口京东开放平台item_get-获得京东商品详情API接口根据商品ID查询商品标题价格描述等详情数据

京东商品详情API接口可以提供以下方面的信息&#xff1a; 商品基础信息&#xff1a;包括商品的标题、价格、描述、图片等基本信息&#xff0c;这是构建电商平台的基础数据。商品分类信息&#xff1a;帮助用户更好地了解商品所属的类别&#xff0c;便于商品筛选和查找。商品销售…

RK3568平台 驱动实现IIC设备读取十六位寄存器状态

一.项目需求 要求读取GVS2715这个IIC设置寄存器的值来获取版本号&#xff0c;GVS2715这个芯片是十六位寄存器。 当使用i2ctool工具读取十六位寄存器的时候&#xff0c;发现无法读取出来&#xff0c;读取的都是XXXX。 二.从零开始写IIC设备驱动读取十六位寄存器的状态 #includ…

CentOS 7安装Zookeeper

说明&#xff1a;本文介绍如何在CentOS 7操作系统下使用Zookeeper 下载安装 首先&#xff0c;去官网下载所需要安装的版本&#xff0c;我这里下载3.4.9版本&#xff1b; 上传到云服务器上&#xff0c;解压 tar -xvf zookeeper-3.4.9.tar.gz修改配置 进入Zookeeper目录下的co…

Spark-机器学习(1)什么是机器学习与MLlib算法库的认识

从这一系列开始&#xff0c;我会带着大家一起了解我们的机器学习&#xff0c;了解我们spark机器学习中的MLIib算法库&#xff0c;知道它大概的模型&#xff0c;熟悉并认识它。同时&#xff0c;本篇文章为个人spark免费专栏的系列文章&#xff0c;有兴趣的可以收藏关注一下&…

前端标记语言HTML

HTML&#xff08;HyperText Markup Language&#xff09;是一种用于创建网页的标准标记语言。它是构建和设计网页及应用的基础&#xff0c;通过定义各种元素和属性&#xff0c;HTML使得开发者能够组织和格式化文本、图像、链接等内容。 HTML的基本结构 文档类型声明&#xff0…

SpringBoot+FreeMaker

目录 1.FreeMarker说明2.SpringBootFreeMarker快速搭建Pom文件application.properties文件Controller文件目录结构 3.FreeMarker数据类型3.1.布尔类型3.2.数值类型3.3.字符串类型3.4.日期类型3.5.空值类型3.6.sequence类型3.7.hash类型 4.FreeMarker指令assign自定义变量指令if…

开源版中文和越南语贷款源码贷款平台下载 小额贷款系统 贷款源码运营版

后台 代理 前端均为vue源码&#xff0c;前端有中文和越南语 前端ui黄色大气&#xff0c;逻辑操作简单&#xff0c;注册可对接国际短信&#xff0c;可不对接 用户注册进去填写资料&#xff0c;后台审批&#xff0c;审批状态可自定义修改文字显示 源码免费下载地址抄笔记 (chaob…

详解构造函数

前言 希望这篇文章是有意义的&#xff0c;能够帮助初学者理清构造函数的概念&#xff0c;关系及误区。首先定义一个日期类&#xff0c;借助日期类讲解构造函数。 class Date {public:void Init(int year, int month, int day) //初始化数据的方法{_year year;_month month…

CDP7 下载安装 Flink Percel 包

下载链接&#xff1a;https://www.cloudera.com/downloads/cdf/csa-trial.html 点击后选择版本&#xff0c; 然后点击download now&#xff0c;会有一个协议&#xff0c;勾选即可&#xff0c;然后就有三个文件列表&#xff0c; 我这里是已经注册登录的状态&#xff0c;如果没…

64B/66B GT Transceiver 配置

一、前言 前一篇文章已经讲述了64B/66B的编码原理&#xff0c;此篇文章来配置一下7系列GT的64B/66B编码。并讲述所对应的例子工程的架构&#xff0c;以及部分代码的含义。 二、IP核配置 1、打开7 Series FPGAs Transceiver Wizards&#xff0c;选择将共享逻辑放置在example …