摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074方法:设一个数num,科目的数量为n,则将num表示成带有前导0的n位二进制数(num肯定不能超范围),在该二进制数的数位中,从左到有第i个数位是1代表第i门课的作业完成,0代笔没有,如n=4,num=6=0110代表第2和3门的作业完成,设置状态转移方程,设F(num,k).Ans为 当完成k门课程,完成的科目是num对应的作业完成情况,这一状态下超期的最少天数。F(num,k).Beyond为 当完成k门课程,完成的科目是num对应的作业完成情况,这一状态已经超期的天数,F(num,k). 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4513方法:模拟,定义数组counts[i]记录当第i个元素必须以一个序列最后一个元素的身份选择出来,该序列的长度是多大,使用countsEqual[i]表示第i元素直接前面包括自己有多少个连续的数字的值等于它自己。如对于数据: index: 1 2 34 5 6 7 8 9 10 11 12 value: 1 11 12 21 25 25 25 252112 12 12counts[i]: 1 1 1 1 1 2 3 4 6 82 3countsEqual[i]:11 1 1 1 2... 阅读全文
摘要:
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4512方法:F(a,b)为在a,b段间能获得找出的最多人数,则原问题的解为:F(1,n)=Max({F'(i,n)| 1=#include #include #include using namespace std;int nums[201];int dp[202][202];int n;int found(int x,int st,int ed=n){ if(dp[st][ed]!=-1) return dp[st][ed]; if(st==ed) return 1; int newEn. 阅读全文