TCO11 Algo Qual1(5/15 1:00~3:00)
■MinimumLiars(Easy)
考えられる全ケースを試すだけ.
import java.util.*;
import java.lang.*;
import java.math.*;
import java.io.*;
public class MinimumLiars {
int INF=1<<28;
double EPS=1e-9;
public int getMinimum(int[] a) {
int n=a.length;
for(int j=0;j<=n;j++){
int s=0;
for(int i=0;i<n;i++){
if(a[i]>j){
s++;
}
}
if(j==s){
return j;
}
}
return -1;
}
void debug(Object...os){
System.err.println(Arrays.deepToString(os));
}
void print(String s){
System.out.print(s);
}
void println(String s){
System.out.println(s);
}
public static void main(String[] args) {
// MinimumLiars temp = new MinimumLiars();
// System.out.println(temp.getMinimum(int[] claim));
}
}
■FoxListeningToMusic(Medium)
O(Tn)じゃないとSystem Testで落ちます.
import java.util.*;
import java.lang.*;
import java.math.*;
import java.io.*;
public class FoxListeningToMusic {
int INF=1<<28;
double EPS=1e-9;
public double[] getProbabilities(int[] a, int t) {
int n=a.length;
double[] dp=new double[t+1];
dp[0]=1./n;
for(int k=0;k<t;k++){
double[] d=new double[n];
for(int i=0;i<n;i++){
d[i]+=dp[k]/n;
}
for(int i=0;i<n;i++){
if(k+a[i]<=t){
dp[k+a[i]]+=d[i];
}
}
}
// debug(dp);
double[] res=new double[n];
for(int i=0;i<n;i++){
for(int j=t;j>t-a[i]&&j>=0;j--){
res[i]+=dp[j];
}
}
return res;
}
void debug(Object...os){
System.err.println(Arrays.deepToString(os));
}
void print(String s){
System.out.print(s);
}
void println(String s){
System.out.println(s);
}
public static void main(String[] args) {
}
}
■Challenge Phase
Mediumにて,O(Tn2)の人を狙ったのですが,3回もミスしてしまいました.■Result
○○× +1 -3478.98pts. 332th
■Rating
1279 -> 1360600位以内なので,次のラウンドへ.Round1も残りたいですね.
0 件のコメント:
コメントを投稿