首页 > 从现在开始记录一下秋招
头像
头顶问号知多少
编辑于 2020-09-14 21:18
+ 关注

从现在开始记录一下秋招

9.14百度笔试 c++开发岗位(求ac大佬指教)
1、大胃王
2、奇数偶数问题
1、代码
#include <bits/stdc++.h>
using namespace std;

int fun() {
	int T;
	cin >> T;
	int n, k;
	while (T--) {
		cin >> k >> n;
		vector<int> w(k);
		for (int i = 0; i < k; ++i) {
			cin >> w[i];
		}
		if (accumulate(w.begin(), w.end(), 0) < n) {
			cout << -1 << endl;
			return 0;
		}
		vector<vector<int>> dp(n + 1);
		for (int i = 0; i < k; ++i) {
			int weight = w[i];
			for (int j = n; j > 0; --j) {
				if (j <= weight) {
					if (dp[j].size() == 0 || dp[j].size()>1) dp[j] = { i + 1 };
				}
				else {
					if (dp[j - weight].size() > 0) {
						if (dp[j].size() == 0) {
							dp[j] = dp[j - weight];
							dp[j].push_back(i + 1);
						}
						else {
							if (dp[j - weight].size() < dp[j].size() - 1) {
								dp[j] = dp[j - weight];
								dp[j].push_back(i + 1);
							}
						}
					}
				}
			}
		}
		if (dp[n].size() > 0) {
			cout << dp[n].size() << endl;
			for (int& i : dp[n])cout << i << ' ';
			cout << endl;
		}
		else {
			cout << -1 << endl;
		}
	}
	return 0;
}

int main() {

	fun();
}

2、代码
using namespace std;

int mod = 1e9 + 7;


int main() {

	int n, m;
	cin >> n >> m;
	vector<int> v(n);
	for (int i = 0; i < n; ++i) {
		cin >> v[i];
		v[i] %= 2;
	}
	vector<int> res;
	while (m--) {
		int tag, left, right;
		cin >> tag >> left >> right;
		--left;
		int length = right - left;
		int b = accumulate(v.begin() + left, v.begin() + right, 0);
		int t = 2;

		/*if (tag == 1) cout << long(pow(t, b) - 1)%mod << endl;
		else cout << long(pow(t, length) - pow(t, b)) % mod << endl;*/
		if (tag == 1) res.push_back(long(pow(t, b) - 1) % mod);
		else res.push_back(long(pow(t, length) - pow(t, b)) % mod);

	}
	for (int &i : res) {
		cout << i << endl;
	}
}






全部评论

(1) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐