笔试强训(三)
一. 简写单词
https://www.nowcoder.com/practice/0cfa856bf0d649b88f6260d878f35bb4?tpId=290&tqId=39937&ru=/exam/oj
#include <iostream>
#include <string>using namespace std;int main() {string str;//getline(cin,str)//读一行string ans;while (cin >> str){if (str[0] >= 'a' && str[0] <= 'z'){str[0] -= 32;}ans += str[0];}cout << ans << endl;return 0;
}
二.dd爱框框
https://ac.nowcoder.com/acm/problem/221681
滑动窗口
#include <iostream>
using namespace std;
const int N = 1e7 + 10;
int a[N];
int main()
{int n, m;cin >> n >> m;for (int i = 1; i <= n; i++){cin >> a[i];}int sum = 0;int l = 0, r = 0;int len = 0x3f3f3f3f;int ll = 0, rr = 0;while (r <= n){sum += a[r];while (sum >= m){if (r - l + 1 < len){ll = l;rr = r;len = r - l + 1;}sum -= a[l];l++;}r++;}cout << ll << " " << rr << endl;return 0;
}
三.除2!
https://ac.nowcoder.com/acm/problem/213140
#include <iostream>
#include <queue>using namespace std;int main()
{int n, k;cin >> n >> k;priority_queue<int> q;int x;long long int sum = 0;for (int i = 0; i < n; i++){cin >> x;if (x % 2 == 1){sum += x;}else{q.push(x);}}while (k-- && q.size()){x = q.top();q.pop();x /= 2;if (x % 2 == 1){sum += x;}else{q.push(x);}}while (q.size()){sum += q.top();q.pop();}cout << sum << endl;return 0;
}