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

Codeforces Round 1091 (Div. 2) and CodeCraft 26

文章目录

  • B&D 思维 问题转化
  • C 数论 同余

原题链接

B&D 思维 问题转化


B题k=1
连续的可以统一处理 化成一个数
把x化成0 要去掉的数就是1
发现消掉一个1 需要两步 也可以两边同时消掉也是两步

voidsolve(){intn,k;cin>>n>>k;vector<int>a(n+1);a[0]=-1;intp;forr(i,1,n)cin>>a[i];cin>>p;intx=a[p];intfg=1;forr(i,1,n)if(a[i]!=a[p]){fg=0;break;}if(fg)returncout<<0<<endl,void();vector<int>b;b.push_back(0);intnp=0;forr(i,1,n){if(a[i]!=a[i-1])// 连续的可以统一处理b.push_back(a[i]^x);if(i==p)np=b.size()-1;}p=np;n=b.size()-1;intlcnt=0,rcnt=0;reforr(i,1,p-1)if(b[i]==1)lcnt++;forr(i,p+1,n)if(b[i]==1)rcnt++;/* 每次消掉一个1 需要2次操作 eg.01 可以两边配对消掉 cost=2*(max(lcnt, rcnt)-min(lcnt, rcnt))+2*min(lcnt, rcnt)=2 * max(lcnt, rcnt) */cout<<2*max(lcnt,rcnt)<<endl;}

D k>=1
用包含special index的区间把两边的1消掉,可以把special index看作区段端点,去掉区段中的1

voidsolve(){intn,k;cin>>n>>k;vector<int>a(n+1),p(k+1);a[0]=-1;forr(i,1,n)cin>>a[i];forr(i,1,k)cin>>p[i];intx=a[p[1]];intfg=1;forr(i,1,n)if(a[i]!=x){fg=0;break;}if(fg)returncout<<0<<endl,void();vector<int>b;b.push_back(-1);intid=1;vector<int>np;forr(i,1,n){if(a[i]!=a[i-1])// 连续的可以统一处理b.push_back(a[i]^x);if(id<=k&&i==p[id]){np.push_back(b.size()-1);id++;}}np.erase(unique(np.begin(),np.end()),np.end());n=b.size()-1;np.push_back(n);vector<int>preb(n+1,0);forr(i,1,n)preb[i]=preb[i-1]+b[i];/* 目标:消掉每个special index之间的1 就是让每个seg_i=0 op1:一个/两个位置seg_i -1代价为2 op2:三个位置seg_i -1 代价为3 mx<=sm-mx 只用op1就能消掉:mx和sm-mx两两消掉 剩下sm-2*mx - sm偶数 cost=mx*2+2*(sm-2*mx)/2=sm - sm及数 如果用op2 sm-3=2k 改变奇偶性cost=mx*2+2*(sm-3-2*mx)/2+3=sm mx>sm-mx 只用op1 两两消掉后 mx剩下mx-(sm-mx)=2mx-sm而且只在一个位置 cost=2*(sm-mx)+2*(2*mx-sm)=2*mx */vector<int>segb;forr(i,0,np.size()-1){if(i==0)segb.push_back(preb[np[i]]);elsesegb.push_back(preb[np[i]]-preb[np[i-1]]);}intsm=0,mx=0;for(autoi:segb)sm+=i,mx=max(mx,i);// cout << sm << ' ' << mx << endl;if(mx*2>sm)cout<<2*mx<<endl;elsecout<<sm<<endl;// int lcnt = 0, rcnt = 0;// reforr(i, 1, p - 1) if (b[i] == 1) lcnt++;// forr(i, p + 1, n) if (b[i] == 1) rcnt++;// /*// 每次消掉一个1 需要2次操作 eg.01// 可以两边配对消掉// */// // cout << lcnt << ' ' << rcnt << endl;// cout << 2 * max(lcnt, rcnt) << endl;}

C 数论 同余


参考@ImALAS 的题解

dalao写的太好了,谢谢大佬

voidsolve(){intn,m,a,b;cin>>n>>m>>a>>b;if((__gcd(n,a)==1&&__gcd(m,b)==1)&&__gcd(n,m)<=2)yes;/* 走偶数步走到原来格子 x轮 n|ax=>n|x m|bx=>m|x lcm(n,m)|x gcd(n,m)=1 x_max=n*m gcd(n,m)=2 奇数步不会走到原来格子 会遍历完 */elseno;}
http://www.jsqmd.com/news/716339/

相关文章:

  • NVIDIA Profile Inspector终极指南:解锁显卡隐藏设置,游戏性能飙升200%
  • 从加密压缩包到Wi-Fi握手包:John the Ripper的‘跨界’破解实战指南(含zip2john/aircrack-ng联动)
  • 大脑-身体交互综述:从神经科学原理到脑机接口工程实践
  • Seraphine:英雄联盟玩家的终极智能辅助工具
  • 如何永久保存微信聊天记录?WeChatMsg完整指南带你轻松备份珍贵对话
  • 终极指南:如何用SNMP Exporter轻松实现网络设备监控
  • 3万美金DIY Mobile Aloha机器人?手把手教你复现斯坦福家务机器人(附避坑清单)
  • 2026年浦东新区合同纠纷律所认可度排名:5家机构实力解析 - 资讯焦点
  • AI Agent生态闭环:SkillHub与Agent Server落地实践
  • 告别盲猜:把vnStat数据接入Prometheus+Grafana,打造你的家庭网络监控仪表盘
  • Dify工作流编排:基于DSL与插件生态的高性能AI应用架构方案
  • 别再被GLIBC版本卡脖子!手把手教你编译适配旧系统的tun2proxy二进制文件
  • 从手动点击到智能脚本:3个关键场景解锁PyAEDT自动化仿真实战
  • OpenTCS 5.11核心组件拆解:Kernel、ControlCenter、OperationsDesk各自管什么?怎么联动?
  • 3个实战维度:用GBFR Logs从数据新手到战斗分析师
  • 别再为Xcode证书头疼了!Unity打包iOS应用保姆级避坑指南(含最新Xcode14+配置)
  • 如何用5个文件实现微信自动化:WechatBot轻量级解决方案
  • NVIDIA Profile Inspector多语言本地化实战:从代码到全球用户的完整指南
  • 393. Java 文件操作基础 - 异常捕获与处理
  • 从‘永恒之蓝’到‘零日星期三’:给开发者的5个安全编码习惯,从源头减少漏洞
  • 用Go工具sv备份AI编程助手配置:从原理到实践
  • 如何快速扩展Windows虚拟显示器:终极完整指南
  • CTF新手必看:手把手教你用Python分解大整数,搞定那道经典的Alice与Bob题
  • SDCC编译的Hex文件太大?手把手教你优化51单片机代码体积(对比Keil C51实战)
  • 2000-2024年上市公司产学研合作(UIC)数据
  • unrpa终极指南:解密Ren‘Py游戏资源提取的完整解决方案
  • 从MobileNet到MobileViTv3:手把手教你为移动端部署选择最合适的轻量级视觉模型
  • GBFR Logs:碧蓝幻想Relink玩家的终极DPS监控与数据分析工具
  • Spring Boot + MyBatis项目里,那个烦人的‘SqlSession was not registered for synchronization’警告到底要不要管?
  • 扩散模型的兴起