日記ガチ勢、TopCoder SRM670

タイピングサミット初日ですが、参加権はないので、家でひたすら日記処理。
3週間近く溜まっていましたが、途中からJJFのCS放送を観る。
女子部門が終わったところでまさかの映像トラブルで終了。
復旧時には男子部門が全て終わった頃でした。とても残念。

22時くらいからゲーセンへ向かう。
I'm On Fire 94.4%。正直AAA+はいける。
日記ガチ勢、TopCoder SRM670_f0019846_0435460.jpg


後はDIVAコンテストをやる。
リモコン HARD fine3 106.05%
日記ガチ勢、TopCoder SRM670_f0019846_044267.jpg


Clover Club HARD fine1 106.08%
日記ガチ勢、TopCoder SRM670_f0019846_0445093.jpg


どういうことなの!? HARD fine5 105.99%
日記ガチ勢、TopCoder SRM670_f0019846_0459100.jpg


これは結構高いんじゃない?
日記ガチ勢、TopCoder SRM670_f0019846_0453563.jpg


Dreaming Leaf NORMAL fine3 102.21%
日記ガチ勢、TopCoder SRM670_f0019846_0462714.jpg


REVはようやく僕は此処で君を待つの称号を獲得。50クレぐらいらしい。
日記ガチ勢、TopCoder SRM670_f0019846_047314.jpg


後はDYNAMITE SENSATION REV.を微更新で47180。もうちょっといける。
日記ガチ勢、TopCoder SRM670_f0019846_0473361.jpg


帰宅後はSRMに参加。

easyは、自分と相手がカードの配列を持っているので、
1回だけ交換する。その後自分のカードの数字の和、相手のカードの数字の和を
それぞれ出して、掛けた時の値の組み合わせが何通りあるか出力せよという問題。
やるだけなので愚直に出していましたが、先に合計だけ出して、
後で足し引きする手法で良いと思います。

import java.util.ArrayList;

public class Cdgame {

public int rescount(int[] a, int[] b) {
ArrayList num = new ArrayList();
for(int i = 0 ; i < a.length ; i++){
for(int j = 0 ; j < b.length ; j++){
int anum = 0;
int bnum = 0;
for(int k = 0 ; k < a.length ; k++){
if(k == i){
anum += b[j];
}else{
anum += a[k];
}
}

for(int k = 0 ; k < b.length ; k++){
if(k == j){
bnum += a[i];
}else{
bnum += b[k];
}
}
int sum = anum * bnum;
if(!num.contains(sum))num.add(sum);
}
}
return num.size();
}

}



mediumは、+と-でできた文字列があり、
プラスを1、マイナスを-1とする。
後方からn文字削った時の値が負になる回数が多くてもk回以下になるようにしたい。
任意の場所の-を+にすることができるとき、必要最小回数を求めよという問題。
単純に左からプラスにしていって、k回以下を満たすまでやればよい。


public class Drbalance {

public int lesscng(String s, int k) {
int minusnum = 0;
for(int i = -1 ; i < s.length() ; i++){
int minuser = 0;
int now = 0;
if(i == -1){
for(int j = 0 ; j < s.length(); j++){
now += returnPorN(s.charAt(j));
if(now < 0)minuser++;
}
}else{
if(s.charAt(i) == '-'){
minusnum++;
s = s.substring(0, i)+"+"+s.substring(i+1, s.length());
}
for(int j = 0 ; j < s.length(); j++){
if(j <= i){
now += 1;
}else{
now += returnPorN(s.charAt(j));
}
if(now < 0)minuser++;
}
}
if(minuser <= k)return minusnum;
}
return minusnum;
}

public int returnPorN(char c){
if(c == '+'){
return 1;
}else{
return -1;
}
}

}


hardは、木構造に赤と青の印が置いてある。
印ごと毎ターン1つ移動できるとき、青と同じ位置にならないように赤は逃げる。
青は同じ位置になるように追いかける時、何ターンで青につかまるかという問題。
赤は距離が長くなるように、青は距離が短くなるようにという戦略を取ったが、
赤は必ずしもそうでなく、近づいてより逃げられる場合があるので、ケースで落ちて提出できず。

レートは1101 -> 1138。今年中に1200は戻したい。

その後は激にぼというラーメンを食べつつ日記を書こうとしていたが、
食べて寝落ちというダメパターンでした。しかも全然にぼし感なかったし・・・。
日記ガチ勢、TopCoder SRM670_f0019846_0573758.jpg


日記ガチ勢、TopCoder SRM670_f0019846_0574585.jpg


夜食ダメ絶対です。

  by ddrer-yossi | 2015-10-10 23:41 | TopCoder

<< 1日療養、タイピングサミット2... 社畜飲み >>

SEM SKIN - DESIGN by SEM EXE