A Cable Way
Passed System Test
R、G、Bそれぞれの乗り場にそれぞれr,g,b人の子供が居る。
この子供らを全員乗せ、山頂まで送り届けたい。
乗り場にケーブルカーが到着する度に、乗り場に居る生徒を二人までケーブルカーに載せることが出来る。
ケーブルカーはR→G→B→R→G→B。。。とぐるぐる回り、全員ケーブルカーに載せることが出来れば、そこから山頂へと出発する。
R乗り場からスタートし、各乗り場間の移動には一分、山頂まで行くにはどの乗り場からであっても30分かかる。
全員を載せて山頂に着くのは何分後か?
#include <iostream>
#include <vector>
#include <string>
#include <string.h>
#include <map>
#include <set>
#include <algorithm>
#include <time.h>
#include <cmath>
using namespace std;
bool check(int r,int g, int b){
return (r>0||g>0||b>0);
}
int main()
{
int r,g,b;
cin>>r>>g>>b;
int ans = 0;
if(!check(r,g,b)){
cout << ans << endl;
return 0;
}
while(1){
r-=2;
if(!check(r,g,b)) break;
ans++; g-=2;
if(!check(r,g,b)) break;
ans++; b-=2;
if(!check(r,g,b)) break;
ans++;
}
cout << ans+30 << endl;
}
B African Crossword
Passed System Test
n行m列の、全て小文字のアルファベットで構成されたクロスワードがある。
i行j列の文字は、同じ行、或いは同じ列に、同じ文字が無ければ出力される。
法則にしたがい文字を出力せよ。
#include <iostream>
#include <vector>
#include <string>
#include <string.h>
#include <map>
#include <set>
#include <algorithm>
#include <time.h>
#include <cmath>
using namespace std;
int main(){
string ans = "";
int row,column;
cin>>row>>column;
string code[100];
bool flag;
for(int i = 0;i < row;i++) cin>>code[i];
for(int i = 0;i < row;i++) for(int j = 0;j < (int) code[i].length();j++){
flag = true;
for(int f = 0;f < row;f++){
if(f == i) continue;
if(code[f][j] == code[i][j]){
flag = false;
break;
}
}
if(!flag) continue;
for(int f = 0;f < (int) code[i].length();f++){
if(f == j) continue;
if(code[i][f] == code[i][j]){
flag = false;
break;
}
}
if(!flag) continue;
ans += code[i][j];
}
cout << ans << endl;
}
Rating 1344→1338(-6)
C,D,Eは見たが分からず。
Eは問題を解けそうだったが、Stack Overflowを起こしてしまい、断念。
他の人の回答を見たところDPっぽかったが、パッと見ただけなのでよく分からず。
要復習。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。