上一页 1 2 3 4 5 6 7 ··· 9 下一页
摘要: 题意:计算机中有一些固定大小的内存,内存越大,处理速度越快。对于一个程序,加入不同的内存空间,处理所需时间不同。现给出m个内存空间,n个程序,对于每个程序程序,有k组数据(s,t),分别表示当程序 i 在某个内存环境s下对应的运行时间t。当有一个内存空间为si,一个程序的2组数据a,b,满足as最大内存空间)分析: 很复杂的题意,直观感觉就是所求的量很多,而且并非直接求最小值,是要具体的把方案求解出来。想到这里应该能确定用图论解决。进一步的,要用什么来处理,排除法也能想到匹配(其实我在刷图论专题= =)。 确定了算法,就明确了方向,一侧必然是n个程序。那么另一侧应该是什么呢?我们求的是平均.. 阅读全文
posted @ 2013-08-31 21:41 Thousand Sunny 阅读(665) 评论(0) 推荐(0) 编辑
摘要: 终于找到了T^Thttp://code.google.com/p/aoapc-book/ 阅读全文
posted @ 2013-08-31 19:13 Thousand Sunny 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 事实再一次证明:本小菜在计算几何上就是个渣= =题意:平面上n个点(n 2 #include 3 #include 4 #include 5 #define rep(i,a,b) for(int i=a;i<=b;i++) 6 using namespace std; 7 8 const int MAXN=333; 9 const double eps=1e-10;10 11 struct Point{12 double x,y;13 Point(double _x=0,double _y=0):x(_x),y(_y){}14 }p[MAXN];15 16 typedef P... 阅读全文
posted @ 2013-08-31 17:38 Thousand Sunny 阅读(1029) 评论(0) 推荐(0) 编辑
摘要: 题意:固定起点是0,给出一个序列表示n个点,所有点都在一条直线上,其中每个元素代表了从起点到这个点所走的距离。已知路过某个点不算到达这个点,则从起点出发,到达所有点的方案有许多种。求所有方案走的总路程/方案数,输出分子、分母,要求不含约数。e.g:n=3 {2,3,5},{2,3,5}{2,5,3}{3,2,5}{3,5,2}{5,2,3}{5,3,2},总路程(5+7+7+8+9+8)=44,答案44/6=22/3,输出“22 3”。分析:1、以n=3序列{a1,a2,a3}为例,实际上是{0,a1,a2,a3},起点确定,总共有n!中方案。2、经过简单的思考就可以发现,每种方案的第一步比较 阅读全文
posted @ 2013-08-31 14:16 Thousand Sunny 阅读(590) 评论(0) 推荐(0) 编辑
摘要: 题意:输入a,b,x,y,a,b分别是两人的步数(每a块砖,刷一次),则有一些砖被两人同时刷到了,问[x,y]区间内有多少块砖同时被两人刷到。分析:就是求[x,y]中有多少个能把a,b的最小公倍数lcm=a*b/gcd(a,b)整除的数字。求出[x,y]区间上出现的第一个和最后一个满足条件的数字 l,r ,那么答案就是(r-l)/lcm+1。 1 #include 2 #include 3 4 int gcd(int a,int b) 5 { 6 if (b == 0) return a; 7 return gcd(b,a%b); 8 } 9 10 int main()11 ... 阅读全文
posted @ 2013-08-31 11:55 Thousand Sunny 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 题意:每个蚁群有自己的食物源(苹果树),已知蚂蚁靠气味辨别行进方向,所以蚁群之间的行动轨迹不能重叠。现在给出坐标系中n个蚁群和n棵果树的坐标,两两配对,实现以上要求。输出的第 i 行表示第 i 个蚁群应该去哪棵果树。(已知2*n个点互不重合)容易想到二分完美匹配,但究竟以什么为权值?需要利用一个关系:两条线段如果相交,那么线段长度之和必然大于其四个点不相交的连法对应的线段长度之和。(利用三角不等式可以证明)。如此,求出每个蚁群到每棵果树的曼哈顿距离,只要保证每条匹配边的长度最短,即长度之和最小,就可以得到不重叠的方案。注意: 1、通常意义上,二分图完美匹配求的是权值和最大的方案(初始的可行顶. 阅读全文
posted @ 2013-08-30 15:56 Thousand Sunny 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 题意:N台机器,M条有向边,总资金C,现要到搭建一个以0号机(服务器)为跟的网路,已知每条网线可以把数据从u传递到v,其带宽为d,花费为c,且d越大,传输速度越快,问能够搭建的传输速度最快的网络d值是多少?(即:在C的支持下,网络中d的最小值最大是多少?)一开始把问题想简单了,以为网线可以随便接,其实是确定了u->v的= =最小树形图,概念蛮好理解的,要学习的话理论:http://hi.baidu.com/bin183/item/5d93ef69ceb541176895e682代码标注的很详细:http://blog.csdn.net/hehedounima/article/detail 阅读全文
posted @ 2013-08-27 15:03 Thousand Sunny 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 题意:问图上任意两点(u,v)之间的路径上,所经过的最大边权最小为多少?求最小瓶颈路,既是求最小生成树。因为要处理多组询问,所以需要用倍增加速。先处理出最小生成树,prim的时间复杂度为O(n*n),kruskal为O(mlogm)。前者适合处理稠密图,后者适合处理稀疏图。这里的倍增处理是值得记住的,在树上做多组询问;亦或是,将无向图缩点在询问,都是可以这样加速的。注意:边权 2 #include 3 #include 4 #include 5 #include 6 #define clr(a,m) memset(a,m,sizeof(a)) 7 #define rep(i,a,b... 阅读全文
posted @ 2013-08-25 12:57 Thousand Sunny 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 题意:对于已知的网络构建道路,使城市两两之间能够互相到达。其中一条道路是可以免费修建的,问需要修建的总长度B与免费修建的道路所连接的两城市的人口之和A的比值A/B最大是多少。因为是求A/B的最大值,自然A越大,B越小越好。B的最小值是可以用最小生成树算法求解的,但是,由于免费修建一条道路,使得B值 2 #include 3 #include 4 #include 5 #include 6 #define clr(a,m) memset(a,m,sizeof(a)) 7 #define rep(i,a,b) for(int i=a;iq;26 double cnt=0;27 28 ... 阅读全文
posted @ 2013-08-25 10:28 Thousand Sunny 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 题意:动物要逃跑,工作人员要截断从START(左上角)到END(右下角)的道路,每条边权表示拦截该条道路需要多少工作人员。问最少需要多少人才能完成拦截。通俗地讲,就是把图一分为二所造成消耗的最小值。这里用最短路的方法解,主要是因为数据量太大,不能用最小割最大流还处理。手动画一下这种“割”的形式,发现是从一条边到另一条边,即以边为“点”,在边与边之间见“边”,边上的权值为终点v(其实是一条边)的权值。(本来想直接用点权处理的,可coding的时候发现SPFA中的入队出队操作太繁琐,老老实实改边权了)。这里因为是以边为点,所以要对每条边编号,借用了昨天刚学到的ID()函数,很实用的。最终的方案是整 阅读全文
posted @ 2013-08-24 11:34 Thousand Sunny 阅读(446) 评论(1) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 9 下一页