ポッキーの日にポッキーを買うはずもなく Codeforces #211

仕事です。はい。

お昼は三種チーズメガ一辛。久々にがっつり食いたくなったので。
f0019846_17403072.jpg


夕方に仕事を切り上げて、某所でCodeforcesに参戦。

A問題は数値をそろばん表示に変換する。
逆から読んでいくのと、あとは愚直に表示するだけ。


import java.util.Scanner;

public class Main3 {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String st = input.nextLine();
for(int i = st.length()-1 ; i >= 0; i--){
int num = Character.digit(st.charAt(i), 10);
switch(num){
case 0:
System.out.println("O-|-OOOO");
break;
case 1:
System.out.println("O-|O-OOO");
break;
case 2:
System.out.println("O-|OO-OO");
break;
case 3:
System.out.println("O-|OOO-O");
break;
case 4:
System.out.println("O-|OOOO-");
break;
case 5:
System.out.println("-O|-OOOO");
break;
case 6:
System.out.println("-O|O-OOO");
break;
case 7:
System.out.println("-O|OO-OO");
break;
case 8:
System.out.println("-O|OOO-O");
break;
case 9:
System.out.println("-O|OOOO-");
break;
}
}
}
}


B問題は、n個の数値とk連続があって、k連続の合計が最小となる最初のindexを求める。
重要なのは、計算を省略すること。つまりひとつずらす時は、毎回計算しなおすのではなく、
左端を引いて、右端を足すという処理をやる必要がある。


import java.util.Scanner;

public class Main3 {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int k = input.nextInt();
int[] a = new int[n];
for(int i = 0 ; i < n ; i++){
a[i] = input.nextInt();
}
int minindex = 0;
int min = 0;
for(int i = 0 ; i < k ; i++){
min += a[i];
}
int num = min;
for(int i = 1 ; i <= n-k ; i++){
num -= a[i-1];
num += a[i+k-1];
if(num < min){
minindex = i;
min = num;
}
}
System.out.println(minindex+1);

}
}


C問題は、aaaと同じ文字が三連続した場合、誤りとみなし1文字消去、
aabbと違う文字でも2連続が2回連続してる場合も誤りとみなし1文字消去。
この動作を実際にやるときには、連続してる場合飛ばしていくようにすれば良い。
実際に消去を行っているとオーダ的に間に合わない。(それで一回hackされている)


import java.util.Scanner;

public class Main3 {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
StringBuilder sb = new StringBuilder(input.nextLine());
StringBuilder sb2 = new StringBuilder();
char before = '.';
int count = 0;
boolean prerenzoku = false;
for(int i = 0 ; i < sb.length() ; i++){
if(before == sb.charAt(i)){
if(prerenzoku){
if(count == 1){
//sb.deleteCharAt(i);
//i--;
}
}else{
if(count == 2){
//sb.deleteCharAt(i);
//i--;
}else if(count == 1){
sb2.append(sb.charAt(i));
count++;
}
}
}else{
before = sb.charAt(i);
if(count == 2){
prerenzoku = true;
}else if(count == 1){
prerenzoku = false;
}
count = 1;
sb2.append(sb.charAt(i));
}
//System.out.println(before+","+sb.charAt(i)+","+count+","+prerenzoku);
}
System.out.println(sb2.toString());
}
}


D問題は、バイクを買う人数と、共同予算が与えられていて、
それぞれの人の所持金と、バイクの値段が割り当てられている。
バイクを最大で買う場合の、個人での所持金の出資の最小額を求めよという問題。
ただし、それぞれの人の所持金は、他人に譲渡できない。

共同予算はフルに使うものとして、いろいろ方針を考えたが、test12で落ちる。
pretest12は通ったのに、test12で落ちるという変な現象が。
取り敢えずそのコード。

import java.util.Arrays;
import java.util.Scanner;

public class Main3 {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int m = input.nextInt();
int a = input.nextInt();
int[] bi = new int[n];
int[] ci = new int[m];
for(int i = 0 ; i < n ; i++){
bi[i] = input.nextInt();
}
for(int i = 0 ; i < m ; i++){
ci[i] = input.nextInt();
}
Arrays.sort(bi);
Arrays.sort(ci);
int minc = Integer.MAX_VALUE;
int minindex = -1;
int maxpower = Math.min(n,m);
int maxx = Math.max(n,m);
for(int i = 0 ; i <= maxx ; i++){
int counter = 0;
for(int j = 0 ; j < maxpower-i ; j++){
counter += Math.max(0, ci[maxpower-j-1-i]-bi[n-j-1]);
}
//System.out.println(counter+","+a);
if(counter <= a){
//System.out.println(counter+","+a);
minindex = i;
minc = counter;
break;
}
}
if(minindex == -1){
System.out.println(0+" "+0);
}else{
int sum = 0;
int def = 0;
for(int i = 0 ; i < maxx-minindex ; i++){
sum += Math.min(bi[i+minindex], ci[i]);
def += ci[i];
}
System.out.println(maxpower-minindex+" "+Math.max(0, (def-a)));
}
}
}


終了後はゲーセンへ。

f0019846_17493290.jpg

Release the musicフルコン
f0019846_17495646.jpg

Almaceフルコン
f0019846_17502090.jpg

サンパラフルコン
f0019846_17504736.jpg

クソ苦手だし嫌い。初見。
f0019846_17511288.jpg

桜96.0%。気合。
f0019846_17513830.jpg

スパイラルステアーズ。うーん、ミス減らないね。

帰宅したらレーティングの色がおかしなことになってました。
f0019846_17515433.png

うん、楽しいね!(この後ちゃんと反映されてました。

  by ddrer-yossi | 2013-11-11 23:38 | codeforces | Comments(0)

<< ZETA AAA+、Trico... コンプティーク遠征は失敗に終わ... >>

SEM SKIN - DESIGN by SEM EXE