上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 21 下一页
摘要: 这题数据量相对比较小,可以暴力打表解决。不过我这里用数位dp 刚开始学数位dp,参考了别人的代码。//2013-06-27-15.30#include #include int dp[7][3];//dp[i][0] 表示不存在不吉利的数字//dp[i][1] 表示不存在不吉利的数字,且最高位是2//dp[i][2] 表示存在不吉利的数字int bit[10];void init(){ dp[0][0] = 1; for (int i = 1; i 4) //高位可能出现4的情况 ans += dp[i-1][0]; if (!flag &... 阅读全文
posted @ 2013-06-27 15:42 xindoo 阅读(166) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1664 这题可以用递归的方式做,想给第一个盘子里放上苹果从(0到m),然后给第二个放上,为了保证每次产生的放法是不同的,第二个里面放置的苹果不能从0开始,否则就会产生相同的放法,然后同理第三第四个盘子。。。。 还有一个问题,可能放到最后一个盘子了,还有很多苹果没有放,怎么办?? 都放最后一个里面?? 其实不是,这样的话可能和前面某种情况出发,所以在放置的过程中就要保证不能产生这种情况,(y/(n-x) >= i)这行代码就保证了,因为盘子里面的苹果数是非递减的,剩余i个盘子,只要剩余的苹果数除以剩余的盘子数不小于当前盘子的苹果数,就可 阅读全文
posted @ 2013-06-27 14:49 xindoo 阅读(202) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1050 我们已经知道求最大子段和的dp算法 参考 here 也可参考编程之美有关最大子矩阵和部分。 然后将这个扩大到二维就是这道题。顺便说一下,有时候不要把问题想复杂了,有些问题只能靠暴力求解,而这道题是暴力加算法。 在这个题中,我们可以把二维压缩到一维然后求解最大子段。我们先枚举所求矩阵的起点行和结束行,然后把每一列的数据之和求出,用这些数据和就构造出一个一维的数组(代码中我没有明确表示出这个数组),然后用最大子段和的dp算法求解。 关于二维压缩到一维的过程,适当处理可以大大减小时间复杂度。 最终时间复杂度是O(n^3);... 阅读全文
posted @ 2013-06-26 10:33 xindoo 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 题目链接 大概题意是有n个男的n个女的(原谅我这么说,我是粗人),给你一个n*n的矩阵,第i行第j列表示第i个女(男)对第j个男(女)的好感度,然后要安排n对相亲,保证都是正常的(无搞基百合之类的),然后求怎么安排能使好感度和最大,求出最大值。 开始试了纯暴力的方法,时间复杂度是n!果断超时#include #include #include using namespace std;int vis[17];int n, ans, sum;int map[19][19];void dfs(int x){ if (x == n+1) { ans = max(ans, ... 阅读全文
posted @ 2013-06-25 22:15 xindoo 阅读(212) 评论(0) 推荐(0) 编辑
摘要: A. Perfect Pairtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputLet us call a pair of integer numbersm-perfect, if at least one number in the pair is greater than or equal tom. Thus, the pairs (3, 3) and (0, 2) are 2-perfect while the pair (-1, 1) 阅读全文
posted @ 2013-06-22 16:46 xindoo 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 给你n个数,让你找出其中最大的K个数。解法1:很多人上来就对其进行排序,选用不同的排序方法有不同的时间复杂度,这里我们假设使用了最快的快排,时间复杂度为O(n*logn)。通过排序我摘出前K大的数。但也许快排不是最优的,我们只找最大的K个数,何必要对所有的数进行排序,我们只需要进行局部排序即可,时间复杂度大概是O(N*K)。但快排和局部排序谁优谁劣是并不是一定的,当K大于某个数值时快排的优势就显现出来了,大概是logn吧。解法2:这个方法是基于快排的,但不是完整的快排。回忆一下快排,在每一步中,都是将带排数据分成两部分,其中一部分中的任何一个都比另一部分中的任何都大,然后递归排序。在这里,我们 阅读全文
posted @ 2013-06-19 22:18 xindoo 阅读(321) 评论(0) 推荐(0) 编辑
摘要: A.Even Odds 给你n和k, 把从1到n先排奇数后排偶数排成一个新的序列,输出第k个位置的数。比如 10 3 拍好后就是 1 3 5 7 9 2 4 6 8 10 第3个数是5。//cf 318 A//2013-06-18-20.30#include using namespace std;int main(){ __int64 n, k; while (cin >> n >> k) { if (k #include #include using namespace std;const int maxn = 1000006;char str[maxn]... 阅读全文
posted @ 2013-06-18 21:13 xindoo 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 地址B. Sereja and Arraytime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputSereja has got an array, consisting ofnintegers,a1, a2, ..., an. Sereja is an active boy, so he is now going to completemoperations. Each operation will have one of the three for 阅读全文
posted @ 2013-06-13 20:11 xindoo 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 虽然结果比我们预期的好一些,拿了银牌(本来感觉只能拿铜牌),但感觉还是很弱。 我们只A了三个最水的题目。 开始确实有些失策,晨晨看了第一题(给出等边三角形的两个点,计算第三个点),一道简单的计算几何,然后他就敲,40分钟还没搞定,我们没有考虑到我们有个计算几何的大牛成成博客,失策,他虽然敲代码的速度很慢,但效率极高,一上来就替我们A掉了第一题。感觉因为这个我们要浪费30多分钟。 然后晨晨很快又A掉一题,两个一A,我们的名次排在银牌的前列。 由于后来一直没出题rank一直掉,到封榜前掉到银牌的倒数第二。 后来我尝试做了C题,一看就是一道快速幂取模的题,成成替我写了快速幂... 阅读全文
posted @ 2013-06-13 19:38 xindoo 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题目链接题目大意是有一个含n个数的数组,你可以通过+1或者-1的操作使得其中的数是1--n中的数,且没有重复的数。既然是这样的题意,那么我就应该把原数组中的数尽量往他最接近1--n中的位置放,然后求差绝对值之和,但有多个数,怎么使他们和最小,这样就要对其进行排序了,直接按大小给它们安排好位置,然后计算。//CF 285C//2013-06-06-19.57#include #include #include using namespace std;const int maxn = 3*100001;int a[maxn];int main(){ int n; while (scan... 阅读全文
posted @ 2013-06-06 20:05 xindoo 阅读(196) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 21 下一页