P1816忠诚 题目求助
  • 板块题目总版
  • 楼主lovejsn
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/2/27 12:30
  • 上次更新2024/2/27 17:13:18
查看原帖
P1816忠诚 题目求助
1205803
lovejsn楼主2024/2/27 12:30

我在写这道题的时候P1816忠诚,java代码所有数据点都没过,我就下载了测试数据点1的in,和out文件,用我自己的电脑跑出来答案就是一模一样的,不知道为什么第一个测试点都wr了。

代码如下


import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main {
   //Reader是java的快读模版
    static class Reader {
        static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        static StringTokenizer tokenizer = new StringTokenizer("");

        public static String next() throws IOException {
            while (!tokenizer.hasMoreTokens()) {
                tokenizer = new StringTokenizer(br.readLine());
            }
            return tokenizer.nextToken();
        }

        public static int nextInt() throws IOException {
            return Integer.parseInt(next());
        }
        public static long nextLong() throws IOException {
            return Long.parseLong(next());
        }
        public static Double nextDouble() throws IOException {
            return Double.parseDouble(next());
        }
    }
  //这题使用动态规划+倍增,dp[][]就是动态规划的数组
    public static int[][]dp=new int[100005][20];
  //log是以2为底,先下取整的值(此处是先把所有的值求出来,避免重复调用log库)
  public static int[]log=new int[100005];
    public static void initial(){
        log[1]=0;
        log[2]=0;
        log[3]=1;
        for (int i=3;i<100005;i++){
            log[i]=log[i/2]+1;
        }
    }
    public static void solve()throws IOException{
        int m=Reader.nextInt(),n=Reader.nextInt();
        for(int i=1;i<=m;i++)dp[i][0]=Reader.nextInt();
       for(int j=1;j<20;j++){
           for (int i=1;i+(1<<j)-1<=m;i++){
               dp[i][j]=Math.min(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
           }
       }
       for(int k=1;k<=n;k++) {
           int s = Reader.nextInt(), e = Reader.nextInt(), t = log[e - s + 1];
           int ans=Math.min(dp[s][t], dp[e - (1 << t) + 1][t]);
           //该语句是输出到控制台的
           System.out.printf("%d ",ans);
       }
       Reader.br.close();
       //fileWriter.close();
    }
    public static void main(String args[]) throws Exception {
       initial();
       solve();
    }
}

这道题我是不会写的,看的是OiWiki网站上的代码,改成了java语言 原地址

各位友友能不能帮我看看为什么,我查了一些资料说是洛谷评测机器是Linux和windows的换行符的关系导致输入缺失什么的。因为看不到到底洛谷输出了什么,哎。

真的非常难受哇(>..<)

2024/2/27 12:30
加载中...