1. 分苹果 2.

A、B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 0101 = 9),B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多。

输入苹果的数量和每个苹果重量,输出满足A的情况下B获取的苹果总重量。

这题的核心就是实现不太进位的二进制加法
位运算或许可以 | 1|0 = 1
0|0 = 0
1|1 = 1

import java.util.*;

public class Main{
   
   public static void main(String[]args){
        Scanner san = new Scanner(System.in);
        int n = scan.nextInt();
        scan.nextLine();
        int a = scan.nextInt();
        int sum =a;
        for(int i =1;i<n;i++){
        int b =scan.nextInt();
        a = a|b;
        sum+=b;
}     
System.out.println(sum=a);
}
}

如果无法满足A的要求,输出-1。

不一定是对的我不想花钱看答案

单词的平均重量

每个句子由多个单词组成,句子中的每个单词的长度都可能不一样,我们假设每个单词的长度Ni为该单词的重量,你需要做的就是给出整个句子的平均重量V。
样例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

Who Love Solo

输出

3.67

import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String word = scan.nextLine();
Stirng words = word.split(" ");
int sum =0;
for(int i = 0;i<words.length;i++){
 sum+= words[i].length;
}
System.out.println(sum/words.length);
}
}

不知道睁不正确呢? 因为没有 oj系统 不管了

路灯照明:
一条长为l的笔直街道上有n个街道,诺这条街道的起点为0
终点为l, 第i个路灯上坐标为ai,每盏灯可以覆盖的最远距离为d。

输入
7 15

imort java.util.*;
public class Main{
  public static void main(String[]args){
     Scanner scan = new Scanner(System.in);
     int  a = scan.nextInt();
     int b = scan.nextInt();
     int [] arrs = new int[n];
     scan.nextLine();
     for(int i = 0;i<n;i++){
       arrs[i] = scan.nextInt();
     } 
     Arrays.sort(arrs);
     int max = Integer.MIN_VALUE;
     for(int i =0;i+1<arrs.length;i++){
         max = Math.max(arrs[i+1] - arr[i],max);
     }  
     System.out.println(max/2);
}
}

给定字符串 target和 source,判断 target是否为 source 的子序列。你可以认为target和 source 中仅包含英文小写字母。

字符串 source 可能会很长(长度~=500,000),而 target是个短字符串(长度<=100)。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。

(例如,”abc”是”aebycd”的一个子序列,而”ayb”不是)。

请找出最后一个子序列的起始位置。

输入描述:

第一行为target,短字符串(长度 <=100)
第二行为source,长字符串(长度 ~= 500,000)

输出描述:

最后一个子序列的起始位置,即最后一个子序列首字母的下标

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

abc
abcaybec

说明

这里有两个abc的子序列满足,取下标较大的,故返回3。

备注:

若在source中找不到target,则输出-1

感觉就是简单哈希一下,然后加上

import java.util.*;
public class Main{
  public static void main(String [] args){
    Scanner scan = new Scanner(System.in);
    String a = scan.nextLine();
    String b = scan.nextLine();
    int res = 0;
    for(int i = 0;i<a.length();i++){
          int start = b.indexOf(a.charAt(i));
          if(start== -1){
          System.out.println(-1);
          }
          b = b.substring(start+1);
          res = start;
}
System.out.println(start);
}
} 

事件推送

import java.util,*;
public class Main{
 
   public static void main(String [] args){
        Scanner scan  = new Scanner(System.in);
        int n = scan.nextInt();
        int m = scan.nextInt();
        int k = scan.nextInt();
        scan.nextLine();
        int [] a  = new int[n];
        int [] b = new int[n];
        for(int i = 0;i<n;i++){
           a[i] = scan.nextInt();
          }
          scan.nextLine();
           for(int i = 0;i<m;i++){
           b[i] = scan.nextInt();
 }
        int i =0;
        int j = 0;
        //双指针
        while(i<n&&j<m){
        if(a[i]>b[j]){
              j++;
}
int dis = b[j] - a[i];
if(dis<=k){
   System.out.println(a[i],b[j]);
   i++;
   j++;
}else{
    i++;
}

}              

}
}
        
        
        
}
}

不知道丢不对啊
因为网络问题,有些地方 题目信息 没能copy过来
我都是看手机上的题, 网站也不提供答题的,要我注册vip
我注册不了

学习就就是经受火烤

你可能感兴趣的:(延毕日记,java,算法)