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

Codeforces Round 1046 (Div. 2) vp补题

只是签了三道题就燃尽了…
原题连接
在这里插入图片描述

A

//不可能连续进三球 得分值差最多的只有00X00X00X00 
bool jud(int a,int b){if(a!=0&&b!=0&&max(a,b)-2*(min(a,b)+1)>=1)return 0;if(a==0||b==0){if(abs(a-b)>=3)return 0;}return 1;
}
void solve()
{int a,b,c,d;cin>>a>>b>>c>>d;if(jud(a,b)==0)return cout<<"no"<<endl,void();int d1=c-a,d2=d-b;	cout<<(jud(d1,d2)?"yes":"no")<<endl;
}

B 构造

void solve()
{int n,k;cin>>n>>k;string s;cin>>s;int cnt=0,id=0;while (id<n){if(s[id]!='1'){id++;continue;}int st=id;id++;while (id<n&&s[id]=='1'){id++;}cnt=max(cnt,id-st);}if(cnt>=k)cout<<"no"<<endl;//连续的1不能长于k 否则区间内不能满足没有最大值else{cout<<"yes"<<endl;int f=1,e=n;forr(i,0,n-1){if(s[i]=='0')cout<<e--<<' ';else cout<<f++<<' ';//不能是最大值的位置往小了填}cout<<endl;}
}

C dp 定长滑动窗口

一开始没理解好子序列的意思,以为是从头尾删去得到序列,导致第五个样例看不明白
看明白了转用dp,但是只记录了整洁数组的起始位置,没有注意到像333333这样的,可以取中间部分当作整洁数组,使用定长窗口处理

void solve()
{int n;cin>>n;forr(i,1,n)v[i].clear();vector<int>a(n+1),dp(n+1,0);// vector<int>cnt(n+1,0),st(n+1,-1);forr(i,1,n)cin>>a[i];forr(i,1,n){v[a[i]].push_back(i);//把位置放进去dp[i]=dp[i-1];if(v[a[i]].size()>=a[i]){//窗口dp[i]=max(a[i]+dp[v[a[i]][v[a[i]].size()-a[i]]-1],dp[i]);}// if(st[a[i]]==-1)st[a[i]]=i;//最优的可能不是开头 就好像滑动窗口// cnt[a[i]]++;// if(cnt[a[i]]==a[i]){// 	dp[i]=dp[st[a[i]]-1]+a[i];// 	st[a[i]]=-1;// 	cnt[a[i]]=0;// }else dp[i]=dp[i-1];}int ans=0;forr(i,1,n)ans=max(ans,dp[i]);// forr(i,1,n)cout<<dp[i]<<' ';cout<<endl;cout<<ans<<endl;
}

D 交互题 思维

首先要确定是离哪个点的曼哈顿距离
−1e9<xi,yi<1e9-1e9<x_i,y_i<1e91e9<xi,yi<1e9

  • 先移到右上角,X+2e9,Y+2e9X+2e9,Y+2e9X+2e9,Y+2e9,得到离m1=max(xi+yi)m1=max(x_i+y_i)m1=max(xi+yi)位置点的曼哈顿距离d1d1d1X+2e9−xi+Y+2e9−yi=X+Y+4e9−m1=d1X+2e9-x_i+Y+2e9-y_i=X+Y+4e9-m1=d1X+2e9xi+Y+2e9yi=X+Y+4e9m1=d1
  • 再移到右下角,X+2e9,Y−2e9X+2e9,Y-2e9X+2e9,Y2e9,得到离m2=max(xi−yi)m2=max(x_i-y_i)m2=max(xiyi)位置点的曼哈顿距离d2d2d2(X+2e9−xi)+(yi−(Y−2e9))=X−Y+4e9−m2=d2(X+2e9-x_i)+(y_i-(Y-2e9))=X-Y+4e9-m2=d2(X+2e9xi)+(yi(Y2e9))=XY+4e9m2=d2
  • 解方程X=d1+d2+m1+m2−8e92,Y=d1−d2+m1−m22X={{d1+d2+m1+m2-8e9}\over 2},Y={{d1-d2+m1-m2}\over 2}X=2d1+d2+m1+m28e9,Y=2d1d2+m1m2
const int N=1e6+10,M=6e3+10,mod=998244353,inf=1e9;
void solve(){int n;cin>>n;int m1,m2;m1=m2=-1e18;forr(i,1,n){int x,y;cin>>x>>y;m1=max(x+y,m1);m2=max(x-y,m2);}//右上int d1=0,d2=0;cout<<"? U "<<inf<<endl;fls;cin>>d1;cout<<"? U "<<inf<<endl;fls;cin>>d1;cout<<"? R "<<inf<<endl;fls;cin>>d1;cout<<"? R "<<inf<<endl;fls;cin>>d1;forr(i,1,4){cout<<"? D "<<inf<<endl;fls;cin>>d2;}int x=(d1+d2+m1+m2-8e9)/2,y=(d1-d2+m1-m2)/2;cout<<"! "<<x<<' '<<y<<endl;
}

X+Y=sm1,X−Y=sm2⇒X=sm1+sm22,Y=sm1−sm22X+Y=sm1,X-Y=sm2\Rightarrow X={{sm1+sm2}\over 2},Y={{sm1-sm2}\over 2}X+Y=sm1,XY=sm2X=2sm1+sm2,Y=2sm1sm2

E

需要tarjan 学习中…

http://www.xdnf.cn/news/20300.html

相关文章:

  • C++ 详细讲解vector类
  • 检查CDB/PDB 表空间的说明
  • Linux网络接口命名详解:从eth0到ens33
  • [光学原理与应用-431]:非线性光学 - 能生成或改变激光波长的物质或元件有哪些?
  • GPIO的配置中开漏输出与推挽输出的差别
  • C++零基础第四天:顺序、选择与循环结构详解
  • Protobuf
  • 人工智能辅助荧光浓度检测系统:基于YOLO与RGB分析的Python实现
  • 【序列晋升】29 Spring Cloud Task 微服务架构下的轻量级任务调度框架
  • AP1272:新一代高性能LDO稳压器,为精密电子系统提供更优电源解决方案
  • 《秦时明月》系列经典语录分享
  • 云原生的12个要素是什么?
  • 【Linux指南】动静态库与链接机制:从原理到实践
  • 疯狂星期四文案网第62天运营日记
  • 消失的6个月!
  • 从文本到知识:使用LLM图转换器构建知识图谱的详细指南
  • Java多线程学习笔记
  • Nginx 实战系列(二)—— Nginx 配置文件与虚拟主机搭建
  • QML Charts组件之LineSeries、SplineSeries与ScatterSeries
  • 正态分布 - 正态分布的经验法则(68-95-99.7 法则)
  • Modbus通信的大端和小端字节序
  • OpsManage 项目启动脚本与 Docker 配置深度分析
  • Day05 单调栈 | 84. 柱状图中最大的矩形、42. 接雨水
  • LeetCode算法日记 - Day 34: 二进制求和、字符串相乘
  • 【目录-多选】鸿蒙HarmonyOS开发者基础
  • 分布式go项目-搭建监控和追踪方案
  • 国内外支持个人开发者的应用市场
  • OpenCV - 图像的IO操作
  • 【开题答辩全过程】以 住院管理系统为例,包含答辩的问题和答案
  • 从零开始的python学习——文件