vector/array三道练习题
·
Q1: C - Minimum Glutton
AtCoder_abc364(题目链接)
#include<iostream>
#include<algorithm>
using namespace std;
//typedef long long ll;
void solve() {
int n;
long long x,y;
cin>>n>>x>>y;
// sum(Ai)>X or sum(Bi)>Y
int a[n],b[n];
for(int i = 0; i < n; i++) {
cin>>a[i];
}
for(int i = 0; i < n; i++) {
cin>>b[i];
}
sort(a,a+n,greater<int>());
sort(b,b+n,greater<int>());
int ans = 0;
long long sum1 = 0,sum2 = 0;
for(int i = 0; i < n; i++) {
sum1 += a[i];
sum2 += b[i];
ans++;
if(sum1>x||sum2>y) break;
}
cout<<ans;
}
int main() {
solve();
return 0;
}
Q2: C - Move It
题目链接:AtCoder_abc360
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
void solve() {
int n;
cin>>n;
map<int,vector<int>> mp;
int a[n],w[n];
for(int i = 0; i < n; i++) {
cin>>a[i];
}
for(int i = 0; i < n; i++) {
cin>>w[i];
}
for(int i = 0; i < n; i++) {
mp[a[i]].push_back(w[i]);
}
int ans = 0;
for(auto it = mp.begin(); it != mp.end(); it++) {
if(it->second.size()>1) {
sort(it->second.begin(),it->second.end());
for(int i = 0; i < it->second.size()-1; i++) {
ans += it->second[i];
}
}
}
cout<<ans;
}
int main() {
solve();
return 0;
}
Q3: D. I Love 1543
题目链接:CodeForces_2036D
#include<iostream>
#include<algorithm>
using namespace std;
void solve() {
int n,m;
cin>>n>>m;
string str[n];
for(int i = 0; i < n; i++) {
cin>>str[i];
}
int layer = min(n,m)/2;
int ans = 0;
for(int k = 0; k < layer; k++) {
string target;
string ch3;
int cnt = 0;
for(int j = k; j < m-1-k; j++) {
target += str[k][j];
if(cnt<3) {
ch3 += str[k][j];
cnt++;
}
}
for(int i = k; i < n-1-k; i++) {
target += str[i][m-1-k];
if(cnt<3) {
ch3 += str[i][m-1-k];
cnt++;
}
}
for(int j = m-1-k; j > k; j--) {
target += str[n-1-k][j];
if(cnt<3) {
ch3 += str[n-1-k][j];
cnt++;
}
}
for(int i = n-1-k; i > k; i--) {
target += str[i][k];
}
target += ch3;
size_t pos = 0;
while((pos = target.find("1543",pos)) != string::npos) {
ans++;
pos += 4;
}
}
cout<<ans<<"\n";
}
int main() {
int t;
cin>>t;
while(t--) {
solve();
}
return 0;
}
更多推荐




所有评论(0)