题意:
2块矩形巧克力 如果边长可以整除2 则可以从一半出掰开 吃掉一半 如果可以整除3 则可以从1/3处掰开 吃掉1/3 问 最少吃几次 能使得2块面积相同 输出最后时刻的边长
思路:
面积最多只有10^18 因此形成的面积的种类数最多几万种 我们可以利用面积来暴搜出所有状态 然后找面积相同时的最少步数
PS:数论的方法更好
代码:
#include...
分类:
其他好文 时间:
2014-11-24 11:59:47
阅读次数:
236
A题果断写了100*100*100的暴搜,怪对数据太敏感,一看就是n^3.最后果断被hack正解:o(100*200) 枚举买的防御和攻击 血可以算出来B题果断裸暴力,方程dp[i]=min(dp[j]+1),正常人都懂得写,没优化,最后也被hack正解:用两个堆预处理dp[i]能转移的范围[l,r...
分类:
其他好文 时间:
2014-11-22 13:10:14
阅读次数:
133
Backward Digit Sums
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 4487
Accepted: 2575
Description
FJ and his cows enjoy playing a mental game. They wri...
分类:
其他好文 时间:
2014-11-11 16:33:28
阅读次数:
167
一开始第一反映是用暴搜+回溯剪枝,妥妥的超时,见numDistinct0函数。
后来想到这跟公共子串有点类似,满足最优子结构和重叠问题,因此可用DP。
状态转移方程如下:
{ dp[i-1,j-1]+dp[i-1][j] , 当s[i]==s[j],0
dp[i,j]={ dp[i-1][j], 当s[i]!=s[j] ,0
...
分类:
其他好文 时间:
2014-11-09 23:51:47
阅读次数:
256
给定一个串,分割该串,使得每个子串都是回文串。找出所有可能的组合。
方法:暴搜+回溯
class Solution {
public:
int *b,n;
vector >ans;
void dfs(int id,string &s,int len){
if(id>=n){
if(len>0){
vectorvt;
vt.push_back(s.substr(0...
分类:
其他好文 时间:
2014-11-09 11:18:19
阅读次数:
174
有人问我这个问题。
个人感觉暴搜会TLE O(n*sqrt(n))。n=100000000;(判断素数用2~sqrt(n)+1 去除)
还是枚举好了。枚举 1~10000,把他每一位存下来,回文数已知 left ,求 right ,然后组合起来。
例如 1 ,判断 11 是否素数。
例如 10 ,判断 101 是否素数, 判断 1001 是否素数。
这样复杂度就是 O(n^2)。 开始我 bool pa[100000000] 准备用标记来确定。结果MLE。
然后算了一下 总共有多少个数,最多 781 个。 ...
分类:
其他好文 时间:
2014-11-06 22:03:02
阅读次数:
172
两次dfs缩点,然后n次dfs暴搜。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 2001 6 vectorG[N],rG[N],vs,G2[N]; 7 typedef vector::iterator IT...
分类:
移动开发 时间:
2014-11-06 12:32:58
阅读次数:
151
http://acm.hdu.edu.cn/showproblem.php?pid=3699
A hard Aoshu Problem
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 62768/32768 K (Java/Others)
Total Submission(s): 968 Accepted Subm...
分类:
其他好文 时间:
2014-11-04 00:12:56
阅读次数:
248
移动一块连续的区间使得数列递增。问最少次数。直接IDA*暴搜,只是我没有想到A*函数,所以就随手写了个连续递增块数作为估价函数,WA了,然后除以2,还是WA,除以3,WA,除以4.。。过了= =#include#include#include#include#include#includeusing...
分类:
其他好文 时间:
2014-10-31 17:15:14
阅读次数:
212