网易互娱 第二轮笔试第三题


#include<iostream>
#include<vector>
using namespace std;

int main()
{
	int t;
	cin >> t;
	while (t--) {
		int k, m, d, temp;
		vector<int>day;

		cin >> k >> m;
		temp = m;
		while (m--) {
			cin >> d;
			day.push_back(d);
		}
		
		int prev = 1, end = 30, add = 0, res = temp;
		for (int i = 0; i < day.size(); i++) {
			add = (day[i] - prev) / (k + 1) - 1;
			res += add;
			prev = day[i];
		}

		res += (end - prev) / (k + 1) + 1;
		cout << res << endl;
	}
	return 0;
}


#网易##笔试题目#
全部评论
厉害, 此题我没做出来, 上面有个小BUG,while(m--), 此时m==-1,下面res =m,结果不对,是不是少个中间变量。
点赞
送花
回复 分享
发布于 2019-09-08 00:26
这代码感觉不对呀。
点赞
送花
回复 分享
发布于 2019-09-08 13:11
京东
校招火热招聘中
官网直投
纯C,A了第一题和第三题🤣
点赞
送花
回复 分享
发布于 2019-09-08 13:15
第三题没AC出来,刚刚拿楼主的过来改了一下,示范样例是过了,不知道能不能AC。请问楼主AC了吗? #include <iostream> #include <vector> using namespace std; //example //input: //4 //0 10 //1 2 3 4 5 6 7 8 9 10 //1 15 //1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 //1 7 //5 9 13 17 21 25 29 //1 0 //output: //30 //15 //15 //15 int main() {     int t;     cin >> t;     while (t--){         int k, m, d;         vector<int>day;                  cin >> k >> m;         int res = m;         while (m--){             cin >> d;             day.push_back(d);         }                  int prev = 1, end = 30, add = 0;         for (int i = 0; i < day.size();i ++){             if (day[i] - prev - k > 0) {                 add = (day[i] - prev - k) / (k + 1);                 res += add;                 if ((day[i] - prev - k) % (k + 1)) {                     ++res;                 }                                               }             prev = day[i] + k + 1;         }         if (end - prev + 1 > 0) {             add = (end - prev + 1) / (k + 1);             if ((end - prev - k) % (k + 1)) {                 ++add;             }             res += add;         }         cout << res << endl;     }     return 0; }
点赞
送花
回复 分享
发布于 2019-09-08 13:53

相关推荐

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