普及练习场 更要技巧的动规与记忆化 乌龟棋
2018-01-15 16:10
232 查看
题目链接
题意理解
代码中dp[i][j][k][l] 表示使用了i张1,j张2,k张3,l张4能走到的最大数。代码
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int N, M; static int maxn = 400; static int[] cnt = new int[5]; static int[] a = new int[maxn]; static int maxm = 50; static int[][][][] dp = new int[maxm][maxm][maxm][maxm]; public static void main(String[] args) { FastScanner fs = new FastScanner(); N = fs.nextInt(); M = fs.nextInt(); for(int i = 1; i <= N; i++) { a[i] = fs.nextInt(); } for(int i = 0; i < M; i++) { int x = fs.nextInt(); cnt[x]++; } for(int i = 0; i <= cnt[1]; i++) { for(int j = 0; j <= cnt[2]; j++) { for(int k = 0; k <= cnt[3]; k++) { for(int l = 0; l <= cnt[4]; l++) { dp[i][j][k][l] = mmax( dp[Math.max(i-1, 0)][j][k][l], dp[i][Math.max(j-1, 0)][k][l], dp[i][j][Math.max(k-1, 0)][l], dp[i][j][k][Math.max(l-1, 0)]) + a[1 + i * 1 + j * 2 + k * 3 + l * 4]; } } } } System.out.println(dp[cnt[1]][cnt[2]][cnt[3]][cnt[4]]); } public static int mmax(int a, int b, int c, int d) { int t1 = Math.max(a, b); int t2 = Math.max(t1, c); int t3 = Math.max(t2, d); return t3; } public static class FastScanner { private BufferedReader br; private StringTokenizer st; public FastScanner() { br = new BufferedReader(new InputStreamReader(System.in)); } public String nextToken() { while(st == null || !st.hasMoreElements()) { try { st = new StringTokenizer(br.readLine()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return st.nextToken(); } public int nextInt() { return Integer.valueOf(nextToken()); } } }
相关文章推荐
- 普及练习场 更要技巧的动规与记忆化 统计单词个数
- 普及练习场 带有技巧的搜索 靶形数独
- 普及练习场 带有技巧的搜索 滑雪
- 普及练习场 带有技巧的搜索 吃奶酪
- 普及练习场 带有技巧的搜索 数字三角形
- 普及练习场之交叉模拟
- 普及练习场之排序Ex
- 普及练习场 交叉模拟 乒乓球
- 普及练习场 排序 明明的随机数
- 普及练习场 字符串处理 斯诺登的密码
- 普及练习场 字符串处理 潜伏者
- 普及练习场 深度优先搜索 八皇后
- 普及练习场 动态规划的背包问题 小A点菜
- 普及练习场 深度优先搜索 迷宫
- 普及练习场之排序
- 普及练习场 交叉模拟 税收与补贴问题
- 普及练习场 交叉模拟 花生采摘
- 普及练习场 广度优先搜索 马的遍历
- 普及练习场 分治算法 取余运算与快速幂
- 普及练习场 动态规划的背包问题 金明的预算方案