CF-938

C

没啥好分析的,就记录一下我因为没有清空s[n+1]、上取整写成了下取整卡了一个多小时(╬▔皿▔)╯

const int N=2e5+5;
int a[N],p[N],s[N];
void solve(){
int n,k;cin>>n>>k;
int sum=0;
rep(i,1,n){
cin>>a[i];
p[i]=p[i-1]+a[i];
}
if(p[n]<=k){
cout<<n<<endl;
return;
}
s[n+1]=0;//
per(i,n,1){
s[i]=s[i+1]+a[i];
}
int ans=0;
int l=0,r=n,mid;
while(r-l>1){
mid=l+r>>1;
if(p[mid]<(k+1)/2) l=mid;
else r=mid;
}
//r为第一个p[i]>=(k+1)/2的下标
if(p[r]>(k+1)/2) ans+=r-1;
else if(p[r]==(k+1)/2) ans+=r;
l=1,r=n+1;
while(r-l>1){
mid=l+r>>1;
if(s[mid]<(k+1)/2) r=mid;
else l=mid;
}
//l为第一个p[i]>=(k+1)/2的下标
if(s[l]>k/2) ans+=n-l;
else if(s[l]==k/2) ans+=n-l+1;
cout<<ans<<endl;
}

D

可惜我赛前不久还做过滑动窗口的题,赛时却一直调不出来 /_ \

分析

就是在数组a中找有多少个长度为m的子段,满足子段内元素与b数组的元素至少有k个相同,我们可以枚举长度为m的子段,用桶数组维护当前子段的元素种类数,更新就是当长度大于m时,减去子段第一个元素的种类数,再判断一下此时该元素的种类数是否小于b数组中的种类数,是的话匹配数now--

代码

const int N=2e5+5,M=1e6+5;
int a[N],b[N],tb[M],ta[M];
void solve(){
int n,m,k;cin>>n>>m>>k;
rep(i,1,n){
cin>>a[i];
}
rep(i,1,m){
cin>>b[i];
tb[b[i]]++;
}
int j=0,now=0,ans=0;
rep(i,1,n){
ta[a[i]]++;//对于每个新元素,将其加入桶中
if(ta[a[i]]<=tb[a[i]]) now++;
j=i-m;
if(j>=1){//子段长度大于m时,删除第一个元素的种类数
ta[a[j]]--;
if(ta[a[j]]<tb[a[j]]) now--;//若相等则说明删除该元素对匹配数无影响
}
if(j>=0&&now>=k) ans++;
}
//清空桶数组,用memset会t
rep(i,1,n) ta[a[i]]=0;
rep(i,1,m) tb[b[i]]=0;
cout<<ans<<endl;
}

E

这题让我想起了之前还没补的一道题 3492: 王阿姨处理信号,也是01字符串,也需要做区间处理……

知识点

利用异或差分数组进行区间取反

常用在只有01两种元素的序列中

int n;string s;cin>>n>>s;
s=' '+s;
int l,r;cin>>l>>r;
//将区间[l,r]取反
d[l]^=1,d[r+1]^=1;
rep(i,1,n){
d[i]^=d[i-1];
cout<<((s[i]-'0')^d[i]);
}

分析

从大到小枚举取反区间的长度k,若遇到s[i]=0,则对[i,i+k-1]进行区间取反,若有k合法就跳出

代码

const int N=1e4+5;
int d[N];
void solve(){
int n;string s;cin>>n>>s;
s=' '+s;
per(k,n,1){//枚举取反区间
bool f=1;
rep(i,1,n) d[i]=0;//异或差分数组,d[l]=d[r]=1表示[l,r-1]均取反
rep(i,1,n){
d[i]^=d[i-1];//类似差分数组做前缀和还原为当前数
int x=(s[i]-'0');
//cout<<k<<" "<<i<<" "<<x<<endl;
if(x^d[i]==0){
/*
若x=d[i]=1,表示当前数此前已被取反为0,需要再取反
若x=d[i]=0,表示当前数原本就是0,需要取反
*/
if(i+k-1>n){//若取反区间的终点大于n,由于已无法操作,故当前k不可行
f=0;
break;
}
d[i]^=1;
d[i+k]^=1;
}
}
if(f){
cout<<k<<endl;
break;
}
}
}

CF-938(C-E)的更多相关文章

  1. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  2. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  3. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

  4. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  5. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  6. CF memsql Start[c]UP 2.0 A

    CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 m ...

  7. CF memsql Start[c]UP 2.0 B

    CF memsql Start[c]UP 2.0 B B. Distributed Join time limit per test 1 second memory limit per test 25 ...

  8. CF #376 (Div. 2) C. dfs

    1.CF #376 (Div. 2)    C. Socks       dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...

  9. CF #375 (Div. 2) D. bfs

    1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...

  10. CF #374 (Div. 2) D. 贪心,优先队列或set

    1.CF #374 (Div. 2)   D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...

随机推荐

  1. C++ Qt开发:QNetworkAccessManager网络接口组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QNe ...

  2. nginx部署SSL证书后,使用域名访问报错-net::ERR_SSL_PROTOCOL_ERROR

    一.问题由来 最近在做一个小程序的后台,自己去微信官网上查看了相关的规定,小程序正式发布时,要求比较严格,必须是使用https+域名访问,自己在 阿里云购买了一个域名,可是没有备案.SSL证书去阿里云 ...

  3. nginx 重写(rewrite) 重定向(return error_page) 详解

    使用 rewrite 指令用于重写URL Nginx的rewrite指令用于重写URL,它有几个参数,这些参数定义了如何匹配和重写请求的URL.以下是rewrite指令的常见参数及其说明: Regex ...

  4. pod常见的非故障及故障状态解析

    在Kubernetes中,Pod的状态可以反映其当前的生命周期状态.是否正常运行或遇到了某些状况.以下是一些Pod常见的非故障状态: Running:这是Pod最常见的非故障状态,表示Pod已经成功调 ...

  5. openssl 版本兼容问题 备忘录

    第三方依赖openssl,但openssl却有版本不同符号不兼容的问题,由于条件限制不得不使用固定版本的openssl,又或者同时有两个第三方依赖不同版本的openssl,只能靠手动,为了备忘. 1. ...

  6. 安装libevent

    1.在libevent官网(http://libevent.org/)上下载压缩包(我下载的是libevent-2.1.8-stable.tar.gz) 2.解压压缩包:tar -zxvf libev ...

  7. 无力吐槽,uniapp项目外包接单碰上了这样的开发人员

    随着疫情期形式的不断变化,线上线下各个行业都受到冲击.2020年我在家歇息了近4个月:跟很多人一样这一年我失业了,那段时间真的很迷茫,年龄也已过30,加上网上各种"开发人员35岁" ...

  8. 记一次 .NET某施工建模软件 卡死分析

    一:背景 1. 讲故事 前几天有位朋友在微信上找到我,说他的软件卡死了,分析了下也不知道是咋回事,让我帮忙看一下,很多朋友都知道,我分析dump是免费的,当然也不是所有的dump我都能搞定,也只能尽自 ...

  9. 记录--用Echarts打造自己的天气预报!

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 最近刚刚学习了Echarts的使用,于是想做一个小案例来巩固一下.项目效果如下图所示: 话不多说,开始进入实战. 创建项目 这里我们 ...

  10. PHP 数据库表单创建方法记录(储存三方接口数据必用)

    最近项目在对接第三方接口数据,这里分享下我用来偷懒的一个PHP方法: /** * 数据库表单创建方法 * @return string * @throws \Exception */ public f ...