Timus 1410. Crack

来源:互联网 发布:网络办公管理v3.1系统 编辑:程序博客网 时间:2024/06/07 17:08
import java.io.*;import java.math.BigInteger;import java.util.*;public class Main {    public static void main (String [] args) throws Exception {        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));        ArrayList<String> arr = new ArrayList<String>();        String tmp="";        String c;        while((c = reader.readLine())!=null){            for(int i=0;i<c.length();i++){                char temp = c.charAt(i);                if((temp>='a'&&temp<='z')||(temp>='A'&&temp<='Z')){                    tmp+=temp;                }else{                    if(tmp.length()!=0){                        arr.add(tmp);                        tmp="";                    }                }            }            if(tmp.length()!=0){                arr.add(tmp);                tmp="";            }        }        if(tmp.length()!=0) arr.add(tmp);        if(arr.isEmpty()){            System.out.println(0);            return;        }        int dp[][] = new int[arr.size()][2];        dp[0][1] = arr.get(0).length();        for(int i=1;i<arr.size();i++){            dp[i][1] = arr.get(i).length()+dp[i-1][0];            dp[i][0] = Math.max(dp[i-1][1], dp[i-1][0]);        }        System.out.println(Math.max(dp[arr.size()-1][0], dp[arr.size()-1][1]));    }}

这题真是蛋碎,题目看不懂导致我直接搜题意.

题意是给你一个句子,然后相邻的两个单词不能同时选,问你如何选可以使拿到的单词总长度最长

每个单词无非选或不选,和那个1039的树形DP是一样的方程,而且解空间更简单,一维就行了。


蛋碎的是如何划分单词。

123321这个不是单词,结果输出0

abc

abc

这样输入是两个单词,换行符是他们的词分割符

结果应该是3.

各种RE,WA. 

这题难度明显不如1039,题目也看不明白,无趣,不想说什么了。


0 0
原创粉丝点击