AtCoder Beginner Contest 153解いてみた
A問題
A問題では、HPが0になるまで、ダメージを減らしていくというものでした。なので、標準入力からHPと1回あたりのダメージ量を受け取り、0以下になルマで、無限ループで回し、カウントをしていくという事で解くことができます。
#include <iostream>
#include <algorithm>
#include <math.h>
#include <vector>
#include <string>
#include <queue>
#include <map>
#include <utility>
using namespace std;
using ll = long long;
int main() {
ll h,a;
cin >> h >> a;
ll count =0;
while (1) {
if (h <=0) break;
h = h - a;
count++;
}
cout << count << endl;
return 0;
}
B問題
B問題は、同じ必殺技を使うことができないので、最大のダメージ量は、全ての必殺技を1回ずつ足した値になります。その値が、HP以上であれば確実に倒すことができるので、最終的にその条件で出力をYes
かNo
を切り替えれば良いことになります。#include <iostream>
#include <algorithm>
#include <math.h>
#include <vector>
#include <string>
#include <queue>
#include <map>
#include <utility>
using namespace std;
using ll = long long;
int main() {
ll h,n;
cin >> h >> n;
vector <ll> a(n);
ll sum = 0;
for (ll i = 0; i < n; i++) {
cin >> a[i];
sum+= a[i];
}
if (sum >= h) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
C問題
c問題では、標準入力で受け取った値を昇順にソードして、値の大きいものを必殺技で倒すようにするために、必殺技の使える回数分要素を消していきます。その後、それぞれの#include <iostream>
#include <algorithm>
#include <math.h>
#include <vector>
#include <string>
#include <queue>
#include <map>
#include <utility>
using namespace std;
using ll = long long;
int main() {
int n,k;
cin >> n >> k;
vector <ll> h(n);
for (int i = 0; i < n; i++) {
cin >> h[i];
}
if (n <= k ) {
cout << 0 << endl;
return 0;
}
sort(h.begin(),h.end());
while (k>0) {
h.pop_back();
k--;
}
ll count = 0;
for (int i = 0; i < h.size(); i++) {
count+= h[i];
}
cout << count << endl;
return 0;
}
ディスカッション
コメント一覧
まだ、コメントがありません