摘要:
https://vjudge.net/contest/297216?tdsourcetag=s_pctim_aiomsg#problem/K 3(物品组数) 3(时间) f[i,j]表示完成了前i件任务,背包容量为j时所能达到的最大价值。f[i-1,j-cost]+val;2 1 最多选一件 2 5 阅读全文
摘要:
https://vjudge.net/contest/297216?tdsourcetag=s_pctim_aiomsg#problem/J 阅读全文
摘要:
https://vjudge.net/contest/297216?tdsourcetag=s_pctim_aiomsg#problem/D 阅读全文
摘要:
https://vjudge.net/contest/297216?tdsourcetag=s_pctim_aiomsg#problem/E 阅读全文
摘要:
难受啊!!越做题是越感觉菜,这个又被几个坑给卡住了(只有我这个学渣才会卡) 坑点:1.考虑n是否已包含49,有的话还要再+1. 2, 注意从最高开始考虑时,再判断时要考虑它本身为0的情况,.比如n=5701,在考虑最高位时,其实是在考虑0~5000所能组成的含49的数的个数,这个是包含f[i][2] 阅读全文
摘要:
http://poj.org/problem?id=3208 一个魔鬼数为包含连续三个666的的数字,给个n(n<5e7)求第n个魔鬼数。 预处理f[i][j],f[i][3]表示由前i位数字构成所有可能的魔鬼数,需要注意这里允许前导0存在。 f[i][2]表示由i位数字构成的开头为2个6的非魔鬼数 阅读全文
摘要:
程序设计:人以群分 思路:二分答案区间,难点在判断上,因为是要求最小值,所以为了得到最优解,我们要先将a数组排序,这样我们从中选择连续的一段一段作为一组这样得到的最小差值才是我们的最优解。我们思路上这样理解:我们从左往右进行分组,设pos=i表示[1~i]的人可以进行分组,开始先判断第一个区间,第一 阅读全文
摘要:
题目地址 题目大意:给你一个n*m的矩形,在这个矩形内告诉你p个矩形(左下角和右上角坐标),问你q个问题,每次也是给你一个矩形(左下角和右上角坐标),问你每个矩形是否可以被开始给的p个矩形完全覆盖。 思路:n*m范围是1e7,无法开二维数组,二维坐标可以转化为(n-1)*m+m,用一维数组来记录每个 阅读全文
摘要:
LCS最长公共子序列 for(int i=1; ia[j]) f[i]=max(f[i],f[j]+1); ans=max(ans,f[i]); } // 例题:LCIS,O(N^3) for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) if (a[... 阅读全文
摘要:
做法:依次从1到n枚举每个点,计算以每个点作为中心也就是最高点,从左走找最长下降序列,从右边找最长下降序列,求和,找一个和的最大值-1就是最多安排的人数,n-这个最大值就是答案。 阅读全文
摘要:
题目传送门 题目类似01背包,但存在一个选取先后不同价值会有损耗,所有对物品按易损耗的程度从大到小排个序来顺序选取。 阅读全文
摘要:
第一发又超时了。。。 题目大意:给你n个点,然后给你n-1的数,表示两两距离,然后让你输出n个答案,第i个答案表示从这n个点里面挑i个点,然后这i个点两两之间会有一个距离,答案要求这些距离和的最大值。 第一次思路:n个点,给你距离,我们可以得到在坐标轴上表示n个点的坐标,然后我们可以先设每个点坐标为 阅读全文
摘要:
这个题真的难了我一天了,这种方法一开始没想出来,后来看了题解后明白了大致思路开始自己做但是!!!但是自己实现的时候老是一些细节出错!!!,调bug调了得有一个小时,蠢死了,这道题我一定要好好总结,总结为什么会卡壳,这要是比赛的签到题的话我得哭死!!!!! 读题之后我的最直接的思路是把这n个数,去重排 阅读全文
摘要:
题目大意:给你一个n,然后从1~n隔一个选一个,挑出一个集合然后从集合中继续隔一个挑一个,直到只有一个数,问最后一个数是多少?2<=n<=1050 例如n=5,先选出2,4最后选择4。n=12,先选出2,4,6,8,10,12,再选出4,8,12在选出8。 可以发现这个数字一定是偶数,并且是比n小中 阅读全文