摘要: 刚开始一直没能读懂题,后来读懂题了,感觉没什么思路,后来看discuss里面的二分答案,顿时豁然开朗。。。先把所有的道路排序,二分一条道路,把长度比当前短的赋值为0,把长度比当前大的赋值为1,用最短路判断从1到n的最短路径ans,如果ans>k 再二分比当前道路长的路径, 否则二分比当前路径短的路径,直到找到一个最短的路径符合条件。。贴下代码: 1 # include<stdio.h> 2 # include<string.h> 3 # include<stdlib.h> 4 # define N 1005 5 # define M 10005 6 # 阅读全文
posted @ 2011-05-16 18:41 奋斗青春 阅读(263) 评论(1) 推荐(0) 编辑
摘要: 离散化+深搜。对给出的n个数排序,然后离散,求出每个数有多少个,然后递归判断每个数出现多少次时 能使和等于sum,需要注从大数开始深搜。。代码:# include<stdio.h># include<string.h># include<stdlib.h>int a[20],b[20],c[20],sum,ans,flag,ys;int cmp(const void *a,const void *b){ return *(int *)b - *(int *)a;}void dfs(int i){ int j,k,h; for(j=b[i];j>=0;j 阅读全文
posted @ 2011-05-16 18:28 奋斗青春 阅读(438) 评论(0) 推荐(1) 编辑