【百度笔试】

【本小菜鸡三道题,100,60,没做】
1、买饮料
#include <bits/stdc  .h>

using namespace std;

int main()
{
    // N 员工人数
    // K 果汁种类数
    int N, K;
    while (cin >> N >> K) {
        // A[i] b表示第 i 号员工喜欢的果汁种类
	vector<int> A(N, 0);
	for (int i = 0; i < N; i  ) {
	    cin >> A[i];
	}
	// 统计次数
	vector<int> count(K   1, 0);
	for (int i = 0; i < N; i  ) {
	    count[A[i]]  ;
        }
	int global = 0;
	for (int i = 1; i <= K; i  ) {
            global  = count[i] / 2;
	    global  = count[i] % 2;
	}
	cout << global << endl;
    }
    return 0;
}
2、发工资
#include <bits/stdc  .h>

using namespace std;

int main()
{
    // N 种面额
    // M 最少工资
    int N, M;
    while (cin >> N >> M) {
	vector<pair<int, int>> V;
	for (int i = 0; i < N; i  ) {
	    int X, Y;
	    cin >> X;
	    cin >> Y;
	    V.push_back(make_pair(X, Y));
	}
	int global = 0;
	sort(V.begin(), V.end());
	for (int i = 0; i < N; i  ) {
	    if (V[i].first > M) {
		global  = V[i].second;
	    } else {
		if (V[i].first * V[i].second >= M) {
		    int tmp = 0;
		    int count = 0;
		    while (V[i].second--) {
		        tmp  = V[i].first;
                        count  ;
		        if (tmp >= M) {
			    global  = 1; // 这里有问题,AC 60%
			}
		    }
		} else {
		    global  = 0;
		}
	    }
	}
        cout << global << endl;
    }
    return 0;
}
#百度##笔试题目#
全部评论
楼主第二题AC么?
点赞 回复 分享
发布于 2019-09-10 21:05
第三题有做嘛😀
点赞 回复 分享
发布于 2019-09-10 21:08
第二题这个能AC吗
点赞 回复 分享
发布于 2019-09-10 21:10
1.2题能进面试吗………😭
点赞 回复 分享
发布于 2019-09-10 21:20
总感觉楼主第2题。 2 75 50 1 25 1,输出是0,是我理解错了么
点赞 回复 分享
发布于 2019-09-10 21:45
import java.util.*; public class Main {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         int n = sc.nextInt();         int m = sc.nextInt();         int count = 0;         ArrayList<Integer> list = new ArrayList<>();         // 将面值放入一个list里,数量大于1则重复,如[100, 50, 50, 10, 1]         for (int i = 0; i < n; i++) {             int key = sc.nextInt();             int value = sc.nextInt();             for (int j = 0; j < value; j++) {                 list.add(key);             }         }         int str = 0, end = list.size() - 1;         // 两个指针 分别指向头部和尾部 [100, 50, 50, 10, 1]         for (int i = 0; i < end; i++) {             // 如果当前值大于工资则直接除              if (list.get(i) >= m) {                 count += list.get(i) / m;             }// 如果当前值小于工资,如50 < 51,则从列表最后的             // 最小的那批面值开始相加,直到付得起工资为止。             else{                 int sum = list.get(i);                 while(sum < m && i < end){                     sum += list.get(end);                     end--;                 }                 if(sum >= m){                     count++;                 }             }         }         System.out.println(count);     } } 求教大佬,我感觉我java的思路没问题,就是如果小于面值,就优先从小面额开始相加,但是只过了40%,😭
点赞 回复 分享
发布于 2019-09-10 22:26
dalao可以帮忙看看第三题逻辑哪里错了吗。。。 int nums[10] = {0,2,5,5,4,5,6,3,7,6}; int main() {     int n, m;     cin >> n >> m;     vector<int> can(m);     for (int i = 0; i < m; i++) {         cin >> can[i];     };     sort(can.begin(), can.end(), greater<int>());     vector<int> dp(1+n, 0);     for (int i = 0; i < m; i++) {         int x = can[i], cost = nums[x];         for (int i = cost; i <= n; i++) {             if (i - cost == 0 || dp[i - cost] != 0)                 dp[i] = max(dp[i], dp[i - cost] * 10 + x);         }     }     cout << dp[n] << endl; }
点赞 回复 分享
发布于 2019-09-11 10:59
我猜你是zj
点赞 回复 分享
发布于 2019-09-15 13:40

相关推荐

评论
1
10
分享
牛客网
牛客企业服务