摘要:
题意:给出一个句子和要求整理后每行包含的字符数,要求将其整理为一种总badness最小的形式。设每个空格长度为n,单个空格的badness计算公式为(n-1)^2。总badness等于所有空格的badness的总和。给出整理后的格式。在badness最小的前提下,在分配一行中的空格时要让前面的空格尽量少。如果一个单词单占一行,badness为500。分析:动态规划。f[i]表示前i个单词的最小badness是多少。f[i]=f[i-j]+cost(i-j,j);。cost(a,b)表示从单词a+1到单词b的放在一行中最小badness是多少。并用from[i]存储f[i]是从哪个位置计算得来的 阅读全文
摘要:
题意:一些木棍,已知每个的长度,把他们全用上,去拼成一些长度相等的木棍,最小长度是多少。分析:dfs。先计算所有木棒的长度之和,然后枚举每个能被整除这个和的长度作为结果,并递归判断是否可行。递归过程需要加一些优化:1.先把木棍从大到小排序,大木棍的灵活性低,较难满足,因此先判断。2.在拼一个木棍时所使用的第一个小木棍如果不行,那么当前大木棍的长度可以被舍弃。#include #include using namespace std;const int maxn = 64;int t, n, stick[maxn], each, ok, total, num;b... 阅读全文