2010年7月11日日曜日

Codeforces Beta Round #23

Codeforces Beta Round #23(7/9 0:00~2:00)

■A. You're Given a String...

□問題
文字列が与えられる.文字列中に2回以上現れる部分文字列の内,最大の長さを求めよ.

□解法
文字列の長さが100以下なので書くだけ.

□コード
  1. import java.util.*;  
  2. import java.lang.*;  
  3. import java.math.*;  
  4. import java.io.*;  
  5. import static java.lang.Math.*;  
  6. import static java.util.Arrays.*;  
  7.   
  8. public class A{  
  9.  Scanner sc=new Scanner(System.in);  
  10.   
  11.  void run(){  
  12.   String s=sc.nextLine();  
  13.   int n=s.length();  
  14.   int ans=0;  
  15.   for(int len=1; len<n; len++){  
  16.    for(int i=0; i+len<=n; i++){  
  17.     String t=s.substring(i, i+len);  
  18.     if(s.indexOf(t, i+1)!=-1){  
  19.      ans=len;  
  20.      break;  
  21.     }  
  22.    }  
  23.   }  
  24.   println(ans+"");  
  25.  }  
  26.   
  27.  void println(String s){  
  28.   System.out.println(s);  
  29.  }  
  30.   
  31.  void print(String s){  
  32.   System.out.print(s);  
  33.  }  
  34.   
  35.  public static void main(String[] args){  
  36.   new A().run();  
  37.  }  
  38. }  

■B. Party

□問題
N人がパーティにやってきた.最初に友達が0人の人が省かれる.次に現在いるパーティ内での友達が1人の人が省かれる,次に現在いるパーティ内での友達が2人の人が省かれる,…最後に現在いるパーティ内での友達がN-1人の人が省かれる.最後まで残った人の数が最大のものを求める.

□解法
問題の趣旨が掴めない….
→しかし,結構な人数の人が提出している.
→よく分からないけど,実は答え全部1なんじゃね?
→提出,WA,あわわわわ.
→試しに,N=3で手書きシミュレートしてみよう.
→なるほど,2人以上が残ることは出来ないなぁ.
→N=4で(ry
→最大2人残った.
→あぁ,N>=2の時は最大N-2人残るのか(N<2の時は0人).
→提出,AC.

□コード
  1. import java.util.*;  
  2. import java.lang.*;  
  3. import java.math.*;  
  4. import java.io.*;  
  5. import static java.lang.Math.*;  
  6. import static java.util.Arrays.*;  
  7.   
  8. public class B{  
  9.  Scanner sc=new Scanner(System.in);  
  10.   
  11.  void run(){  
  12.   int t=sc.nextInt();  
  13.   for(int i=0; i<t; i++){  
  14.    int n=sc.nextInt();  
  15.    println(""+max(0, n-2));  
  16.   }  
  17.  }  
  18.   
  19.  void println(String s){  
  20.   System.out.println(s);  
  21.  }  
  22.   
  23.  void print(String s){  
  24.   System.out.print(s);  
  25.  }  
  26.   
  27.  public static void main(String[] args){  
  28.   new B().run();  
  29.  }  
  30.   
  31. }  

C,D,Eは解けませんでした….

■Result
○○×××

■Rating
1554 -> 1633

CDEのどれかを解くことが出来れば安定して上昇すると思われます.

0 件のコメント: