ゴミすぎ…
250: WolfSequence
最後のreturn文でオーバーフローする自分の屑さにあきれる
public class ImportantSequence{ public int getCount(int[]a,String b){ boolean ok=false; for(int i=0;i<b.length();i++)if(b.charAt(i)=='+')ok=true; if(!ok)return -1; long L[]=new long[a.length+1]; long R[]=new long[a.length+1]; L[a.length]=1; R[a.length]=100000000000000L; for(int i=a.length-1;i>=0;i--){ if(b.charAt(i)=='+'){ L[i]=Math.max(1,(long)a[i]-R[i+1]); R[i]=(long)a[i]-L[i+1]; }else{ L[i]=Math.max(1,L[i+1]+a[i]); R[i]=R[i+1]+a[i]; } System.out.println(L[i]+" "+R[i]); } return Math.max(0,(int)R[0]-(int)L[0]+1); //本当は return (int)Math.max(0,R[0]-L[0]+1); こうしないといけない } }
550:WolfColoring
配る確率DPを芋酢法を使ってオーダー1つか2つか3つ削る。
書くの遅すぎ…なんとかならないの
public class RandomColoring{ double sum[][][];int R,G,B; double dp[][][][]; void set(int a){ for(int i=0;i<=R;i++){ for(int j=0;j<=G;j++){ double S=0; for(int k=0;k<=B;k++){ sum[i][j][k]=(S+=sum[i][j][k]); } } for(int j=0;j<=B;j++){ double S=0; for(int k=0;k<=G;k++){ sum[i][k][j]=(S+=sum[i][k][j]); } } } for(int i=0;i<=G;i++){ for(int j=0;j<=B;j++){ double S=0; for(int k=0;k<=R;k++) sum[k][i][j]=(S+=sum[k][i][j]); } } } void add(int a,int b,int c,int d,int e,int f,double ADD){ d++;e++;f++; double ret=0; sum[a][b][c]+=ADD; sum[a][b][f]-=ADD; sum[d][b][c]-=ADD; sum[a][e][c]-=ADD; sum[a][e][f]+=ADD; sum[d][e][c]+=ADD; sum[d][b][f]+=ADD; sum[d][e][f]-=ADD; // return ret; } public double getProbability(int a,int r,int g,int b,int sr,int sg,int sb,int d,int e){ R=r;G=g;B=b;d--; dp=new double[a][r][g][b]; dp[0][sr][sg][sb]=1.0; sum=new double[r+1][g+1][b+1]; //sum[sr+1][sg+1][sb+1]=1.0; for(int i=0;i<a-1;i++){ //set(i-1); for(int j=0;j<r;j++){ for(int k=0;k<g;k++){ for(int l=0;l<b;l++){ int masu=(Math.min(r-1,j+e)+1-Math.max(0,j-e))*(Math.min(g-1,k+e)+1-Math.max(0,k-e))*(Math.min(b-1,l+e)+1-Math.max(0,l-e)); if(d>=0)masu-=(Math.min(r-1,j+d)+1-Math.max(0,j-d))*(Math.min(g-1,k+d)+1-Math.max(0,k-d))*(Math.min(b-1,l+d)+1-Math.max(0,l-d));; if(masu==0)continue; // System.out.println(dp[i][j][k][l]+" "+masu); add(Math.max(0,j-e),Math.max(0,k-e),Math.max(0,l-e),Math.min(r-1,j+e),Math.min(g-1,k+e),Math.min(b-1,l+e),dp[i][j][k][l]/masu); if(d>=0)add(Math.max(0,j-d),Math.max(0,k-d),Math.max(0,l-d),Math.min(r-1,j+d),Math.min(g-1,k+d),Math.min(b-1,l+d),-dp[i][j][k][l]/masu); } } } set(i); for(int j=0;j<r;j++) for(int k=0;k<g;k++) for(int l=0;l<b;l++){ dp[i+1][j][k][l]=sum[j][k][l]; //System.out.println(j+" "+k+" "+l+" :"+dp[i+1][j][k][l]); } for(int j=0;j<=r;j++) for(int k=0;k<=g;k++) for(int l=0;l<=b;l++)sum[j][k][l]=0; } //set(a-1); double ret=0; for(int i=0;i<r;i++) for(int j=0;j<g;j++) for(int k=0;k<b;k++) if((d==-1||Math.abs(sr-i)>d||Math.abs(sg-j)>d||Math.abs(sb-k)>d)&&Math.abs(sr-i)<=e&&Math.abs(sg-j)<=e&&Math.abs(sb-k)<=e)ret+=dp[a-1][i][j][k]; return 1.0-ret; } }
950: Wolfなんとか
知らない
Challenge Phase:
答えが負の変な数になりそうなものを1つ落とす。
Systest:
落ちる
Result:
0 + 239.43 + 0 + 50 = 289.43 (55th)
Rating:
1835 -> 1959 (+124)
なんだかんだ言って初めての2桁順位でした。