题解 | 牛客周赛 Round 49 DEF Java题解

嘤嘤不想做计几喵

https://ac.nowcoder.com/acm/contest/85639/A

DEF Java

D 嘤嘤不想求异或喵

不妨先求出1到l-1的异或和再求出1到r的异或和,二者再异或就是lr异或和,这里有需要计算每一个比特位的数量,或者更具体的,是奇数还是偶数,每个比特总是呈现周期出现的,1<<i这个比特会每隔1<<(i+1)出现1<<i次,而且是在周期后半部分出现,时间复杂度O(TC),其中C==62

import java.io.*;
public class Main{
    public static void main(String args[]) throws IOException{
        BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        int t=Integer.parseInt(bf.readLine());
        for(int i=0;i<t;i++){
            String arr[]=bf.readLine().split(" ");
            bw.write((find(Long.parseLong(arr[0])-1)^find(Long.parseLong(arr[1])))+"\n");
        }
        bw.flush();
    }
    static long find(long a){
        long ans=0;
        for(int i=0;i<62;i++){
            ans|=(a/(1L<<(i+1))*(1L<<i)+Math.max(0,1+a%(1L<<(i+1))-(1L<<i)))%2*(1L<<i);
        }
        return ans;
    }
}

E 嘤嘤不想解方程喵

直接把二次方程带入到一次方程中,整理系数后分类讨论,注意用double,时间复杂度O(T)

import java.util.*;
public class Main{
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        int t=sc.nextInt();
        for(int i=0;i<t;i++){
            double a1=sc.nextInt(),b1=sc.nextInt(),c1=sc.nextInt(),a2=sc.nextInt(),b2=sc.nextInt(),c2=sc.nextInt();
            System.out.println(find(a1*b2,a2+b1*b2,b2*c1+c2));
        }
    }
    static String find(double a,double b,double c){
        return a==0?(b==0?(c==0?"INF":"0"):"1"):b*b-a*c*4==0?"1":b*b-a*c*4>0?"2":"0";
    }
}

F 嘤嘤不想找最小喵

参考资料

运用哈希,本代码时间复杂度为O(nlogn)

import java.util.*;
public class Main{
    static long base=(int)2e9+3,mod=(int)2e9+9;
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        long hash[]=new long[n+1];
        for(int i=1;i<=n;i++){
            hash[i]=(hash[i-1]*base+sc.nextInt()+mod)%mod;
        }
        for(int i=1;;i++){
            if((find(hash,0,n-i*2)+find(hash,i*2,n))%mod==find(hash,i,n-i)*2%mod){
                System.out.println(i);
                break;
            }
        }
    }
    static long find(long hash[],int l,int r){
        return (hash[r]+mod-hash[l]*pow(base,r-l)%mod)%mod;
    }
    static long pow(long a,int b){
        long ans=1;
        for(;b!=0;b>>=1,a=a*a%mod){
            if(b%2==1){
                ans=ans*a%mod;
            }
        }
        return ans;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
群星之怒:1.照片可以换更好一点的,可以适量P图,带一些发型,遮住额头,最好穿的正式一点,可以适当P图。2.内容太少。建议添加的:求职意向(随着投递岗位动态更改);项目经历(内容太少了建议添加一些说明,技术栈:用到了什么技术,还有你是怎么实现的,比如如何确保数据传输稳定的,角色注册用到了什么技术等等。)项目经历是大头,没有实习是硬伤,如果项目经理不突出的话基本很难过简历筛。3.有些内容不必要,比如自我评价,校内实践。如果实践和工作无关千万别写,不如多丰富丰富项目。4.排版建议:建议排版是先基础信息,然后教育背景(要突出和工作相关的课程),然后专业技能(一定要简短,不要长篇大论,写你会什么,会的程度就可以),然后是项目经历(一定要详细,占整个简历一定要超过一半,甚至超过百分之70都可以)。最后如果有一部分空白的话可以填补上校内获得的专业相关的奖项,没有就写点校园经历和自我评价。5.技术一定要够硬,禁得住拷打。还有作息尽量保证正常,不要太焦虑。我24双非本科还是非科班,秋招春招各找了一段实习结果都没有转正,当时都想噶了,最后6月份在校的尾巴也找到一份工作干到现在,找工作有时很看运气的不要急着自我否定。 加油
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务