HDU5914枚举
来源:互联网 发布:编程界面matlab 编辑:程序博客网 时间:2024/05/16 04:34
题意:给出长为1,2,...n的木棍,求最少移出多少条木棍,使得余下的木棍不能构成三角形(余下的木棍中取3条)
暴力枚举+打表
import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.ArrayList;import java.util.List;import java.util.Scanner;import java.util.StringTokenizer;public class Main { public static void main(String[] args) { new Task().solve(); ; }}class Task{ Scanner in = new Scanner(new BufferedInputStream(System.in)) ;PrintWriter out = new PrintWriter(System.out) ;static int[] dp = new int[21] ;static{dp[1]=0;dp[2]=0;dp[3]=0;dp[4]=1;dp[5]=1;dp[6]=2;dp[7]=3;dp[8]=3;dp[9]=4;dp[10]=5;dp[11]=6;dp[12]=7;dp[13]=7;dp[14]=8;dp[15]=9;dp[16]=10;dp[17]=11;dp[18]=12;dp[19]=13;dp[20]=14;}void solve(){int t = in.nextInt() ;for(int ca = 1 ; ca <= t ; ca++){out.println("Case #" + ca + ": " +dp[in.nextInt()]) ;}out.flush() ; }int calc(int n){int res = n ;int limit = 1<<n ;List<Integer> len = new ArrayList<Integer>() ;for(int i = 0 ; i < limit ; i++){int remove = 0 ;len.clear() ; for(int j = 0 ; j < n ; j++){if((i & (1<<j)) > 0){remove++ ;}else len.add(j+1) ;}if(! can(len)) res = Math.min(res , remove) ;}return res ;}boolean can(List<Integer> len){int m = len.size() ;for(int a = 0 ; a < m ; a++){for(int b = a+1 ; b < m ; b++){for(int c = b+1 ; c < m ; c++){if(can(len.get(a) , len.get(b) , len.get(c))) return true; }}}return false ; }boolean can(int a , int b , int c){return (a + b > c) && (Math.abs(a - b) < c)||(a + c > b) && (Math.abs(a - c) < b)||(b + c > a) && (Math.abs(b - c) < a) ;}} class InputReader { public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream) { reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = new StringTokenizer(""); } private void eat(String s) { tokenizer = new StringTokenizer(s); } public String nextLine() { try { return reader.readLine(); } catch (Exception e) { return null; } } public boolean hasNext() { while (!tokenizer.hasMoreTokens()) { String s = nextLine(); if (s == null) return false; eat(s); } return true; } public String next() { hasNext(); return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public long nextLong() { return Long.parseLong(next()); } public double nextDouble() { return Double.parseDouble(next()); } public BigInteger nextBigInteger() { return new BigInteger(next()); } }
0 0
- HDU5914枚举
- HDU5914
- hdu5914 构造
- HDU5914-Triangle
- hdu5914&hdu5912
- HDU5914 Triangle
- hdu5914 Triangle
- HDU5914 Triangle (找规律)
- hdu5914 Triangle(思路)
- HDU5914 Harmonic Value Description
- hdu5914 Triangle 【贪心】
- HDU5914 Triangle(思路)
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- java代理
- 【.Net码农】 Linq 左连接 left join
- [LeetCode]--59. Spiral Matrix II
- 解引用
- Firebird数据库与VS05软件的搭建
- HDU5914枚举
- python矩阵运算
- ssh概述
- PIC单片机入门_框架与存储器
- VLC编译
- 伟大的作曲家(用心灵谱写的伟大音乐)
- 矩阵对角线元素求和
- mysql使用,常用方法及大致流程
- web项目的资源路径