上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 22 下一页
摘要: 刘汝佳新书---训练指南题意:有K个整数数组,包含K个元素。在每个数组中取一个元素加起来,可以得到k^k个和。求这些和中最小的K个值分析:这题有简化版本的,即2个整数数组A,B,包含K个元素,在每个数组中取一个元素加起来,可以得到k^2个和,求这些和中最小的K个值。我们需要把这k^2个和组织成如下k个有序表.表1:A1+B1<=A1+B2<=......<=A1+Bk表2: A2+B1<=A2+B2<=......<=A2+Bk表k:Ak+B1<=AK+B2<=......<=Ak+Bk我们可以用二元组(s,b)来表示一个元素即s=Aa+B 阅读全文
posted @ 2013-03-08 21:12 z.arbitrary 阅读(1194) 评论(4) 推荐(0) 编辑
摘要: 题意:你的任务是编写一个称为argus的系统。该系统支持一个register命令 Register Q_num Period该命令注册了一个触发器,它每个Period秒钟就会产生一次编号为Q_num的事件。你的任务是模拟出前K个事件。如果多个事件同时发生,先处理Q_num小的事件。分析:用优先队列来维护每个触发器的“下一个事件“,然后每次从中取出最早发生的一个事件,重复K次即可。// File Name: 1203.cpp// Author: zlbing// Created Time: 2013/3/6 18:18:19#include<iostream>#include< 阅读全文
posted @ 2013-03-08 20:13 z.arbitrary 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 刘汝佳新书--训练指南这是一道用STL解决的题,STL是神奇啊。题意:给出一组数组,求v从左到右第K次出现的下标。分析:因为数组有10^6规模,查询也有10^6规模,若是只用数组的话,肯定存储不了。。// File Name: 11991.cpp// Author: zlbing// Created Time: 2013/3/6 14:59:29#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include&l 阅读全文
posted @ 2013-03-06 15:22 z.arbitrary 阅读(184) 评论(0) 推荐(0) 编辑
摘要: struct Edge{ int from,to,cap,flow,cost;};struct MCMF{ int n,m,s,t; vector<Edge>edges; vector<int> G[MAXN]; int inq[MAXN]; int d[MAXN]; int p[MAXN]; int a[MAXN]; void init(int n){ this->n=n; for(int i=0;i<=n;i++)G[i].clear(); edges.clear(); } void... 阅读全文
posted @ 2013-03-04 21:23 z.arbitrary 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题意:有个方阵,每个格子里都有一个非负数,从左上角走到右下角,每次走一步,只能往右或往下走,经过的数字拿走,换0每次都找可以拿到数字和最大的路径走,走k次,求最大和分析:最大费用最大流。因为点有权值,所以一般的做法是拆点,将一个点拆成两个点a和a',点的费用为权值,容量为1,然后再建一条边,边的费用为0,容量为INF,这样就能保证至少能通过这个点k次。。然后将a‘与右或下的点建一条边,边的费用为0,容量为INF..最后建一个超级源点和汇点,使之只能走k编。将超级源点与矩阵第一个点相连,费用为0,容量为k,超级汇点与矩阵最后一个点相连,费用为0,容量为k。这样,这个题的图就建完了。。一开 阅读全文
posted @ 2013-03-04 21:19 z.arbitrary 阅读(247) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/lyy289065406/article/details/6742534题意:有N个供应商,M个店主,K种物品。每个供应商对每种物品的的供应量已知,每个店主对每种物品的需求量的已知,从不同的供应商运送不同的货物到不同的店主手上需要不同的花费,又已知从供应商Mj送第kind种货物的单位数量到店主Ni手上所需的单位花费。问:供应是否满足需求?如果满足,最小运费是多少?分析:一开始将一个点拆成K个点,给过TLE了。。后来看题解发现分别把k种商品用最小费用最大流算出来就行了。。只要其中一种不满足,结果输出-1。手打的最小费用最大流模版,结果打错了,调试了半天。 阅读全文
posted @ 2013-03-04 21:09 z.arbitrary 阅读(216) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/markliu/archive/2012/05/18/2508392.html题意:有N个农场,P条无向路连接。要从1到N不重复走T条路,求所经过的直接连接两个区域的道路中最长道路中的最小值,。构图:源点向1连容量T的边。二分最小长度,长度超过mid的边容量为0,否则为1,用最大流判可行性。注意:1.该题有重边,切忌用邻接矩阵删除重边(重边要用邻接表来处理以保留)。2.无向图在addedge中要进行处理(处理方式见代码)。// File Name: 2455.cpp// Author: zlbing// Created Time: 2013/3/3 阅读全文
posted @ 2013-03-03 17:26 z.arbitrary 阅读(1152) 评论(0) 推荐(0) 编辑
摘要: 这题写了很久了,也看了许多题解。。可是发现都好复杂,看不懂啊,果然智商是硬伤。虽然知道这题是扩展欧几里德算法。。但是对与ax+by=c中系数的正负处理的不好,偶然看一题解发现处理的很好就抄袭了过来。Orz大神http://blog.csdn.net/jerryihuang/article/details/7992068这道题各种坑啊,各种讨论,各种bug,不过倒是学到不少,至少扩展欧几里德会用了,,,泪啊//求的是ax+by=gcd(a,b)的解,其中d=gcd(a,b),注意a>b,并且最好把a,b变成正数计算void exgcd(LL a,LL b,LL &d,LL & 阅读全文
posted @ 2013-03-03 02:04 z.arbitrary 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 刘汝佳新书--训练指南题意:给定一个有向网络,每条边均有一个容量。问是否存在一个从点1到点N,流量为C的流。如果不存在,是否可以恰好修改一条弧的容量,使得存在这样的流?分析:先求一次最大流,如果流量至少为C,则直接输出possible,否则需要修改的弧一定是最小割里的弧。依次把这些弧的容量增加到C,然后再求最大流,看最大流量是否至少为C即可。很可惜,这样写出来的程序会超时,还需要加两个重要的优化。第一个优化是求完最大流后把流量留着,以后每次在它的基础上增广,第二个优化是每次没必要求出最大流,增广到流量至少为C时就停下来。// File Name: dinic.cpp// Author: zlb 阅读全文
posted @ 2013-03-02 23:19 z.arbitrary 阅读(859) 评论(0) 推荐(0) 编辑
摘要: struct Edge{ int from,to,cap,flow;};bool cmp(const Edge& a,const Edge& b){ return a.from edges; vector G[MAXN]; bool vis[MAXN]; int d[MAXN]; int cur[MAXN]; void init(int n){ this->n=n; for(int i=0;i Q; Q.push(s); d[s]=0; vis[s]=1; while... 阅读全文
posted @ 2013-03-02 23:04 z.arbitrary 阅读(272) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 22 下一页