親と久しぶりに食事へ。 ARC #031

今日は朝10時に起床する。

Cross Beatsでは360日に到達しました。漸く?
親と久しぶりに食事へ。 ARC #031_f0019846_2159239.jpg


朝飯は、松屋で牛丼を食べました。ねぎ玉牛丼とかその辺。
親と久しぶりに食事へ。 ARC #031_f0019846_20505583.jpg


お昼は、疲れが取れていないのかお昼寝してしまいました。
その後は牡蠣の野菜炒めを作りつつ、お菓子を食べつつテラリアを進める。
親と久しぶりに食事へ。 ARC #031_f0019846_20514135.jpg


夕方には選挙に投票へ向かう。正直無駄金だよなーとしか思っていない。

そして、夕飯は久しぶりに親と食べる。肉料理+スペイン料理な感じのお店。
親と久しぶりに食事へ。 ARC #031_f0019846_21045.jpg

わざわざ書いてくれたんだなと思うと嬉しいですね。

親と久しぶりに食事へ。 ARC #031_f0019846_20533979.jpg

まずはワインをいただきました。

そして店内おすすめの五種盛り。
親と久しぶりに食事へ。 ARC #031_f0019846_2054313.jpg


ゆっくりと食べ進め、サラダ。
チーズと3種の肉が入っていて、なかなかボリュームが有りました。
親と久しぶりに食事へ。 ARC #031_f0019846_20543039.jpg


そして牛すじ煮込み。いい味していました。
親と久しぶりに食事へ。 ARC #031_f0019846_20551262.jpg


三種のパンも食べました。
親と久しぶりに食事へ。 ARC #031_f0019846_20554132.jpg


ネック牛とサボイキャベツのアヒージョ。
親と久しぶりに食事へ。 ARC #031_f0019846_20565899.jpg


ここからは炭火焼き肉3種。
親と久しぶりに食事へ。 ARC #031_f0019846_20571374.jpg


親と久しぶりに食事へ。 ARC #031_f0019846_2057238.jpg


親と久しぶりに食事へ。 ARC #031_f0019846_20573239.jpg


最後にパスタで〆ました。
親と久しぶりに食事へ。 ARC #031_f0019846_20574694.jpg


これだけ食べて、ワイン2杯を飲んで、1人4000円未満でした。
かなりの良さが有りました。

AtCoder Regular Contest031に参加。
A問題は、回文判定問題。奇数と偶数に分ける必要はなく、
1/2部分を後ろと前で一致するか判定するだけでよい。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String st = br.readLine();
boolean isok = true;
for(int i = 0 ; i < st.length()/2 ; i++){
if(st.charAt(i) != st.charAt(st.length()-1-i)){
isok =false;
break;
}
}
if(!isok){
System.out.println("NO");
}else{
System.out.println("YES");
}
}
}


B問題は、1箇所を島にして、全体を島にできるかという問題。
10*10程度なので、素直に幅探索でつながりの島を調べてカウントしていって、
そのカウント数が全体の島の数と一致するかどうかで求められる。


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

public class Main {
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] st = new String[10];
for(int i = 0 ; i < 10 ; i++){
st[i] = br.readLine();
}
int count = 0;
for(int i = 0 ; i < 10 ; i++){
for(int j = 0 ; j < 10 ; j++){
if(st[i].charAt(j) == 'o'){
count++;
}
}
}

boolean ok = false;
for(int i = 0 ; i < 10 ; i++){
for(int j = 0 ; j < 10 ; j++){
if(st[i].charAt(j) == 'x'){
if(isok(st,count,j,i)){
ok = true;
break;
}
}
if(ok)break;
}
if(ok)break;
}
if(ok){
System.out.println("YES");
}else{
System.out.println("NO");
}
}

public static boolean isok(String[] st, int count,int x,int y){
count++;
int counter = 0;
Queue q = new LinkedList();
boolean[][] ismoved = new boolean[10][10];
q.add(x+","+y);
counter++;
ismoved[y][x] = true;
while(!q.isEmpty()){
String[] str = q.poll().split(",");
int xs = Integer.parseInt(str[0]);
int ys = Integer.parseInt(str[1]);
if(!iswall(xs+1,ys) && !ismoved[ys][xs+1] && st[ys].charAt(xs+1) == 'o'){
counter++;
q.add((xs+1)+","+ys);
ismoved[ys][xs+1] = true;
}

if(!iswall(xs-1,ys) && !ismoved[ys][xs-1] && st[ys].charAt(xs-1) == 'o'){
counter++;
q.add((xs-1)+","+ys);
ismoved[ys][xs-1] = true;
}

if(!iswall(xs,ys+1) && !ismoved[ys+1][xs] && st[ys+1].charAt(xs) == 'o'){
counter++;
q.add(xs+","+(ys+1));
ismoved[ys+1][xs] = true;
}

if(!iswall(xs,ys-1) && !ismoved[ys-1][xs] && st[ys-1].charAt(xs) == 'o'){
counter++;
q.add(xs+","+(ys-1));
ismoved[ys-1][xs] = true;
}
}
if(count == counter)return true;
return false;
}

public static boolean iswall(int x,int y){
if(x < 0 || y < 0 || x >= 10 || y >= 10)return true;
return false;
}
}


C問題は、棒が山なりになるように隣同士を並び替える最小回数を求める。わからん。

Codeforces #282は参加登録はしましたが、疲れもあったので寝ることにしました。

  by ddrer-yossi | 2014-12-13 23:48 | 日常生活

<< テラリアのノーマルモードを終える 健康診断や仕事や飲みでいっぱい... >>

SEM SKIN - DESIGN by SEM EXE