很明显可以转化为反素数的题目。由于有n种不同的方式,所以,数的约数可以为2*n或者2*n-1#include #include #include #define LL __int64using namespace std;LL p[16]={2,3,5,7,11,13,17,19,23,29,31,...
分类:
其他好文 时间:
2014-09-06 21:13:13
阅读次数:
298
转自魏神:
题目大意就 给定n个二元组(a,b),扔掉k个二元组,使得剩下的a元素之和与b元素之和的比率最大
题目求的是 max(∑a[i] * x[i] / (b[i] * x[i]))
其中a,b都是一一对应的。 x[i]取0,1 并且 ∑x[i] = n - k;
那么可以转化一下。 令r = ∑a[i] * x[i] / (b[i] * x[i]) 则必然...
分类:
其他好文 时间:
2014-09-04 17:08:09
阅读次数:
220
题目:uva10067 Playing with Wheels
题意:给出一个机器,有四个循环的轮子,见图,然后给出一个初始数和目标数,然后期间不能出现的数字,没一分钟可以拨动一个数,问你最短需要的时间。
分析:这个题目可以转化为求图的最短路。
因为有对于一个当前状态,有8种可以转化为的状态,那么我们可以把每一种状态转化为一个点,然后状态之间连长度 1 的边,然后求...
分类:
其他好文 时间:
2014-09-03 19:55:07
阅读次数:
199
初识算法 什么是算法?书上是这么说的:所谓算法就是定义良好的计算过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出。亦即,算法就是一系列的计算步骤,用来将输入数据转换成输出数据。 我的理解:任何问题都可以转化成数学模型,算法就是将转化的数学模型求解的过程。 算法有好有坏,它的评判标准...
分类:
其他好文 时间:
2014-08-31 17:09:11
阅读次数:
224
题意:
给你半个矩阵 如果(i,j)的位置是'-' 则说明sum[i...j]0 如果是'0' 说明sum=0 给出一种满足这个矩阵的序列 序列元素绝对值在10以内
思路:
很容易想到的是将sum[i...j]转化为sum[j]-sum[i-1] 即用前缀和来表示 那么题中的矩阵就可以转化成前缀和之间的大小比较 也就是说 我们可以通过将前缀和当成点 将大小关系作为边...
分类:
其他好文 时间:
2014-08-29 20:07:28
阅读次数:
236
题目链接:uva 1492 - Adding New Machine
题目大意:在一个R?C矩阵上有N台旧的机器,给定每个机器的占地,现在要添加一台1?M的机器,问有多少种摆放方法。
解题思路:问题可以转化成矩形覆盖问题,对于每台旧的机器,假设考虑对应每个位置向右放,那么左边的M-1个位置是不能放的,以及右边界左边的M-1个位置。用线段树解决矩形覆盖,x,y坐标分别处理一次。注意M=1...
分类:
其他好文 时间:
2014-08-27 18:47:18
阅读次数:
274
题目大意:给你两个数字n和k,然后给你两个矩阵a是n*k的和b是k*n的,矩阵c = a*b,让你求c^(n*n)。
直接求的话c是n*n的矩阵所以是1000*1000,会超时的啊。
可以转化一下:(a*b)^(n-1) = a*b*(a*b)^(n*n-1)。a*b可以得到一个k*k的矩阵,k很小所以不会超时,快速幂一下就可以了啊。
Fast Matrix Calculation...
分类:
其他好文 时间:
2014-08-27 11:03:47
阅读次数:
246
http://acm.timus.ru/problem.aspx?space=1&num=1635
给出一个字符串,将这个字符串分成尽量少的回文串。
起初没有思路,想着应该先预处理出所有的回文串,然后进行dp。但是字符串的长度是4000,O(n^3)肯定不行,其实可以转化为O(n^2),就是枚举中点而不是枚举起点和终点,又NC了吧。
然后就是线性的dp了。dp[i]表示到第i...
分类:
其他好文 时间:
2014-08-26 17:31:46
阅读次数:
218
1. 如果是有parent指针的树,可以转化成 求两个链表第一个公共节点的问题。对于无parent指针普通二叉树(假定这两个节点一定在树中,否则需要先遍历一边树查找是否存在该节点) 1. (剑指offer的解法),先用一定的空间记录从根节点到两个节点各自的路径,然后找这两个路径最后一个相交的节点。....
分类:
其他好文 时间:
2014-08-21 01:29:33
阅读次数:
217
题目链接
题意:给出一个式子,但这个式子不一定是等式,在‘+’,‘-’符号位置不变的情况下,重新排列数字的位置,使其成为等式,如果可以的话,输出其中一种排列方式。
思路:我们将等号右边的数全部移动到等号右边,例如a+b-c=d-e,移动后变成a+b+e-(c+d)=0,也就是a+b+e=c+d,所以当式子可以变化成等式时,所有数的和必然是偶数。那么问题可以转化为在n个数中找...
分类:
其他好文 时间:
2014-08-15 17:52:49
阅读次数:
220