Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
贴个JAVA二进制拆分AC代码,庆祝100题import java.io.*; public class Main { static StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); static int nextInt() throws IOException { in.nextToken(); return (int)in.nval; } public static void main(String[] args) throws IOException { PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out)); int[] a=new int[101],c=new int[101]; int n=nextInt(),m=nextInt(); while(!(n==0&&m==0)) { for(int i=1;i<=n;i++) a[i]=nextInt(); for(int i=1;i<=n;i++) c[i]=nextInt(); boolean[] dp=new boolean[m+1]; dp[0]=true;int count=0; for(int i=1;i<=n;i++) { if(m<=a[i]*c[i]) for(int j=a[i];j<=m;j++) dp[j]|=dp[j-a[i]]; else { int amount=c[i],k=1; while(k<amount) { int v=k*a[i]; for(int j=m;j>=v;j--) dp[j]|=dp[j-k*a[i]]; amount-=k;k<<=1; } int w=amount*a[i]; for(int j=m;j>=w;j--) dp[j]|=dp[j-w]; } } for(int i=1;i<=m;i++) if(dp[i]) count++; out.println(count); n=nextInt();m=nextInt(); } out.flush(); } } 这题不用单调队列JAVA都能过,注意几个细节就好 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator