2021/7/22

8:3-9:00 学习打卡

9:30-13:00 刷二招题目和java学习

1.i题

在嘀哩嘀哩有C个"一个魂",所以叔叔建造了N个应援团,分别在坐标轴上的x1...xN位置,但这些"一个魂"都是毒唯,彼此看不起对方的蒸煮,为了防止他们互相踩一捧一,所以不能把几个"一个魂"放在一个应援团里,而且还应该使两个"一个魂"之间的最小距离尽可能的大,可叔叔思考了好久,都不知道这个最大的最小距离是多少,你能不能帮帮他呢?
数据范围:2<=N<=100000, 0<=xi<=1000000000, 2<=C<=N

二分题,因为大小不以先将它们排序,c++sort排序,普通排序会超时,排完序后二分比值,小于继续向后找,直到大于等于后数量加一,最后与需要的数量比较,大了继续向上取。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
    int a[100010],i,j,k,n,c,mn=0,l,r,mm,ss;
    while(scanf("%d%d",&n,&c)!=EOF)
    {
        for(i=0; i<n; i++)
        {
            scanf("%d",&a[i]);
        }
        sort(a,a+n);//排序
        l=0;
        r=a[n-1]-a[0];//最大距离为最小和最大相差的距离
        while(l<=r)//二分
        {
            mm=(r+l)/2;
            k=a[0];
            ss=1;
            for(i=1; i<n; i++)
            {
                if(a[i]-k>=mm)//大于后进入向后移,数量相加
                {
                    ss++;
                    k=a[i];
                }
            }
            if(ss>=c)
            {
                l=mm+1;
                mn=mm;
            }
            else
            {
                r=mm-1;
            }
        }
        printf("%d\n",mn);
    }
}

2.io流

java的io流是实现输入输出的基础,它可以方便数据实现输入输出操作,在java中把不同的输入输出源抽象表示为“流”,是以先进先出的方式发送信息的通道。

一般来说关于流的特性有下面几点:
先进先出:最先写入输出流的数据最先被输入流读取到。
顺序存取:可以一个接一个地往流中写入一串字节,读出时也将按写入顺序读取一串字节,不能随机访问中间的数据。(RandomAccessFile除外)
只读或只写:每个流只能是输入流或输出流的一种,不能同时具备两个功能,输入流只能进行读操作,对输出流只能进行写操作。在一个数据传输通道中,如果既要写入数据,又要读取数据,则要分别提供两个流。

流的分类

按数据流的方向:输入流、输出流
按处理数据单位:字节流、字符流
按功能:节点流、处理流

字节流与字符流的区别

字节流和字符流的用法几乎完成全一样,区别在于字节流和字符流所操作的数据单元不同,字节流操作的单元是数据单元是8位的字节,字符流操作的是数据单元为16位的字符。

字节输入流的创建即操作

public class stream {
    public static void main(String[] args) {
        try {
            FileInputStream is=new FileInputStream("a.java");//创建字节输入流
            byte[] bt=new byte[1024];
            int line;
            while((line=is.read(bt))>0){//访问文件并读出来
                System.out.println(new String(bt,0,line));
            }
            is.close();//关闭流。
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


}

字符输入流的创建即操作

public class stream {
    public static void main(String[] args) {
        try {
            FileReader fr=new FileReader("a.java");//字符输入流的创建
            char[] c=new char[1024];
            int line;
            while ((line=fr.read(c))>0){//访问并输出来
                System.out.println(new String(c,0,line));
            }
            fr.close();//关闭流

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


}

字节缓存流

public class stream {
    public static void main(String[] args) {
        try {
            FileInputStream is=new FileInputStream("a.java");//创建字节输入流
            BufferedInputStream bi=new BufferedInputStream(is);//将字节输入流包装成字节缓冲流
            byte[] bt=new byte[1024];
            int line;
            while((line=bi.read(bt))>0){//访问文件并读出来
                System.out.println(new String(bt,0,line));
            }
            is.close();//关闭流。缓冲流也自动关闭
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


}

字符缓冲流

public class stream {
    public static void main(String[] args) {
        try {
            FileReader fr=new FileReader("a.java");
            BufferedReader bf=new BufferedReader(fr);//将字符流包装成字符缓冲流
            String s=new String();
            while ((s=bf.readLine())!=null){
                System.out.println(s);
            }
            fr.close();//关闭流。缓冲流也自动关闭

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值