SRM 532 Div1
300:気をつけましょう系問題
気をつけてなかったので落ちる。
import java.util.*; public class DengklekMakingChains{ public int maxBeauty(String[]a){ int[] L=new int[50]; int l=0; int r=0; int[]R=new int[50]; int []D=new int[10000]; int []N=new int[50]; int n=0; int d=0; for(int i=0;i<a.length;i++){ int now=0; boolean Left=true; for(int j=0;j<a[i].length();j++){ if(a[i].charAt(j)=='.'){ if(Left)L[i]=now; else D[d++]=now; Left=false; now=0; }else{ now+=(int)(a[i].charAt(j)-'0'); } } if(Left)N[i]=now; R[i]=now; } int ret=0; for(int i=0;i<d;i++)ret=Math.max(ret,D[i]); //Arrays.sort(L,0,l); //Arrays.sort(R,0,r); for(int i=0;i<a.length;i++) for(int j=0;j<a.length;j++){ if(i==j)continue; int now=L[i]+R[j]; for(int k=0;k<a.length;k++)if(k!=i&&k!=j)now+=N[k]; ret=Math.max(ret,now); } return ret; } }
450:なにか
やるだけ。
public class DengklekBuildingRoads{ public int numWays(int a,int b,int c){ int MOD=1000000007; int dp[][][][]=new int[31][31][256][9];//n house m use k joutai last use dp[0][0][0][0]=1; for(int i=0;i<a-1;i++){ for(int j=0;j<=b;j++){ for(int k=0;k<(1<<c);k++){ for(int l=0;l<c;l++){ if(dp[i][j][k][l]==0)continue; // System.out.println(i+" "+j+" "+k+" "+l+": "+dp[i][j][k][l]); if(k%2==0){ dp[i+1][j][k/2][0]=(dp[i][j][k][l]+dp[i+1][j][k/2][0])%MOD; if(i+c<a)for(int m=2;j+m<=b;m+=2)dp[i+1][j+m][k/2][0]=(dp[i][j][k][l]+dp[i+1][j+m][k/2][0])%MOD; } if(k%2==1&&j<b){ if(i+c<a)for(int m=1;j+m<=b;m+=2)dp[i+1][j+m][k/2+(1<<(c-1))][0]=(dp[i][j][k][l]+dp[i+1][j+m][k/2+(1<<(c-1))][0])%MOD; } for(int m=l+1;m<c&&m+i<a;m++){ for(int n=1;n+j<=b;n++){ if(n%2==1)dp[i][n+j][k^1^(1<<m)][m]=(dp[i][j][k][l]+dp[i][j+n][k^1^(1<<m)][m])%MOD; else dp[i][n+j][k][m]=(dp[i][j][k][l]+dp[i][j+n][k][m])%MOD; } } } } } } return dp[a-1][b][0][0]; } }
1000:みてない
Challenge:おとされるだけ。みんなおちてる
Systest:とおった。みんなかなりおちてる
result:
0 + 231.66 + 0 + 0 = 231.66 (181st)
Rating:1794 -> 1835(+41)
一応Highestだけど最下位な気がする