上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 30 下一页
摘要: 题意:村子里有n个人,给出父亲和儿子的关系,有多少种方式可以把他们排成一列,使得没人会排在他父亲的前面思路:设f[i]表示以i为根的子树有f[i]种排法,节点i的各个子树的根节点,即它的儿子为c1,c2,c3...ck。 那么先给节点i的子树确定各自的顺序,为f(c1),f(c2)...f(ck)。 然后把每棵子树的所有节点看成同一元素,根据有重复元素的全排列方式共有s(i-1)!/(s(c1)!*s(c2)!*...*s(ck)!) 再根据乘法原理,f[i]=f(c1)* f(c2) *f(c3) * f(c4).....* f(ck) * (s(i) - 1)! / ((... 阅读全文
posted @ 2013-11-05 09:52 辰曦~文若 阅读(763) 评论(0) 推荐(0)
摘要: 本文转载,出处:http://www.cnblogs.com/Findxiaoxun/articles/3398075.html很巧妙的01背包升级。看完题目以后很明显有背包的感觉,然后就往背包上靠。把s看成是空间,f看成是价值,转换成了01背包经典模型(没有想到,,,)。可,s是负值,这就涉及到一个问题,如果按照普通的01背包,(01背包的倒序原因请参看这个http://hi.baidu.com/findxiaoxun/item/9abf560127a155c091571868)for(int i=0;i=vi[i];v--) dp[v]=max{dp[v],dp[v-vi[i... 阅读全文
posted @ 2013-11-01 15:35 辰曦~文若 阅读(311) 评论(0) 推荐(0)
摘要: 自己写的代码:#include #include #include /*题意:相当于在一个m*n的矩形网格里放k个相同的石子,问有多少种方法? 限制条件:每个格子最多放一个石子,所有石子都要用完,并且第一行、最后一行、第一列、最后一列都得有石子。思路: 直接求的话会比较麻烦,反过来想: 设总方案数为S,A={第一行没有石子},B={最后一行没有石子},C={第一列没有石子},D={最后一列没有石子} 利用容斥原理,先求|A并B并C并D|,然后再用|s|-|A并B并C并D|,即为答案。 而对于有r行,t列,摆放k个石子的方案数为C(r*t,k)。*/using ... 阅读全文
posted @ 2013-10-31 13:57 辰曦~文若 阅读(303) 评论(0) 推荐(0)
摘要: #include #include #include /*题意:棋盘n*m,问你有多少种放置两个相互攻击的皇后先比较m和n值,若m>n,两者交换一下,即保证mn) swap(n,m);//printf("%lld %lld\n",n,m); long long ans; ans=n*m*(n+m-2)+4*((m-1)*n*m-m*(m-1)/2*n-m*(m-1)/2*m+(m-1)*m*(2*m-1)/6); printf("%lld\n",ans); } return 0;} 阅读全文
posted @ 2013-10-30 09:28 辰曦~文若 阅读(200) 评论(0) 推荐(0)
摘要: 题目不说了,可以用线段树或者单调队列,下面附上代码。线段树:#include #include #include /*AC线段树每个节点存储对应区间的最大值、最小值,然后直接查询即可。6594MS。*/using namespace std;const int maxn=1000005;const int INF=0x3f3f3f3f;int minans[maxn],maxans[maxn];int small,bigger;int n,k;struct Node{ int maxv,minv;}tree[maxn>1; build(rt>1; if(rmid) ... 阅读全文
posted @ 2013-10-29 22:06 辰曦~文若 阅读(219) 评论(0) 推荐(0)
摘要: 题目:给出n,求gcd(1,2)+gcd(1,3)+gcd(2,3)+gcd(1,4)+gcd(2,4)+gcd(3,4)+...+gcd(1,n)+gcd(2,n)+...+gcd(n-1,n) 此题和UVA 11426 一样,不过n的范围只有20000,但是最多有20000组数据。 当初我直接照搬UVA11426,结果超时,因为没有预处理所有的结果(那题n最多4000005,但最多只有100组数据),该题数据太多了额。。。思路:令sum(n)=gcd(1,n)+gcd(2,n)+...+gcd(n-1,n),则所求结果ans(n)=sum(2)+sum(3)+...+sum(n) 只需求. 阅读全文
posted @ 2013-10-29 09:32 辰曦~文若 阅读(586) 评论(0) 推荐(0)
摘要: 网上还有用unique函数和lowerbound函数离散的方法,可以百度搜下题解就有。这里给出介绍unique函数的链接:http://www.cnblogs.com/zhangshu/archive/2011/07/23/2115090.html#include #include #include #include #include /*题意:给出一条直线上的矩形左右坐标和高度,求所有矩形并的面积。思路:这里处理没有跟以前的线段树一样,这里每个叶子节点代表的是区间[a,a+1),而不像以前的代表一个点(a,a);需要建立基本单位为线段的线段树,建法与以点为单位的线段树就一点点不同,具体见代码 阅读全文
posted @ 2013-10-27 21:21 辰曦~文若 阅读(317) 评论(0) 推荐(0)
摘要: 做这题建议看一下该题的discuss。#include #include #include #include #include /*题意:给出n张海报的左端点和右端点,按顺序往墙上贴。问最后整张墙能看到几张海报。注意:按题意是如此够造树的,即每个点其实是一小块段。|___|___|___|___|___|___|___|___| 1 2 3 4 5 6 7 8思路:相当于染色问题,这里我每个节点有个color值。 color值有三种情况:1.0表示该区间为染色;2.-1表示该区间含有多种颜色;3.正整数表示该区间全是一种颜色 每次更新(即第i次“涂色”... 阅读全文
posted @ 2013-10-26 13:56 辰曦~文若 阅读(375) 评论(0) 推荐(0)
摘要: 题意: 有一个n*n的矩阵,初始化全部为0。有2中操作; 1、给一个子矩阵,将这个子矩阵里面所有的0变成1,1变成0;2、询问某点的值方法一:二维线段树参考链接:http://blog.csdn.net/xiamiwage/article/details/8030273思路: 二维线段树,一维线段树... 阅读全文
posted @ 2013-10-25 23:44 辰曦~文若 阅读(987) 评论(0) 推荐(0)
摘要: 题意:给出n,np,nc,m,n为节点数,np为发电站数,nc为用电厂数,m为边的个数。 接下来给出m个数据(u,v)z,表示w(u,v)允许传输的最大电力为z;np个数据(u)z,表示发电站的序号,以及最大的发电量; nc个数据(u)z,表示用电厂的序号,以及最大的用电量。 最后让你求可以供整个网络使用的最大电力。思路:纯模板题。 这里主要是设一个源点s和一个汇点t,s与所有发电厂相连,边的最大容量为对应发电厂的最大发电量; t与所有用电厂相连,边的最大容量为对应用电厂的最大用电量。 因为节点编号0~n-1,所以这里s设为n,t设为n+1。 接着求最大流即可。#include #includ 阅读全文
posted @ 2013-10-24 22:16 辰曦~文若 阅读(297) 评论(0) 推荐(0)
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 30 下一页