上一页 1 2 3 4 5 6 7 ··· 10 下一页
摘要: 题意:略思路:此题陷阱超多,当##,#*,*#时不能走进去,套下模板就行了。#include #include#include#includeusing namespace std;#define N 20struct node{ int x,y,z; int step;}pri;int next[][2]={{1,0},{0,1},{-1,0},{0,-1}};char map[2][N][N];int n,m,time;bool vis[2][N][N];bool check(node a){ if(a.x>=0&&a.x=0&&a.yq; node 阅读全文
posted @ 2014-03-09 20:54 Teemo的技术blog 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 题意:你搬n个桌子,桌子从一个地方搬到另一个地方,走廊只允许同时一个桌子通过,教室分布在两边,奇数在一边,偶数在一边,当桌子不冲突时可以同时搬运,冲突时要等别的那个桌子搬完再搬。思路:因为奇数桌子在偶数对面,当奇数时会与偶数冲突,直接把奇数+1,变成偶数就可以很简单判断出有没冲突,再判断那个位置冲突最多,就是最后的结果。#include#include#include#includeusing namespace std;#define N 410int main(int argc, char** argv) { int room[N],a[N],b[N],t,ans,n,i,j,tmp... 阅读全文
posted @ 2014-03-06 13:02 Teemo的技术blog 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题意:将木棍放在机器里处理,第一根需要一分钟,剩余的如果大于等于前边放入的长度和重量,就不用费时间,否则需要一分钟,计算给出一组数的最少时间。思路:先按长度排序,相同在比较重量,然后按顺序比较得出结果#include#includeusing namespace std;const int maxn=5010;struct stick{ int length; int weight; bool vis;}s[maxn];bool cmp(stick s1,stick s2){ if(s1.length=weight) { ... 阅读全文
posted @ 2014-03-05 23:08 Teemo的技术blog 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n个房子的距离,问那个房子离别的房子的距离最近,并且输出与别的房子距离的总和思路:排序一下,中间的房子离别房子距离必然是最少的。#include #include#include#includeusing namespace std;#define N 510int house[N];int main(int argc, char** argv) { int n,t,i,sum,m; scanf("%d",&t); while(t--){ scanf("%d",&n); for(i=1;i<=n;i++) scanf(&q 阅读全文
posted @ 2014-03-05 22:10 Teemo的技术blog 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 题意:求任意两点之间的距离的最少一个距离思路:枚举一下就可以了#include #include#includeusing namespace std;#define N 10010struct node{ double x,y;}p[N];int main(int argc, char** argv) { int n,i,j; double mdist,tmp; while(scanf("%d",&n)&&n){ for(i=0;i=10000) printf("INFINITY\n"); else printf("% 阅读全文
posted @ 2014-03-04 23:06 Teemo的技术blog 阅读(70) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #define eps 1e-8#define zero(x) (((x)>0?(x):-(x)) eps;}//判两点在线段异侧,点在线段上返回0bool opposite_side(point p1, point p2, line l){ return xmult(l.a, p1, l.b)*xmult(l.a, p2, l.b) eps) return distance(p, l.a) eps) return distance(p, l.a) = pi + pi) dlng -= pi + pi; if (dlng > p 阅读全文
posted @ 2014-03-02 21:47 Teemo的技术blog 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题意:把一个包放入另一个包内,使得总共要带的件数最少,就是说大包可以装小包,且一个大包只能装一个小包,但是这个小包可以继续装更小的包。思路:因为相同大小的包不能互相装,所以最小数量就是有相同尺寸的包的最大数量.#include #include#include#includeusing namespace std;#define N 1000100int c[N],a[N];int main(int argc, char** argv) { int n,i,u,j; while(scanf("%d",&n)!=EOF&&n){ u=0; memset 阅读全文
posted @ 2014-03-01 17:25 Teemo的技术blog 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意:公司要你要完成N份任务,但是你是不可能全部完成的,所以需要雇佣别人来做,做到剩下M份时,自己再亲自出马。现在有个机构,有两种付费方式,第一种是每付A元帮你完成1份,第二种是每付B元帮你完成剩下任务的一半(rounding down)。思路:先算出每个的最少费用然后排序就行了,要注意的是当费用相等时,按名字的字典序排序#include #include#include#includeusing namespace std;#define N 100010struct node{ char name[110]; int sum;}p[N];bool cmp(node a, node b){ 阅读全文
posted @ 2014-03-01 16:37 Teemo的技术blog 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题意:给你个矩形n*m,再给你n个圆的圆心坐标和半径,问最用最少用几个圆把这个矩形覆盖思路:直接想发现这问题不容易,后来发现可以把圆看做区间(能把矩形面积覆盖),然后这个问题就容易解决了#include #include#includeusing namespace std;#define N 10100struct node{ double l,r;}p[N]; int main(int argc, char** argv) { int n,i,ans; double width,heigh,x,y,u; while(scanf("%d%lf%lf",&n,&am 阅读全文
posted @ 2014-02-28 22:54 Teemo的技术blog 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 在一条街上有许多房屋,每间屋子里都住着人,并且都是做葡萄酒生意的商人,他们每天都要决定买卖多少瓶葡萄酒。有趣的地方是,供需总是完美地一致。商人总是能买到自己需要的葡萄酒,并且,他们从来不介意是从哪个商人那里购入的,只要求葡萄酒的搬运时间越少越好。如果把一瓶葡萄酒搬运到隔壁的成本是1,请求出全部葡萄酒买卖的最低搬运成本。 2. 输入和输出 输入数据由多行构成,每两行是一组测试数据。第一行是整条街上的店铺数n(2~100 000),第二行是n个整数,代表每间店面希望买卖的葡萄酒瓶数(?1 000~1 000),葡萄酒的瓶数为正值表示买进,负值表示卖出。输入数据的最后以0间店面做结束。请输出最小.. 阅读全文
posted @ 2014-02-28 21:11 Teemo的技术blog 阅读(136) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 10 下一页