上一页 1 ··· 3 4 5 6 7 8 9 下一页
摘要: 题意:n*m矩阵,从某一点起,向上下左右四个方向走,只能走到比自身值小的格子上,问最长路径的长度。分析:从小到大考虑每一个格子,dp[i][j]=max(dp[i-1][j], dp[i+1][j], dp[i][j+1], dp[i][j-1]) + 1, 其中 a[i][j]>a[x][y]。int dx[] = {-1,0,1,0};//up Right down Leftint dy[] = {0,1,0,-1};const int M = 105;int a[M][M], d[M][M];int n, m, ans;struct node{ int x,y;}nd[M*M];i 阅读全文
posted @ 2013-05-23 20:08 心向往之 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 题意:n种物品,第i种价值num[i],数量cnt[i],要将其尽量平分成两份,问这两份的价值各是多少?分析:多重背包的题,用母函数做的。输入数据以负数结束,但我看到样例最后一行是-1,就以为是以-1结束,TLE了半天。。。const int N = 50, M = 250000;int a[2][M+1], p, q, n, sum;int num[N+1], cnt[N+1];//值和个数int main(){ #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); //freopen("out. 阅读全文
posted @ 2013-05-23 10:55 心向往之 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题意:给定整数N,将其分成若干正数的和(正数可以相同),问有多少种方案?例如N=4,有: 4 = 4; 4 = 3 + 1; 4 = 2 + 2; 4 = 2 + 1 + 1; 4 = 1 + 1 + 1 + 1; 共5种方案。分析:(1+x+x2+x3...)*(1+x2+x4+x6...)*(1+x3+x6+x9...)....const int N = 120;int a[2][N+1], p, q;int n;void init(){ a[0][0] = 1; FOE(i, 1, N){ p = 1-q; FOE(j, 0, N) if(a[q]... 阅读全文
posted @ 2013-05-22 21:57 心向往之 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 题意:给定整数N,求有多少种方案,能将其分解为若干不同正数的和?(1<=N<=1000)例如N=4,有4=4,4=3+1两种, 4=2+2, 2重复,不满足条件。 4=3+1和4=1+3算一种。分析:(1+x)*(1+x^2)*(1+x^3)……(1+x^n),x^n的系数即为答案。const int mod = 19901014;const int N = 1000;int a[2][N+5], p, q;int n;void init(){ a[0][0] = 1; FOE(i, 1, N){ p = 1-q; FOE(j, 0, N) ... 阅读全文
posted @ 2013-05-22 21:25 心向往之 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题意:给出1分 2分 5分硬币的个数,问最小的不能组合出的值是多少。const int M = 8005;int a[2][M], p, q, sum;int c[4], m[4]={0, 1, 2, 5};int main(){ #ifndef ONLINE_JUDGE //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); #endif while(scanf("%d%d%d", &c[1], &c[2] 阅读全文
posted @ 2013-05-22 17:22 心向往之 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题意:一条长为len(1<len<1,000,000,000)的河中,有n(1<n<50,000)块石头,移除m块,使具有最近距离的两块石头之间的距离最大。分析:二分,上界为len,下界为当前最近的石头的间距。对于二分的题目若求的是最大值,while(low <= high) ... if(check())... low=mid+1; else high=mid-1;若求的是最小值,while(low < high) ... if(check())... high=mid; else low=mid+1;答案均为 highconst int N = 5000 阅读全文
posted @ 2013-05-21 21:27 心向往之 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题意:在n天里,Farmer John每天花a[i]元钱,把这些天分成连续的m份,要让最大的和尽量小,求这个和。分析:a[i]最大为max,总和为sum,则答案一定在max到sum之间。二分答案ans,遍历a[],若能将a[]分成m份,每份的总和<=ans,则ans为一个可行解,若ans可行,ans-1不可行,则ans为最终答案。const int N = 100005;int a[N];int n, m, low, high;bool check(int lim){ int cnt=1, temp=0; FOR(i, 0, n){ temp += a[i]; ... 阅读全文
posted @ 2013-05-21 19:22 心向往之 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个整数n(1<n<2^31),求1~n的数与n的最大公约数之和,即∑gcd(i, n) (1<=i <=n) 。分析:枚举n的因数k,求有多少个 i ,使gcd(i,n)=k。设gcd(i,n)=k, 其中 i=ak, n=bk, 则gcd(ak, bk)=k => gcd(a,b)=1, 所以有φ(b)个 i ,使gcd(i,n)=k。答案为:∑k*φ(n/k) (k|n)#define Max 46355LL pri[Max], p, n;LL ans;bool vis[Max] ;void getPrime(LL n){//大范围内素数的线性筛法 阅读全文
posted @ 2013-05-21 16:56 心向往之 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题意:求n个点的连通图个数。n=3时,有4个连通图分析:思路一:n个点的图的总个数为 2^C(n,2),假设点1所在的连通分量里有k个点,方案数为F(k) * C(n-1,k-1),其它n-k个点自由连接,有2^C(n-k,2)种情况,所以不连通的方案数为sum( F(k) * C(n-1,k-1) * 2 ^ C(n-k,2) ) ,答案为 F(n) =2^C(n,2) -sum( F(k) * C(n-1,k-1) * 2 ^ C(n-k,2) ) (1 <= k <= n-1)。思路二:去掉点1及其所有边后,假设点2所在连通分量里有k个点 (即在除去点1,2的其它点中选k-1 阅读全文
posted @ 2013-05-19 13:28 心向往之 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个点,问组成的三角形中,有多少个三角形的面积是整数。给出公式:A=|x1y2 - y1x2 + x2y3 - y2x3 + x3y1 - y3x1|/2。分析:当S = {x1y2, y1x2, x2y3, y2x3, x3y1, y3x1}里,有偶数个奇数项时,面积为整数。考虑三个点(x1,y1) , (x2,y2) , (x3,y3)坐标的奇偶性,发现有一个点x y奇偶性不同,另外两点的x y奇偶性相同,或者一点x y奇偶性相同,另外两点(x2,y2), (x3,y3)奇偶性不同且x2与x3奇偶性不同时,S里有奇数个奇数项,即面积不为整数。用0代表偶数,1代表奇数,当三点坐标为 阅读全文
posted @ 2013-05-18 20:28 心向往之 阅读(165) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 下一页