AtCoder:ABC086C - Travelingを解いてみた(仮)/C++
問題は以下の通りです
僕のこのコードではACされませんでした.
どこか見落としているので
わかる人は教えていただきたいです.
#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main(){
int N;
cin >> N;
for(int i =0 ; i<N; i++){
cin >> t[i] >> x[i] >> y[i];
}
for(int i =1 ; i<N; i++){
step[0] = t[0];
step[i] = t[i]-t[i-1];
}
int nowx=0,nowy=0;
int x_step,y_step;
for(int i=0;i<N; i++){
x_step = x[i] - nowx;
y_step = y[i] - nowy;
if(abs(x_step) > step[i]){
goto out;
}
step[i] -= abs(x_step);
nowx = x[i];
if(abs(y_step) > step[i] ){
goto out;
}
step[i] -= abs(y_step);
if(step[i]%2 == 0){
nowy = y[i];
}
else{
goto out;
}
}
if(nowx == x[N-1] && nowy == y[N-1]){
cout << "Yes" << endl;
}
else{
out:
cout << "No" << endl;
}
}
AtCoder: ABC049C - 白昼夢を解いてみた/C++
問題は以下の通りです。
コードはACされましたが
自分でも無駄が多いなと思うので,自分なりにスマートにコードを書くことを
お勧めします.
※基本的に私のコードはとりあえず動けばいい脳筋コードです.
#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main() {
string S;
cin >> S;
reverse(S.begin(),S.end());
//cout << S << endl;
//cout << "S.size():"<<S.size() <<endl;
int index = 0;
while(index < S.size()){
skip:
if(S.substr(index,5) == "maerd"){
index += 5;
if(index >= S.length()){
goto out1;
}
//cout << "index:" <<index << endl;
goto skip;
}
else if(S.at(index) == 'r'){
if(S.substr(index+1,6)== "emaerd"){
index += 7;
if(index >= S.length()){
goto out1;
}
//cout << "index:" <<index << endl;
goto skip;
}
else if(S.substr(index+1,5)== "esare"){
index += 6;
if(index >= S.length()){
goto out1;
}
//cout << "index:" <<index << endl;
goto skip;
}
else{
goto out2;
}
}
else if(S.substr(index,5)=="esare"){
index += 5;
if(index >= S.length()){
goto out1;
}
//cout << "index:" <<index << endl;
goto skip;
}
else{
goto out2;
}
}
out1:
if(index == S.length()){
cout << "YES" << endl;
}
else{
out2:
cout << "NO" << endl;
}
}
文字を逆に読む発想を参考にさせていただきました.
参考にしたものは以下のものです.
AtCoder:ABC085C - Otoshidama 解いてみた
合っていると思ってるんだけどなぜか不正解になっちゃう.
何か間違っていたら教えてください
#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main() {
int N,Y;
cin >> N >> Y;
int indexi,indexj,indexk,count;
rep(i,N+1){
indexi = i;
rep(j,N+1-indexi){
indexj = j;
rep(k,N+1-indexi-indexj){
if((10000*i+5000*j+1000*k) == Y){
indexi = i;
indexj = j;
indexk = k;
count = 1;
goto skip;
}
}
}
}
skip:
if(count == 1){
cout << indexi << " "<< indexj << " "<< indexk << endl;
}
else{
cout << -1 << " "<< -1 << " "<< -1 << endl;
}
}
AtCoder:ABC085B - Kagami Mochi 解いてみた
鏡餅の問題を解いてみました.
ソートを使って並び替えて順番にdを検査していきました.
ほかに面白い回答などがございましたらご教授お願いします.
問題は以下の通り
atcoder.jp
#include <bits/stdc++.h> #define _GLIBCXX_DEBUG using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) int main() { int N; cin >> N; vector<int> d(N); rep(i,N){ cin >> d.at(i); } sort(d.begin(),d.end()); reverse(d.begin(),d.end()); int count = 1; rep(i,N-1){ if(d.at(i)>d.at(i+1)){ count++; } } cout << count << endl; }
ABC088B - Card Game for Twoを解いてみた/ C++
AtCoder初心者です.
ABC008B-Gard Game for Twoを自分なりに解いてみました.
ほかにもっと賢いやり方がありましたらご教授いただけると幸いです.
不要なマクロとかありますが悪しからず.
問題は以下のとおり
atcoder.jp
#include <bits/stdc++.h> #define _GLIBCXX_DEBUG using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) int maxcard(vector<int>v,int &max_i){ int max=0; for(int i=0;i<v.size();i++){ if(v.at(i) >= max ){ max = v.at(i); max_i = i; } } //cout << "max:"<< max << endl; return max; } int main() { int N; cin >> N; vector<int> a(N); rep(i,N){ cin >> a.at(i); } int max_i = 0; int alice = 0; int bob =0; int j = 0; while(j<N){ alice += maxcard(a,max_i); //cout << alice << endl; a.at(max_i)=0; j++; bob += maxcard(a,max_i); //cout << bob << endl; a.at(max_i)=0; } int ans; ans = alice -bob; cout << ans << endl; }
vim めもめも
カーソル移動
k
h l
j
:wq 保存しておわり
x その文字消す
a 最後から書く
i 文字のインサート
d デリーとコマンド
d$ カーソルより後ろ全消し
dd 一行消す
dw 1ワード消す
u 元に戻す
U 一行元に戻す
ctrl+R やり直し