Jackiesteed

www.github.com/jackiesteed

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 7 8 9 10 11 12 下一页

2011年5月22日

摘要: 首先,考虑简单情况,两个人的距离太近,就要走远一点,那么两个人可以同时向相反方向走,那么要走距离X花费时间为X/2,而当一个人静止,另一个人移动,这样两个人远离X要花费时间X,是前一种情况的2倍,这样就可以进行一下转化,即两人相互远离时只需要移动一个人.结果减半即可.以上可以推广到N个人, 人的位置任意的情况,即N个人要相互拉开距离,就是固定一个人fixed,其他人都以相邻的靠近fixed的人为参照进行移动,结果除以2即可.解题思路陈述:(1)任意相邻两人的距离都在D范围内:固定最左的vendor,然后向右迭代,每一个人距其左邻X,右邻就要相对于左邻向右移D-X距离,因为每个人都是相对于其左邻 阅读全文
posted @ 2011-05-22 05:46 Jackiesteed 阅读(158) 评论(0) 推荐(0) 编辑

2011年5月18日

摘要: 省赛前心里一直打鼓,不确定我们到底在山东省内能打第几,惴惴不安的就开路到了济南(比赛在山东大学齐鲁软件学院).题外话,最近RP涨了(有没有RP之说?^^),热身赛前打了一场Codeforces,没有紫,直接橙黄了(后来又成了紫,火候未到也).//热身赛测机器,嵩神娴熟地虐机器.正式比赛,还算顺利,A-J中只有F和I没有出来,其中F题是个裸的最远Manhattan距离,I题是个裸的斜率优化的DP.A题我一开始一直没有让做,但是A其实是个水题,Nim 读成了Anti-Nim,题目描述囧.鉴于题目不是很难,比赛具体过程不再赘述.关于没有A掉的这两个题目,原因有:1,题量不够,区区1000题还没到,2 阅读全文
posted @ 2011-05-18 09:46 Jackiesteed 阅读(203) 评论(0) 推荐(2) 编辑

摘要: 本题是个简单的动态规划题目,其实亚O(N^2)(N==10000)的算法也是过的,但是假如出题人把数据量提高到1e5,程序肯定就会挂的.通过观察,其实对于station[i]处票价会产生实质性影响的只有3个,这3个分别是station[i]前面距离station[i]小于L[1]的最远的station,距离它小于L[2]最远的,距离它小于L[3]但是最远的.这样,通过station[i]-L[j](j=1,2,3)这个值,就可以在station数组里二分定位我们想要求的station(通过这个station的最优只来更新station[i])的下标了.至此,程序时间复杂度为O(N*log(N) 阅读全文
posted @ 2011-05-18 09:23 Jackiesteed 阅读(329) 评论(0) 推荐(1) 编辑

2011年5月12日

摘要: 首先,给出定义:定义1:如果V(G)={v1,v2,v3,...,vp};则称非负整数序列(d(v1),d(v2),d(v3),...,d(vp))为图G的度序列.(定义中的图指广义的图,含有多重边或环).定义2:简单图的度序列成为图序列.以下是图论书上的定理及推论:定理1:对于每个图G=(V,E),均有∑d(v)(v属于V)=2*q(G),(q(G)为图的边数).推论1:任何图中,奇点的个数为偶数.推论2:非负整数序列(d1,d2,...,dp)是某个图的度序列,当且仅当∑(di)(1<=i<=n)是偶数.推论2证明简单构造性地,di为偶数对应的顶点,添加di/2个环,di为奇数 阅读全文
posted @ 2011-05-12 01:34 Jackiesteed 阅读(5658) 评论(0) 推荐(0) 编辑

摘要: DAG的最小路径覆盖是指找最小数目的互相不相交的有向路径,满足DAG的所有顶点都被覆盖.首先给出公式:DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中的最大匹配数.那么对应一个DAG,如何构造相应的二分图?对于DAG中的一个顶点p,二分图中有两个顶点p和p',对应DAG中的一条有向边p->q,二分图中有p-q'的一条无向边.二分图中p属于S集合,p'属于T集合.下面我们来解释上面公式为什么成立,思路参考baihacker神牛:上图中,对应左边的DAG建立构造右边的二分图,可以找到二分图的一个最大匹配M:1-3',3-4',那么M中的这两条匹 阅读全文
posted @ 2011-05-12 01:33 Jackiesteed 阅读(3723) 评论(0) 推荐(3) 编辑

2011年5月11日

摘要: 源代码:View Code //DP,关键是既要记录最大,还要记录最小,因为负负得正...import java.util.*;import java.io.*;import java.math.*;public class Main{ public static BigInteger[][] dp=new BigInteger[110][110]; public static BigInteger[][] dp1=new BigInteger[110][110]; public static BigInteger INF; public static BigInteger NEG; publ 阅读全文
posted @ 2011-05-11 00:21 Jackiesteed 阅读(148) 评论(0) 推荐(0) 编辑

2011年4月26日

摘要: 关于补图的应用,发表一点总结.一群人的集合,其中一些人认识一些不认识,要从中选取一个集合,使得集合中所有人都互相认识,球最大的这个集合S.建图,认识的人之间建立一边无向边(有向边的情况类似),然后球图的补图.在补图中,如果两点邻接,那么他俩就不认识,球补图的联通分量.然后用最少的颜色给联通分量中的点着色,邻接点着不同颜色.同一个联通分量里面相同颜色的人互相认识,所以从每个联通分量里找出着色人数最多的颜色的人数,把这群人加入到S中,就可以得到结果.练习题目:http://poj.org/problem?id=1112http://poj.org/problem?id=3692 阅读全文
posted @ 2011-04-26 16:20 Jackiesteed 阅读(118) 评论(0) 推荐(1) 编辑

2011年4月23日

摘要: //这个题看你二分的对象了,//二分范围最小的对象,效率会是最快的,//题目里面可以二分的对象有几个,但他们的//意义是相等的,只是精度不同,所以要保证//精确,就要选取范围最小的对象,这样精度会最好..代码如下:View Code //这个题看你二分的对象了,//二分范围最小的对象,效率会是最快的,//题目里面可以二分的对象有几个,但他们的//意义是相等的,只是精度不同,所以要保证//精确,就要选取范围最小的对象,这样精度会最好..#include <iostream>#include <cstring>#include <algorithm>#inclu 阅读全文
posted @ 2011-04-23 10:07 Jackiesteed 阅读(127) 评论(0) 推荐(0) 编辑

2011年4月22日

摘要: 花了一天弄明白了,自己代码里边写成双向了,蛋疼.纪念一下.模板:View Code #include <iostream>#include <fstream>#include <cstring>#include <climits>#include <cmath>#include <cstdio>#include <cstring>using namespace std;const int SIZE=3000;typedef struct edge{ int t; edge* next;}edge;edge g[ 阅读全文
posted @ 2011-04-22 20:08 Jackiesteed 阅读(121) 评论(0) 推荐(0) 编辑

2011年4月19日

摘要: 稀疏矩阵可能有很多0,根据这个特性我们可以优化矩阵乘法的时间效率.这是在做POJ_3735时学到的,思路很简单,但是我程序一直挂,后来发现有个很给力的优化.思路很简单,不解释.附代码:View Code void matrixMul(LL a[][110],LL b[][110],LL c[][110]){ clear(c); for(int i=0;i<=n;i++) { for(int j=0;j<=n;j++) { if(0==a[i][j])//这是优化的地方. continue; for(int k=0;k<=n;k++) c[i][k]+=a[i][j]*b[j] 阅读全文
posted @ 2011-04-19 21:54 Jackiesteed 阅读(4892) 评论(0) 推荐(0) 编辑

上一页 1 ··· 7 8 9 10 11 12 下一页