Data

【pdf你真可爱】

【题目分析】

  上午考试想到用二分答案做,写残了...

  设两个数列,a和b,a表示磁头,看作指针,b就是要扫描的那个序列。

  假设一个答案mid,就是a中的数字走mid步能否到达b中的数字,如果b能全部被扫描,说明这个答案是可以继续向左二分,否则就向右

  具体就分三种情况:

  1、a[i]-b[j]>mid,这种情况下怎么走都不可能把b完全覆盖(因为a和b都是递增的,前面的只要大于了,后面没有机会变小于啊),直接false

  2、a[i]>b[j],rest表示从a[i]扫到b[j]之后剩余的,rest=mid-(a[i]-b[j])

    (1)先走左边,reach=b[j]+rest

    

    (2)先走右边,reach=a[i]+rest/2;

    

  3、a[i]<=b[j],那从a[i]开始扫,最多扫到 reach=a[i]+mid

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
const int maxn=1e5+10;
int n,m;
ll a[maxn],b[maxn];
bool check(ll mid)
{
    for(ll i=1,j=1;i<=n;i++)
    {
        if(a[i]-b[j]>mid) return false;//如果从i到j的距离比假设的答案大,就返回0继续向右二分
        ll reach;//reach表示走完mid步之后到达的位置
        if(a[i]>b[j])
        {
            ll rest=mid-(a[i]-b[j]);
            reach=max(b[j]+rest,a[i]+rest/2);//向左边走和向右边走
        }
        else
            reach=a[i]+mid;
        while(b[j]<=reach&&j<=m) j++;
        if(j>m) return true;
    }
    return false;
}
void solve()
{
    ll l=0,r=1e10,ans;
    while(l<=r)
    {
        ll mid=(l+r)/2;
        if(check(mid)) r=mid-1,ans=mid;
        else l=mid+1;
    }
    printf("%I64d",ans);
}
int main()
{
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%I64d",&a[i]);
    for(int i=1;i<=m;i++)
        scanf("%I64d",&b[i]);
    /*int flag=0;
    if(n==m)
    {
        for(int i=1;i<=n;i++)
            if(a[i]!=b[i])
                flag=1;
    }
    if(flag==0&&n==m)
        printf("0");
    else
    {*/
        solve();
    //}
    fclose(stdin);fclose(stdout);
    return 0;
}
时间: 2024-10-27 04:11:13

Data的相关文章

What is “passive data structure” in Android/Java?

From the Android developer web link: http://developer.android.com/reference/android/content/Intent.html, you can find that it says "It (Intent) is basically a passive data structure holding an abstract description of an action to be performed."

HTML5 Canvas ( 图形的像素操作 ) getImageData, putImageData, ImgData.data

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css">

Understand the data

A new data set (problem) is a wrapped gift. It's full of promise and anticipation at the miracles you can wreak once you've solved it. But it remains a  mystery until you've opened it. This chapter is about opening up your new data set so you can see

Data Model for Message Receiver

1. Physical Data Model 2. SQL Statements drop database MessageReceiver go /*==============================================================*/ /* Database: MessageReceiver */ /*==============================================================*/ create dat

Spring Data JPA实战视频教程

视频大纲 JPA入门 Spring Data JPA入门 Repository的定义 查询方法的命名策略 JPQL查询,结果映射 Named Query,Named Native Query 排序,分页 JPA Criteria查询 Querydsl查询 Query by Example 一对一,一对多,多对一,多对多 @EnableJpaRepositories 注解 自定义.扩展Repository 实体的生命周期 审计 乐观锁,悲观锁 集成 OpenJPA 查询批注 缓存 事务 Sprin

Mybatis Data truncation: Truncated incorrect DOUBLE value: &#39;*&#39;

具体异常信息如下: org.springframework.dao.DataIntegrityViolationException: ### Error querying database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '*' 错误代码如下: 解决办法: 在mybatis中的遇到这种拼接的情况,应该使用concat函数 数据库用的是mys

jQuery源代码学习之六——jQuery数据缓存Data

一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所有用户自定义数据都被保存在这个对象的cache属性下,cache在此姑且称之为自定义数据缓存: 自定义数据缓存和DOM元素/javascript对象通过id建立关联,id的查找通过DOM元素/javascript元素下挂载的expando属性获得 话不多说,直接上代码.相关思路在代码注释中都有讲解

Data Science(什么是数据科学)

科学上网时看到的有关于Data Science的理解,感觉挺好的,就翻一下. Data science is about understanding systems, whether they be natural systems such as climate, or man-made systems like the economy. (数据科学可以称之为理解系统,无论这个系统是自然系统,例如天气系统,或者人造的生态环境系统). Scientists have been conducting

mysql导入数据load data infile用法整理

有时候我们需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用MySql Load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间. 假如是从MySql客户端调用,将客户端的文件导入,则需要使用 load local data infile. LOAD DATA INFILE 语句以很高的速度从一个文本文件中读取行到一个表中.文件名必须是一个文字字符串. 1,开启load local data infile. 假如是Linux下

jQuery中的data()方法

data()方法,用于存储/获取临时数据 HTML data-* 属性 在标签中利用 data-* 设置自定义的属性,存储数据. <div id="person"> <p data-fullname="张小明" data-age="24" data-profession="前端开发工程师">小明</p> <p data-fullname="刘小红" data-age