摘要: http://poj.org/problem?id=2253一个池塘中分布着n块可供青蛙跳跃的石头,坐标分别为sto[i].x和sto[i].y,给出Freddy和Fiona站的石头,问Freddy想借助这些石头,跳去Fiona那,它的跳跃距离至少是多少?最短路的变形啊 松弛方程 dis[j]=max(dis[k],map[k][j]);为什么松弛方程是上面那样呢?》首先我们回忆一下如果dis[j]>dis[k]+map[k][j],则更新其值是丛原点到j点的最短距离,那么在此dis[j]=max(dis[k],map[k][j])表示借助中间点跳的话,要跳的j点,则在路径中最长粗条di 阅读全文
posted @ 2012-03-01 21:36 Szz 阅读(314) 评论(0) 推荐(1) 编辑
摘要: #include<stdio.h>#define N 200#define max 999999int map[N][N],d[N];int n,ans,f;void init(){ int i,j; for(i=0;i<=n;i++) { d[i]=-max; for(j=0;j<=n;j++) map[i][j]=max; } f=0;ans=max;}void floyd(){ int i,j,k; for( i=1;i<=n;i++) { for(j=1;j<=n;j++) ... 阅读全文
posted @ 2012-03-01 19:13 Szz 阅读(135) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1860题意 : 就是套汇的问题,汇率Rab, 增加了一个手续费 Cab 。。。。。。。每次的结果是 (本金 - 手续费) * 汇率,而且一个人拥有的钱的类型是已知的,拥有的value 钱的个数也是已知的, 问你能不能增值。输入 :3 2 1 20.0 //钱种类个数 汇率的个数,拥有第几种钱, 拥有多少钱1 2 1.00 1.00 1.00 1.00 //钱a, 钱b, rab, cab, rba, cba2 3 1.10 1.00 1.10 1.00想法: 应用b... 阅读全文
posted @ 2012-02-26 11:24 Szz 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 大致题意:输入由p、q、r、s、t、K、A、N、C、E共10个字母组成的逻辑表达式,其中p、q、r、s、t的值为1(true)或0(false),即逻辑变量;K、A、N、C、E为逻辑运算符,K --> : x && yA --> : x || yN --> not : !xC --> implies : (!x)||yE --> equals : x==y问这个逻辑表达式是否为永真式。PS:输入格式保证是合法的 解题思路:p, q, r, s, t不同的取值组合共32种情况,枚举不同取值组合代入逻辑表达式WFF进行计算。如果对于所有的取值组合,WF 阅读全文
posted @ 2012-02-24 21:38 Szz 阅读(178) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2506#include<stdio.h>#include<string.h>int a[260],b[260];char str[260][260];void add(){ int i,j,k; str[0][0]='1';//不要忘了0,我就贡献了一次wa str[0][1]='\0'; str[1][0]='1'; str[1][1]='\0'; str[2][0]='3'; str[2][1]='\0'; for(i 阅读全文
posted @ 2012-02-24 20:07 Szz 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题目大意:某公司每个月都会盈利或者亏损,盈利的金额为s,亏损的金额为d,该公司每连续5个月报一次财政状况,即(1-5,2-6,3-7,4-8,5-9,6-10,7-11,8-12),这八次报账都显示公司为亏损,问,该公司年底最多能盈利多少,如果不能盈利输出Deficit。 分析:由于每5个月的报账都为亏损,所有连续的5个月里至少有1个月为亏损,则可能产生最优解的情况为如下4种 1 2 3 4 5 6 7 8 9 10 11 12 s s s s d s s s s d s s //每5个月里只有1个月亏损 s s s d d s s s d d s s //每5个月里只有2个月亏损 s... 阅读全文
posted @ 2012-02-24 17:27 Szz 阅读(340) 评论(0) 推荐(1) 编辑
摘要: #include<stdio.h>#include<string.h>#define N 1100int n,str[N],k[N],a[N];char p[N];void pown(){ int i,j,b[N],g; for(i=1;i<=N;i++){a[i]=0;} a[0]=1; for(g=0;g<n;g++) { for(i=0;i<N;i++) { b[i]=a[i]; a[i]=0; } for(i=0;i<N;i++) { for(j... 阅读全文
posted @ 2012-02-22 21:35 Szz 阅读(327) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1328Slyar:说一下题意。假设有一条无限长的海岸线,海岸线以上部分有n个岛屿。在海岸线上有雷达,每个雷达能够探测的范围为半径为d的圆,当且仅当一个岛屿与雷达的距离小于等于d时,岛屿能被雷达探测到。给出所有岛屿的坐标和雷达的半径。求最少需要用多少个雷达,使得所有的岛屿都被探测到。求出每个岛屿对应圆心在x轴上的范围,对左坐标排序后贪心选择。类似于:数轴上有N个点,要用几个单位长度区间才能将它们全部覆盖?具体实现见代码注释。这次用到了C语言的库函数qsort,写cmp函数的时候要注意浮点数的比较。另外这个排序只需要考虑左坐标即可,因为就算左坐 阅读全文
posted @ 2012-02-22 20:07 Szz 阅读(305) 评论(0) 推荐(0) 编辑
摘要: //位压缩加搜索枚举,用pre记录其前驱#include<stdio.h>#include<string.h>#define N 100000struct node{ int x,y,num,pre,step;}p[N*4];struct nn{ int x,y;}g[N*4];char str[10][10];int vis[N];int d[16]={ 0xf888,0xf444,0xf222,0xf111, 0x8f88,0x4f44,0x2f22,0x1f11, 0x88f8,0x44f4,0x22f2,0x11f1, 0x888f,0x444f,0... 阅读全文
posted @ 2012-02-22 18:55 Szz 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 每次改变相邻位置,求最少步数到全部一样。这种矩阵求最少步数到某一状态一般是考虑BFS了,然后就是怎么简化题目的问题,反正就w和b这2个状态,0和1也是2个状态,所以很容易想到了位运算,16个位置看成16个2进制位就好(目的就是全1或全0),题目要求相邻位置改变,最近看MFC的我马上想到了逻辑操作符...这里的情况是反转,所以用异或...所以算法就很容易了,提前打表求出每一位相邻位置改变后的值(把该位置连同相邻置1,其余位置置0),然后BFS就行了http://poj.org/problem?id=1753#include<stdio.h>#include<string.h&g 阅读全文
posted @ 2012-02-21 20:42 Szz 阅读(242) 评论(0) 推荐(0) 编辑