ネットワークスペシャリスト不合格

かすりもしませんでした。
午前1:免除
午前2:72
午後1:47
午後2:採点してもらえず

ネットワークスペシャリスト不合格_f0019846_11495531.png


今回午前2が結構難しくなっていました。新しい知識的なものが増えたせいかもしれません。
午後1はやはり、片方が全然できていなかったのか・・・?
うーん、来年はきっちり復習して挑もうと思います。
その前に情報セキュリティスペシャリストを受験します。
勉強はほとんどできないと思いますけどね・・・。

ということで本日はcodeforces #98。

1問目は、CとPがあり、CもPも連続して5個までしか取れないのと、
どちらか片方だけしか取れないという条件で、何回取るのに時間がかかるかという問題。
たとえばCPPPPなら2回、CPPPPPPなら3回、CPCPなら4回という具合です。
問題把握に時間がかかりましたが、解けました。

import java.util.Scanner;

public class Test {

public static void main(String args[]){
Scanner input = new Scanner(System.in);
String s = input.nextLine();
System.out.println(carry(s));
}

public static int carry(String s){
if(s.length() == 0)return 0;
int count = 1;
char st = s.charAt(0);
int ct = 0;
for(int i = 0 ; i < s.length(); i++){
if(ct != 5 && st == s.charAt(i)){
ct++;
}else{
st = s.charAt(i);
ct = 1;
count++;
}
}
return count;
}

}

次にB問題。これは、数字が与えられていて、順番にするにはいくつ変更が必要かという問題。
例えば5つの数字、5 3 3 3 1が与えられていれば、2と4がないので、2つ変更する必要がある。

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

public class Test {

public static void main(String args[]){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int a[] = new int[n];
for(int i = 0 ; i < n ; i++){
a[i] = input.nextInt();
}
System.out.println(permutation(n,a));
}

public static int permutation(int n,int[] a){
Arrays.sort(a);
ArrayList array = new ArrayList();
for(int i = 0 ; i < n ; i++){
array.add(a[i]);
}
int count = 0;
for(int i = 0 ; i < n ; i++){
if(!array.contains(i+1)){
count++;
}
}
return count;
}

}

C問題は、ある区間がいくつか与えられていて、どこかの区間に入っているものの数を求める問題。
これ、10^5まであるので、n^2オーダだと間に合いません。
そこを考えずにn^2オーダで実装したところ、Hackされてしまいました。無念。
対策としては、何かでソートを行なってからやるとかでしょうか。
とりあえずこれは時間制限を超えるプログラムです。

import java.util.Scanner;

public class Test {

public static void main(String args[]){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int a[] = new int[n];
int b[] = new int[n];
for(int i = 0 ; i < n ; i++){
a[i] = input.nextInt();
b[i] = input.nextInt();
}
System.out.println(history(n,a,b));
}

public static int history(int n,int[] a,int[] b){
int count = 0;
boolean[] ok = new boolean[n];
for(int i = 0 ; i < a.length ; i++){
for(int j = 0 ; j < a.length ; j++){
if(i == j)continue;
if(a[i] < a[j] && b[j] < b[i] && ok[j] == false){
count++;
ok[j] = true;
}
}
}
return count;
}
}

その後、D問題を見ては実装できずに終了。
ちょっともったいない結果でしたね。

夜はアリエッティを観ました。うーん、なんか微妙ですね。
1,人間に見つかったらダメなの
2,あっ(見つかった)
3,見つかったから引っ越さなきゃ
4,そうか、またね。

という4コマ漫画な気がします。はい。
感動とかそういうのはありませんでした。

  by ddrer-yossi | 2011-12-16 23:48 | codeforces

<< 勉強会参加せず 阿鼻叫喚な研究 >>

SEM SKIN - DESIGN by SEM EXE