M-有效算法

 M
在赛场上,脑子就两个字“二分”,一点思路都没,完全不知道二分谁,怎么二分,从哪入手。隐隐约约也知道要变换公式,可惜没坚持这个想法。脑子里全是把k分离出来,赛后看了题解才知道,应该把x分离出来。当时一直想着x相同,怎么确定,其实根本不用考虑这个,只要满足条件的x有交集,就可以了,这也是解题关键。

 #include<iostream>
 using namespace std;
 const int N=3e5+10;
 long long a[N],b[N],n;
 int check(int m)
 {
     long long z=0,y=0x3f3f3f3f;
     for(int i=0;i<n;i++)
     {
         z=max(a[i]-m*b[i],z);
         y=min(a[i]+m*b[i],y);
         if(z>y) return 0;
     }
         return 1;
 }
 void solve()
 {
     
     cin>>n;
     for(int i=0;i<n;i++)
         {
             cin>>a[i];
         }
     for(int i=0;i<n;i++)
         {
             cin>>b[i];
         }
     long long l=0,r=0x3f3f3f3f;
     while(l<r) 
     {
         long long mid=l+r>>1;
         if(check(mid)) r=mid;
         else l=mid+1;
     }
     cout<<r<<'\n';
 }
 int main()
 {
     int t;
	 ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
     cin>>t;
     while(t--)
     solve();
 }
  

刚开始时间超限,原来是二分错了,各种数据范围,r的值,小细节都改了,没想到是这儿。活该,模板都没记住,昨天也是时间超限,完全不是思路代码的问题,差个几行,几个变量,不会影响时间复杂度,往往有个从没注意的点。

后来又答案错误,更不理解,这又能咋改,明明和我看似一样的提交都对了,原来是ios::sync_with_stdio(0)…,只能放主函数,学长说了解原理就知道为什么了。
可笑的是,我把代码给人家,别人改了改提交就对了,我照着改对的代码改,怎么改都错,我又把改对的照着我错的改,怎么改还对。我都怀疑是不是针对我,我不配对?唉,每个错误总有奇怪的原因。

相关推荐

  1. 算法题】32. 最长有效括号

    2024-05-14 06:24:03       37 阅读
  2. 算法m*n网格最小路径

    2024-05-14 06:24:03       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-14 06:24:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-14 06:24:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-14 06:24:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-14 06:24:03       20 阅读

热门阅读

  1. 安卓手机APP开发__支持不同的像素深度

    2024-05-14 06:24:03       14 阅读
  2. Flutter 中的 Theme 使用:全面指南

    2024-05-14 06:24:03       20 阅读
  3. 批量获取oracle库存储过程

    2024-05-14 06:24:03       10 阅读
  4. 01-02-5

    01-02-5

    2024-05-14 06:24:03      12 阅读
  5. 交互项回归VS分组回归

    2024-05-14 06:24:03       10 阅读
  6. 分布式队列 - 蓝桥杯2024年第十五届省赛真题

    2024-05-14 06:24:03       14 阅读