読者です 読者をやめる 読者になる 読者になる

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だけど最下位な気がする