腾讯笔试

1.找规律,最终结果是(n/(2*m))*m*m,注意数据类型,用long。
import java.util.Scanner;

public class ReverseSe {

    public static long solve(long n,long m)
    {
        long ans=0;
        long k=1;
        long t=n/(2*m);
        ans=t*m*m;
        return ans;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner=new Scanner(System.in);
        long n=scanner.nextLong();
        long m=scanner.nextLong();
        System.out.println(solve(n, m));

    }

}
2.相当于用A,B两种长度的来凑k,可以通过min(k/A,x)来控制A的个数,然后来确定是否存在B的匹配方法,注意边界以及是否刚好凑齐
#-*-coding:utf-8 -*- def solve(a,b):
    w=1  u=1  for i in range(1,a+1):
        w*=i for i in range(a):
        u*=(b-i) return u/w
k=int(raw_input())
A,x,B,y=map(int,raw_input().split())
ans=0 t=k/A for i in range(t+1): if(i<=x):
        temp=k-i*A
        e=temp%B
        q=temp/B if(e==0 and q<y):
            ans+=solve(q,y)*solve(i,x) print ans%1000000007 
3.我的思路就是先读取数据,放进两个二维数组,然后对两个数组都进行降序排列,然后从任务最大的开始遍历,观察是否有满足条件的机器人。
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;


public class Robot {

    public static void sort(int[][]ob,final int[] order)
    {
        Arrays.sort(ob,new Comparator<Object>() {

            @Override
            public int compare(Object o1, Object o2) {
                // TODO Auto-generated method stub
                int[] one=(int[])o1;
                int[] two=(int[])o2;
                for(int i=0;i<order.length;i++)
                {
                    int k=order[i];
                    if(one[k]<two[k])
                        return 1;
                    else if(one[k]>two[k])
                        return -1;
                    else continue;
                }
                return 0;
            }
        });
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int m=scanner.nextInt();
        
        int[][] robot=new int[n][2];
        int[][] works=new int[m][2];
        for(int i=0;i<n;i++)
        {
            robot[i][0]=scanner.nextInt();
            robot[i][1]=scanner.nextInt();
        }
        for(int i=0;i<m;i++)
        {
            works[i][0]=scanner.nextInt();
            works[i][1]=scanner.nextInt();
        }
        final int[] order= {0,1};
        sort(robot,order);
        sort(works, order);
        int i=0;
        int j=0;
        long ans=0;
        int k=0;
        while(i<n&&j<m) {
            if(robot[i][0]>=works[j][0]&&robot[i][1]>=works[j][1])
            {
                ans+=200*works[j][0]+3*works[j][1];
                k++;
                i++;
                j++;
            }
            else
            {
                j++;
            }
        }
        System.out.println(k+" "+ans);
        
                
                

    }

}

#实习#
全部评论
感觉我的题型怎么和你们不一样,1.画家 2.巧克力 3.纸牌
点赞 回复 分享
发布于 2018-04-07 22:16
第二题一样的代码。。只过了30%
点赞 回复 分享
发布于 2018-04-05 23:10
第三题ac吗
点赞 回复 分享
发布于 2018-04-05 22:53
我第一题暴力的,但是看了这么多大佬说第一题暴力会超时,我都怀疑我的第一题究竟有没有对了......
点赞 回复 分享
发布于 2018-04-05 17:53
第一题循环加的没想到公式,时间复杂度超了 过了70%
点赞 回复 分享
发布于 2018-04-05 17:42
第三题过了吗
点赞 回复 分享
发布于 2018-04-05 17:42
第1题用的long long,公式用的 m*n/2,只能过30%样例,求解
点赞 回复 分享
发布于 2018-04-05 17:38
我也是找到这个规律公式,但是只有百分之三十通过,伤心
点赞 回复 分享
发布于 2018-04-05 17:34
楼主,第一道题百分百通过了吗?
点赞 回复 分享
发布于 2018-04-05 17:33

相关推荐

嵌入式求职之路:可以看我经验😂,https://www.nowcoder.com/share/jump/73221730841876945
点赞 评论 收藏
分享
评论
点赞
15
分享

创作者周榜

更多
牛客网
牛客企业服务