Codeforces Round #785 (Div. 2)

news/2024/4/30 3:59:21/文章来源:https://blog.csdn.net/AC__dream/article/details/127167468

A. Subtle Substring Subtraction

题目链接:Problem - A - Codeforces

样例输入: 

5
aba
abc
cba
n
codeforces

样例输出:

Alice 2
Alice 4
Alice 4
Bob 14
Alice 93

题意:给定一个长度为n的字符串,然后Alice和Bob轮流操作,Alice每次取走一段长度为偶数的字符串,Bob每次取走一段长度为奇数的字符串,每次操作得到的价值就是所有字符的价值和,每个字符的价值就是ascall码-96.输出谁获得的价值大并且输出价值差。

分析:如果原串长度为偶数那么Alice一次取完最优,否则Alice取n-1个字符,剩下一个字符,贪心选择一下就行。特别需要注意的一点就是只有一个字符的情况,这种情况Alice无法取,那么就是Bob获胜。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
const int N=2e5+10;
char s[N+1];
int main()
{int T;cin>>T;while(T--){scanf("%s",s+1);int n=strlen(s+1);if(n==1){printf("Bob %d\n",s[1]-'a'+1);continue;} int ans=0;for(int i=1;i<=n;i++)ans+=s[i]-'a'+1;printf("Alice ");if(n&1)printf("%d\n",max(ans-2*(s[1]-'a'+1),ans-2*(s[n]-'a'+1)));elseprintf("%d\n",ans);}return 0;
} 

B. A Perfectly Balanced String?

题目链接:Problem - B - Codeforces

样例输入: 

5
aba
abb
abc
aaaaa
abcba

样例输出:

YES
NO
YES
YES
NO

题意:给定一个字符串,判断一个字符串是不是perfectly balanced,当且仅当对于s任意的一个子串t,都有字符u和字符v在其中出现的次数差不大于1时s为perfectly balanced,其中u和v必须在s中出现过。

分析:我们首先需要统计一下s串中出现过多少中不同的字符,然后我们讨论同一个字符相隔的距离,如果说距离小于不同字符数说明在其中至少有一个字符没有出现过,那么我们选以这个字符为两端的字符串就不满足题目中的定义,如果没有这种情况就说明s为perfectly balanced。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
const int N=2e5+10;
int f[N][26];
bool vis[26];
char s[N];
int main()
{int T;cin>>T;while(T--){scanf("%s",s+1);int n=strlen(s+1);memset(vis,false,sizeof vis);int cnt=0;for(int i=1;i<=n;i++)if(!vis[s[i]-'a']) vis[s[i]-'a']=true,cnt++;bool flag=true;for(int i=2;i<=n;i++){for(int j=0;j<26;j++)f[i][j]=f[i-1][j];f[i][s[i-1]-'a']=i-1;if(!f[i][s[i]-'a']) continue;if(i-f[i][s[i]-'a']<cnt) flag=false;}if(flag) puts("YES");else puts("NO");}return 0;
}

C. Palindrome Basis

题目链接:Problem - C - Codeforces

样例输入: 

2
5
12

样例输出:

7
74

题意:给定一个n,将n分解为若干个回文数的和式,问分解方案数。

分析:n是小于1e4的,直接暴力预处理出小于1e4的回文数,然后直接看成一个完全背包直接求解即可

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
const int N=4e4+10,mod=1e9+7;
int f[N];
int a[N],tt;
bool check(int x)
{int tx=x,y=0;while(tx){y=y*10+tx%10;tx/=10;}return x==y;
}
int main()
{for(int i=1;i<N;i++)if(check(i)) a[++tt]=i;f[0]=1;for(int i=1;i<=tt;i++)for(int j=a[i];j<N;j++)f[j]=(f[j]+f[j-a[i]])%mod;int T;cin>>T;while(T--){int n;scanf("%d",&n);printf("%d\n",f[n]);}return 0;
}

D. Lost Arithmetic Progression

题目链接:Problem - D - Codeforces

样例输入:

8
-3 1 7
-1 2 4
-9 3 11
0 6 3
2 5 5
7 5 4
2 2 11
10 5 3
0 2 9
2 4 3
-11 4 12
1 12 2
-27 4 7
-17 8 2
-8400 420 1000000000
0 4620 10

样例输出:

0
10
-1
0
-1
21
0
273000

题意:给定一个等差序列B和C,求解等差序列A的方案数使得满足C中包含所有A和B的公共项。

分析:首先我们能够发现等差数列A的公差一定是C的公差的因子,所以我们可以考虑枚举C的公差的因子来求取对于每一种因子对应的A的方案数,本质就是我们在C数组上进行向左向右扩展,假如我们能向左扩展p个点,向右扩展q个点,那么总的方案数就是(p+1)*(q+1),因为还要包含不扩展的一种情况,扩展的过程中一定要保证不能使得扩展出b数组中有但是c数组中没有的元素。我们先来看一下什么情况下对应着无解情况,其实就是c数组中出现了b数组中不存在的元素,否则我们直接令a数组等于c数组就是一个解,那么我们怎么判断c数组中是否有b数组中不存在的元素呢?就是首先要保证c数组的最小值要大于b数组的最小值,c数组的最大值要小于b数组的最大值,其次还要保证c数组的第一项在b数组中以及c数组的公差是b数组公差的倍数,这样才能保证c数组中的元素都在b数组中出现过。下面我们来看一下如何向左扩展,首先假设我们现在枚举a的公差为d,那么我们先求出来lcm(d,q),q是b数组的公差,那么每隔lcm(d,q)个数就会重复一次,我们从c数组的左边界lc开始向左扩展,第一个重合的位置是lc-lcm(d,q),如果这个位置b数组没有值,那么这个时候c数组就可以一直向左扩展而不受限制,那么这种情况对应着无穷多解,如果b数组有值那么这个位置a数组是不可能扩展到的,因为c数组没有这个值,那么a数组能够扩展到的最左边就是lc-lcm(d,q)+d,也就是重合元素的位置的右面一个位置,这样我们就求得了左边最多扩展几个元素,右边扩展也是同理的,这里就不赘述了

细节见代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
const int N=2e5+10,mod=1e9+7;
long long LCM(long long a,long long b)
{return a/__gcd(a,b)*b;
}
int main()
{int T;cin>>T;while(T--){long long b,q,y,c,r,z;scanf("%lld%lld%lld%lld%lld%lld",&b,&q,&y,&c,&r,&z);long long lb=b,rb=b+(y-1)*q;long long lc=c,rc=c+(z-1)*r;if(lb>lc||rb<rc){puts("0");continue;}else if((lc-lb)%q)//保证c的第一项在b中出现过 {puts("0");continue;}else if(z!=1&&(r%q))//c不只有一项时c的所有项都要在b中出现过 {puts("0");continue;}long long ans=0;for(long long d=1;d<=sqrt(r);d++){if(r%d) continue;long long lcm=LCM(d,q);if(lc-lcm<lb||rc+lcm>rb)//直接无限解 {ans=-1;break;}if(LCM(d,q)%r==0)//保证c数组符合题意 ans=(ans+(lcm/d)*(lcm/d))%mod;if(d*d==r) continue;long long t=r/d;lcm=LCM(t,q);if(lc-lcm<lb||rc+lcm>rb){ans=-1;break;}if(LCM(t,q)%r==0)//保证c数组符合题意ans=(ans+(lcm/t)*(lcm/t))%mod;}printf("%lld\n",ans);}return 0;
}

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

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

相关文章

【JavaDS】浅谈集合LinkedList的使用

✨博客主页: XIN-XIANG荣 ✨系列专栏:【Java实现数据结构】 ✨一句短话: 难在坚持,贵在坚持,成在坚持! 文章目录一. 什么是LinkedList?二. LinkedList的使用1. 构造方法2. 常用方法3. LinkedList的遍历三. ArrayList和LinkedList的区别一. 什么是LinkedList? LinkedList的底…

什么是虚拟计算机集群

这个问题来自近期几位网友的私信&#xff0c;他们不约而同问到一个问题&#xff1a;什么是虚拟计算机集群&#xff1f;Laxcus分布式操作系统是如何做的&#xff1f;下面就正式回答一下这个问题。 在我们传统的认知里&#xff0c;或者大家平常比较多接触的&#xff0c;都…

Linux基本使用

文章目录一.Linux的安装1.Linux系统的安装方式2.网卡设置3.安装SSH连接工具4.Linux和Windows目录对比二.Linux命令1.Linux常用命令2.文件目录操作命令三.软件安装1.软件安装方式一.Linux的安装 1.Linux系统的安装方式 &#xff08;1&#xff09;物理机安装&#xff1a;直接将…

NVMe系列专题之六:电源管理

NVMe协议其中有一项优势,就是低功耗!为了达成这个目标,NVMe中加入了自动电源状态转换和动态电源管理机制。 先来看一下NVMe Spec中对动态电源管理的描述图: 1. Host设定性能和功耗: Power Objective和Performance Objective。 2. Host通知Controller更改设备的power state。…

tf.pad()

参考 tf.pad - 云社区 - 腾讯云 tf.pad(tensor,paddings,modeCONSTANT,nameNone,constant_values0 )pad一个张量。 这个操作根据指定的paddings填充一个tensor。padding是一个形状为[n, 2]的整数张量&#xff0c;其中n是张量的秩。对于输入的每个维度D&#xff0c;paddings[D, …

Python数据分析之单变量分析

0 引言 在数据分析或者机器学习过程中&#xff0c;我们需要对变量或者特征进行分析&#xff0c;在分析过程中&#xff0c;一般都会分为两种&#xff1a;单变量分析、双变量分析。今天&#xff0c;土豆简单介绍一下单变量分析&#xff0c;单变量分析主要对单个变量或者特征进行…

基金入门笔记

什么是基金 基金概念【fund】为了某种目的设立的具有一定规模的资金&#xff08;保险金、公积金也可以理解为其中的一种&#xff09;但是平常说的指的是证券投资基金。证券包含债券 股票和期货。而证券投资基金是由基金公司 保险工资或者银行推出的 从众多投资者处募集巨额资金…

【易购管理系统】导航折叠效果

在el-menu中添加 v-model“isCollapse” <el-menu router"true"default-active"/"class"el-menu-vertical-demo"background-color"#545c64"text-color"#fff"active-text-color"#ffd04b"v-model"isCollap…

[Java]通过反射获取运行时类的对象及其内部结构

文章目录1. 创建运行时类的对象2. 体会反射的动态性3. 通过反射获取运行时类的结构3.1 用于测试的类的准备3.2 获取运行时类的属性3.2.1 getFields()3.2.2 getDeclaredField()3.2.3 获取属性的结构3.3 获取运行时类的方法3.3.1 getMethods()3.3.2 getDeclaredMethods()3.3.3 获…

美食篇:大闸蟹与梭子蟹的区别

文章目录大闸蟹梭子蟹区别总结吃蟹子的季节大闸蟹 梭子蟹 区别总结 大闸蟹香&#xff0c;小&#xff0c;有黄 梭子蟹鲜&#xff0c;大&#xff0c;无黄 小的梭子蟹也有黄&#xff0c;小的便宜 总结&#xff1a;浓缩的都是精华&#xff01;个头大的不一定好吃&#xff0c;但一…

面积结构设计

面积结构设计 针对面积的拓扑是尽可能最大程度地复用逻辑资源,常常以流量(速度)为代价。 1、折叠流水线 折叠流水线可以优化在流水线赋值逻辑的流水线设计的面积。 定点的分数乘法器。A表示定点刚好在最低有效位(LSB)右边的归一化整数格式,输入B的定点刚好在最高有效…

Torch

张量 Tensor torch.is_tensor[source] torch.is_tensor(obj) 如果obj是一个pytorch张量&#xff0c;则返回True torch.is_storage(obj) torch.set_default_tensor_type(t) 设置pytorch中默认的浮点类型&#xff0c;一般使用pytorch进行运算时候使用的都是浮点数来进行计算…

Linux进程(冯诺依曼体系结构、操作系统、进程)

文章目录一、冯诺依曼体系结构&#xff1a;1.基本概念&#xff1a;2.为什么如此设计&#xff1a;2.1.运行速度优化&#xff1a;2.2.成本&#xff1a;3.总结&#xff1a;二、操作系统&#xff1a;1.基本概念&#xff1a;2.操作系统的作用&#xff1a;3.什么是管理&#xff1a;三…

【Shell编程】Bash变量-用户自定义变量

目录系列文章Bash变量-用户自定义变量变量的命名规则变量分类本地变量实例系列文章 【Shell编程】Shell基本概述与脚本执行方式 【Shell编程】Shell中Bash基本功能 Bash变量-用户自定义变量 变量的命名规则 不能以数字开头在Bash中&#xff0c;变量的默认类型都是字符串型&…

关于XShell下载安装和连接Ubuntu(linux)

目录 1.XShell下载和安装 其实很多CSDN博主已经发表很多关于这个下载安装和连接的问题&#xff0c;但是我发现都是不完整的&#xff0c;所以自己再根据大佬写的&#xff0c;重新总结一下。 XSheel下载地址 XSheel安装教程 XShell连接的话看下面的教程&#xff0c;上面中的X…

系统调用,库函数以及Linux下与进程相关的指令操作

文章目录操作系统怎么为我们提供服务什么是系统调用库函数和系统调用Linux系统下操作进程的相关指令fork系统调用操作系统怎么为我们提供服务 我们知道&#xff0c;操作系统是管理的软件。那么有的时候&#xff0c;用户需要服务&#xff0c;那么对应的操作系统就要提供对应的服…

实验5 开源控制器实践——POX

实验5 开源控制器实践——POX 基础实验hub分析: 由于在hub模式下,采取广播帧的模式,交换机每收到一帧,会向所有端口进行广播,因而h1发给h2的数据包在h3的端口也能监听到switch分析: 由于在自学习模式下,交换机会根据mac高速缓存信息进行发送数据包,因而在实验过程中,对…

设计模式解析---------------单例模式

单例模式定义 确保某一个类只有一个实例&#xff0c;而且自行实例化并向整个系统提供这个实例。 单例模式的使用场景 确保某个类只有一个对象的场景&#xff0c;避免产生多个对象消耗过多的资源&#xff0c;或者某种对象有且只能有一个。 单例模式的UML图 角色介绍&#xff1…

数字媒体概论——系统篇

一&#xff1a;需求分析 需求分析三大要素&#xff1a; 表达内容 -> 媒体种类面向人群 -> 交互方式使用方式 -> 硬件需求 例如&#xff1a;海洋馆需要一个可以展示海洋生物知识的媒体交互系统&#xff0c;可供多人同时观赏&#xff0c;主要面向儿童&#xff0c;这里…

计算机二级C语言题库(44套真题+刷题软件)第一套

刷题软件 gongzhonghao&#xff1a;露露IT 1、循环队列的存储空间为Q(1:100),初始状态为frontrear100。经过一系列正常的入队与退队操作后,frontrear99,则循环队列中的元素个数为( )。 A. 0或100 B. 1 C. 2 D. 99 本题考查知识点是循环队列。当队头和队尾指针指向同一个元素…