当前位置: 首页 > news >正文

Codeforces Round 962 (Div. 3)-补题

A. Legs

二分答案,最后取左端点的值,保险起见,还是再验算一次

bool check(int x){int a=n/4;if(a*4+(x-a)*2>=n) return true;return false;
}void solve(){cin>>n;int l=0,r=n;while(l+1<r){int mid=l+r>>1;if(check(mid)) r=mid;else l=mid;}if(check(l)) cout<<l<<endl;else cout<<r<<endl;
}

B. Scale

以第一个为基础,隔k个字符取

void solve(){cin>>n>>k;for(int i=0;i<n;i++){cin>>g[i];}for(int i=0;i<n;i+=k){for(int j=0;j<n;j+=k){cout<<g[i][j];}cout<<endl;}
}

C. Sort

预处理,统计前i位每个字母出现的次数,分别统计在x到y之间,s1和s2同一字母出现的次数相减,最后除以2就是答案了

void solve(){cin>>n>>q;string s1,s2;cin>>s1>>s2;f1[1][s1[0]-'a']++,f2[1][s2[0]-'a']++;for(int i=2;i<=n;++i){for(int j=0;j<26;j++){f1[i][j]=f1[i-1][j],f2[i][j]=f2[i-1][j];}f1[i][s1[i-1]-'a']++,f2[i][s2[i-1]-'a']++;}while(q--){ans=0;cin>>x>>y;for(int i=0;i<26;i++){ans+=abs((f1[y][i]-f1[x-1][i])-(f2[y][i]-f2[x-1][i]));//cout<<f1[y][i]<<f1[x-1][i]<<" "<<(char)(i+'a')<<" "<<f2[y][i]<<f2[x-1][i]<<endl;}cout<<ans/2<<endl;}	for(int i=1;i<=n;++i)for(int j=0;j<26;j++) f1[i][j]=0,f2[i][j]=0;
}

D. Fun

有点暴力,用a<x限制a的取值,用b<n/a和b<x-a来限制b的取值,最后计算c在两个不等式下的较小取值,此时1<=c<=min(c)的符合不等式,所以把c加到里面

void solve(){long long sum=0;cin>>n>>x;for(int a=1;a<x;a++){for(int b=1;b<n/a&&b<x-a;b++){int p=x-a-b,q=(n-a*b)/(a+b);sum+=max(0,min(p,q));}}cout<<sum<<endl; 
}

E. Decode

前缀和做法,把0当做-1这样方便计算前缀和,前缀和相同的sum[x],sum[y],中间的0和1的数量一样多,此时考虑他们往左右两边扩展,所以每个组合(x,y)对答案的贡献为(x+1)*(n-y+1),对于前缀和为0的要特别考虑,因为前面的算法每一次算前缀和为0的组合时漏算整体,比如1010,会漏掉1010的这种情况

void solve(){string s;cin>>s;int n=s.size();ans=0;mp.clear();s=" "+s;for(int i=1;i<=n;i++){sum[i]=sum[i-1]+(s[i]=='1'?1:-1);}mp[0]=1;//第一次遇到前缀和为0的即可统计,不为0的则先记录所在位置,等待后续遇到再做处理 for(int i=1;i<=n;i++){ans=(ans+mp[sum[i]]*(n-i+1))%mod;mp[sum[i]]=(mp[sum[i]]+i+1)%mod;}cout<<(ans+mod)%mod<<endl;
}

http://www.lryc.cn/news/417264.html

相关文章:

  • pandas的文本与序列化
  • 在企业级环境中部署Java程序:Docker命令实用指南
  • LabVIEW远程开发
  • 工作随记:我在OL8.8部署oracle rac遇到的问题
  • C++:vector容器
  • 深入理解 AWS CodePipeline
  • Qt:自定义钟表组件
  • 前端性能优化-web资源加载优先级
  • Docker-数据卷指令
  • Elasticsearch VS Typesense! Elasticsearch未来会被其它搜索引擎取代吗?
  • usb摄像头 按钮 静止按钮
  • SAP MM学习笔记 - 豆知识03 - 安全在库和最小安全在库,扩张物料的保管场所的几种方法,定义生产订单的默认入库保管场所,受注票中设定禁止贩卖某个物料
  • 激光导航AGV叉车那么多,究竟该怎么选?一篇文章讲明白~
  • redis面试(七)初识lua加锁脚本
  • 企元数智百年营销史的精粹:借鉴历史创造未来商机
  • Java @SpringBootTest注解用法
  • 构建智能招聘平台:人才招聘系统源码开发指南
  • Docker + Nacos + Spring Cloud Gateway 实现简单的动态路由配置修改和动态路由发现
  • Linux中多线程压缩软件 | Mingz
  • 【JavaEE精炼宝库】网络原理基础——UDP详解
  • 【回眸】周中WLB-个人
  • 基于Spring boot + Vue的灾难救援系统
  • C#进阶:轻量级ORM框架Dapper详解
  • 【python015】常见成熟AI-图像识别场景算法清单(已更新)
  • 删除有序数组中的重复项(LeetCode)
  • 【算法 03】雇佣问题
  • vue3+axios请求导出excel文件
  • LLM与NLP
  • js 判断是否为回文串
  • 多重背包c++