poj 3274 Gold Balanced Lineup
来源:互联网 发布:七彩网络下载 编辑:程序博客网 时间:2024/05/17 01:12
稍微有点难想。。。用一个数组向量来表示当前的状态,向量可以化简比如 222其实就是000
然后如果两个向量相等,那么两个向量之间的feature是一样多的
写了一个巨慢的哈希数组跑了7秒
import java.io.*;import java.math.BigDecimal;import java.math.BigInteger;import java.util.*;class problem2{ int n,k; int arr[]; int table[][]; String hash[]; int pos[]; int result = 0; void solver() throws IOException{ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(reader.readLine()); n = Integer.valueOf(st.nextToken()); k = Integer.valueOf(st.nextToken()); arr = new int[n+1]; hash = new String[n+1]; pos = new int[n+1]; for(int i=1;i<=n;i++){ arr[i] = Integer.valueOf(reader.readLine()); } table = new int[n+1][k]; hash(table[0],0); for(int i=1;i<=n;i++){ int min = 99999; for(int j=k-1;j>=0;j--){ table[i][j]=table[i-1][j]; if((arr[i]&(1<<(k-1-j)))>0) table[i][j]+=1; if(table[i][j]<min) min = table[i][j]; } if(min>0){ for(int j=k-1;j>=0;j--) table[i][j]-=min; } int tmp = hash(table[i],i); if(tmp>result) result=tmp; } //Dumper.print_2_arr(table, n, k); System.out.println(result); } int hash(int arr[], int p){ String t = ""; for(int i=0;i<arr.length;i++){ t+=arr[i]; } int index = t.hashCode(); if(index<0) index = 0-index; index%=n; while(hash[index]!=null){ if(t.equals(hash[index])) return p-pos[index]; else if(index==hash.length-1) index=0; else index++; } hash[index]=t; pos[index]=p; return -1; }}public class Main{ public static void main (String [] args) throws Exception { problem2 p = new problem2(); p.solver(); }}
0 0
- POJ 3274 Gold Balanced Lineup
- POJ 3274 Gold Balanced Lineup
- POJ 3274 Gold Balanced Lineup
- POJ 3274 Gold Balanced Lineup
- POJ 3274 Gold Balanced Lineup
- poj 3274 Gold Balanced Lineup
- POJ 3274 Gold Balanced Lineup
- POJ 3274 Gold Balanced Lineup
- poj 3274 Gold Balanced Lineup
- poj 3274 Gold Balanced Lineup
- Gold Balanced Lineup(POJ--3274
- POJ 3274 Gold Balanced Lineup
- POJ-3274 Gold Balanced Lineup
- poj 3274 Gold Balanced Lineup
- POJ 3274 Gold Balanced Lineup
- poj 3274 Gold Balanced Lineup
- POJ-3274-Gold Balanced Lineup
- poj 3274 Gold Balanced Lineup
- JavaScript的事件代理(赞)
- 求两日期之间的相隔天数(year,month,day)
- Zipper记忆化搜索
- Algorithm Gossip: 奇数魔方阵
- iOS 图片存到沙盒
- poj 3274 Gold Balanced Lineup
- codeforces 18B Platforms
- ubuntu中文编码配置
- 安卓实现动态加载class
- sleep,wait和yield的区别
- js的沙箱模式
- VC中定时器设置
- 腾格里沙漠部分污染地被填埋 记者采访被限自由
- Container With Most Water--LeetCode