Educational Codeforces Round 81 (Rated for Div. 2) B. Infinite Prefixes 数学

传送门

文章目录

  • 题意:
  • 思路:

题意:

给你个串sss,让后把它重复无限次得到ttt,定义前缀的价值为cnt0−cnt1cnt_0-cnt_1cnt0cnt1,求ttt的前缀价值为xxx的前缀个数,若有无限多输出−1-11

思路:

定义pre[i]pre[i]pre[i]为前iii个字符的价值。
如果pre[n]=0pre[n]=0pre[n]=0,那么说明每个串都独立,如果至少一个pre[i]=xpre[i]=xpre[i]=x,那么说明他是有无限个,输出−1-11,否则就不存在输出000姐即可。
如果pre[n]!=0pre[n]!=0pre[n]!=0,那说明我们可以以pre[n]pre[n]pre[n]为基底,将xxx缩小p∗pre[n]p*pre[n]ppre[n],让后再加上某一个前缀pre[i]pre[i]pre[i],即p∗pre[n]+pre[i]=xp*pre[n]+pre[i]=xppre[n]+pre[i]=x,转化一下p=x−pre[i]pre[n]p=\frac{x-pre[i]}{pre[n]}p=pre[n]xpre[i],也就是当(x−pre[i])modpre[n]=0(x-pre[i])\bmod pre[n]=0(xpre[i])modpre[n]=0的时候贡献加一,需要注意(x−pre[i])(x-pre[i])(xpre[i])pre[n]pre[n]pre[n]需要同号,最后特判一下x=0x=0x=0的情况就好啦。

//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,x;
char s[N];int main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);int _; scanf("%d",&_);while(_--){scanf("%d%d%s",&n,&x,s+1);int sum=0,flag=0;for(int i=1;i<=n;i++){sum+=s[i]=='0';sum-=s[i]=='1';if(sum==x) flag=1;}if(sum==0) { if(flag) puts("-1"); else puts("0"); continue; }int ans=0,pre=0;for(int i=1;i<=n;i++){pre+=s[i]=='0';pre-=s[i]=='1';if(1ll*sum*(x-pre)>=0&&(x-pre)%sum==0)ans++;}printf("%d\n",ans+(x==0));}return 0;
}
/**/

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

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

相关文章

终于等到你!微软正式上线 Windows Terminal 预览版

前一段时间&#xff0c;一直在知乎、技术社区收到技术小伙伴们的终极拷问&#xff1a;微软Build 大会上提到的「6月中旬」要上Windows store 的 Windows Terminal 到底啥时候可以用到呀&#xff1f;有一次&#xff0c;我跑去我给 Windows Terminal 提的某个 issue 里问 Windows…

牛客练习赛76 E 牛牛数数(线性基加二分)

牛客地址 思路&#xff1a;全部组合异或&#xff0c;很容易想到使用线性基&#xff0c;正好线性基中有一个求第k小的用法&#xff0c;那我们可以二分来找 K是第几小的数&#xff0c;然后用总数减去。 #include <iostream> #include <cstdio> #include <fstream…

Educational Codeforces Round 81 (Rated for Div. 2) E. Permutation Separation 线段树 + dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个打乱的排列&#xff0c;每个位置都各有一个价值&#xff0c;让你选择一个分界点&#xff0c;分成p1,p2,...,prp_1,p_2,...,p_rp1​,p2​,...,pr​和pr1,...,pn−1,pnp_{r1},...,p_{n-1},p_{n}pr1​,…

几种设计良好结构以提高.NET性能的方法

写在前面设计良好的系统&#xff0c;除了架构层面的优良设计外&#xff0c;剩下的大部分就在于如何设计良好的代码&#xff0c;.NET提供了很多的类型&#xff0c;这些类型非常灵活&#xff0c;也非常好用&#xff0c;比如List&#xff0c;Dictionary、HashSet、StringBuilder、…

牛客挑战赛47 D Lots of Edges(最短路+递归枚举子集)

牛客挑战赛47 D Lots of Edges 思路&#xff1a;点的权值最多只有&#xff08;1<<17&#xff09;-1(131071) ,那我们可以枚举终点的值来算最短路&#xff0c;每个点能连边的值都是固定的&#xff0c;可以通过递归枚举子集&#xff08;技巧&#xff09;来找&#xff0c;每…

Codeforces Round #715 (Div. 2) C. The Sports Festival 区间dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给定一个序列aaa&#xff0c;每次拿出来任意一个数(注意每次选的数不同)&#xff0c;让后定义maxmax(a1,a2,...,ai)maxmax(a_1,a_2,...,a_i)maxmax(a1​,a2​,...,ai​)&#xff0c;minmin(a1,a2,...,ai)min…

.NET CORE下最快比较两个文件内容是否相同的方法

最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下:项目是.NET CORE,所以使用C#进行编写比较方法文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要使用非缓存的比较方式)不依赖第三方库越快越好为了选出最优的解决方案,我搭建了一个…

牛客挑战赛47 A 一道GCD问题

牛客挑战赛47 A 一道GCD问题 思路参考牛客上的题解&#xff1a; 根据多维的更相减损术得gcd(x,y,z)gcd(x,y−x,z−y)得 gcd(a1k,a2k,a3k…,ank)gcd(a1k,a2-a1,a3-a2…)gcd(a1k,a2k,a3k…,ank)gcd(a1k,a2−a1,a3−a2…) 我们很容易可以求得等式右边的值为g我们很容易可以求得等…

Codeforces Round #715 (Div. 2) D. Binary Literature 构造

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你个nnn和三个长度为n∗2n*2n∗2的串&#xff0c;让你构造一个长度≤n∗3\le n*3≤n∗3的串&#xff0c;使其子序列包含至少两个给定串。 思路&#xff1a; 先考虑如果没有长度限制&#xff0c;那么我们…

[译]试用新的System.Text.Json API

译注尝试新的System.Text.Json API对于.NET Core 3.0&#xff0c;我们 提供了一个名为System.Text.Json的全新命名空间 &#xff0c;支持读取器/写入器&#xff0c;文档对象模型&#xff08;DOM&#xff09;和序列化。在这篇博文中&#xff0c;我告诉你为什么我们建造它&#x…

牛客挑战赛47 C 条件(Floyd bitset优化)

牛客挑战赛47 C 条件 思路&#xff1a;首先我们要两个图&#xff0c;一个是一定能到达的&#xff0c;一个是可能到达的&#xff0c;如果我们使用floyd (n^3)就有可能会超时&#xff0c;因为只要求询问能否到达&#xff0c;所以权值只有0和1&#xff0c;那我们可以使用bitset来…

Educational Codeforces Round 81 (Rated for Div. 2) C. Obtain The String 序列自动机

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你两个串s,ts,ts,t&#xff0c;每次可以取sss串的一个子序列&#xff0c;问你最少取多少次子序列&#xff0c;将这些子序列拼起来能得到ttt。 思路&#xff1a; 发现我题解里面没写过序列自动机&#xf…

牛客练习赛75 D 减数游戏(队列优化(需要取模的)堆)

牛客练习赛75 D 减数游戏 思路:写一下式子可以发每次选择最小的两个数进行操作&#xff0c;最后得到的答案会是最大的&#xff0c;那我们可以将它放进一个最小堆中来维护&#xff0c;但是里面的数是需要取模的&#xff0c;当它取模的时候&#xff0c;将会变小。那我们可以用一…

C#规范整理·资源管理和序列化

源管理&#xff08;尤其是内存回收&#xff09;曾经是程序员的噩梦&#xff0c;不过在.NET平台上这个噩梦似乎已经不复存在。CLR在后台为垃圾回收做了很多事情&#xff0c;使得我们现在谈起在.NET上进行开发时&#xff0c;都会说还是new一个对象吧&#xff01;回收&#xff1f;…

Codeforces Round #615 (Div. 3) A-F

传送门 这场比较简单&#xff0c;简单的题就不说题意了。 A. 问加nnn个数&#xff0c;能否使a,b,ca,b,ca,b,c相等。 直接先加到相等再看看模333是否为000即可。 //#pragma GCC optimize(2) #include<cstdio> #include<iostream> #include<string> #incl…

使用Elasticsearch 构建 .NET 企业级搜索

最近几年出现的云计算为组织和用户带来了福音。组织对客户的了解达到前所未有的透彻&#xff0c;并能够采用个性化通信锁定客户。用户几乎可以随时随地获取其数据&#xff0c;使其更加易于访问和使用。为了存储所有这些数据&#xff0c;大型数据中心遍布全世界。但是&#xff0…

牛客练习赛73 D 离别(线段树+右端点排序离线查询)

牛客练习赛73 D 离别 思路: 对于每一个固定的右端点i&#xff0c;我们都找到一个区间&#xff08;l,r&#xff09;使得区间中的点为左端点时 里面最大的的种数为k。 这个可以用队列或者vector来维护。 然后我们对于q个查询&#xff0c;安装r从小到大排序。 开始遍历&#xff0…

Codeforces Round #617 (Div. 3) F. Berland Beauty 思维

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给定一棵树&#xff0c;再给定若干两点最短路之间边权的最小值&#xff0c;让你给树的边权赋值&#xff0c;使得满足给定的条件&#xff0c;如果不存在输出−1-1−1。 思路&#xff1a; 观察一个性质&…

书籍推荐:《More Effective C#》

很多年前看过Bill Wagner的《Effective C#》第一版&#xff0c;涵盖了C#2.0相关语言特性的最佳实践&#xff0c;教我们怎样更优雅地去编写C#代码&#xff0c;当时觉得受益匪浅。最近拿到了《More Effective C#》第二版&#xff0c;目前看了大概三分之二&#xff0c;让我对C#的的…

Codeforces Round #717 (Div. 2) D(倍增dp)

Codeforces Round #717 (Div. 2) D 题意:n个数 q个询问&#xff0c;每一个询问有l和r&#xff0c;问你l到r这段区间中最少能分成几段&#xff0c;每一段中的数都是互质的。 思路&#xff1a;首先预处理出每一个点向左走最多能走多远&#xff0c;可以分解质因数来找&#xff0c…