2014年2月26日

摘要: 原题链接题目大意:FM在一个街道n*n街道的(0,0)点,在每个网格里放着cheese,他要尽可能多的吃这些cheese。有两个规则:1)他跑的总距离不能超过k步;2)下一个节点的cheese的块数必须超过这个节点。解法:题目是去年秋天做的,现在看了下貌似就是用一下广搜,从原点开始一个个查找。我直接把当时的代码贴过来了,看看当时写的注释,发现暑假都过了一半了,算法都没有总结好。惭愧了。参考代码:#includeusing namespace std;int n,k,x,y,block[102][102],dp[102][102];int a[4][2]={{1,0},{-1,0},{0,1}, 阅读全文
posted @ 2014-02-26 13:59 KK4SBB 阅读(420) 评论(0) 推荐(0) 编辑
 
摘要: 原题链接题目大意:按照HTML的语法处理一段字符。这道题算是字符串类型的经典,熟练之后可以做一个简单的html解析器了。解法:没什么好说的,直接代码。参考代码:#include#includeusing namespace std;void hr(){ cout>str){ if(str==""){ br(); len=0; } else if(str==""){ if(len)cout<<endl; hr(); len=0; } else{ if(len+str.size()<80){ if(len!=0)cout<< 阅读全文
posted @ 2014-02-26 13:59 KK4SBB 阅读(263) 评论(0) 推荐(0) 编辑
 
摘要: 原题链接题目大意:有一个发射站,覆盖范围是半径一定的一个半圆。在一个1000*1000平方米的地盘里有很多接收站。给定发射站的圆心,求最佳角度时能覆盖接收站的个数。解法:本质上就是给一个原点和其他若干点,找出一个可以覆盖最多点的半圆。用了两个函数判断,一个是判断两点之间的距离,即该点到原点的距离是否在半径之内,筛选出第一步满足的点。另一个是判断两个点A、B是否在同一个半圆内,其实先确定一条直线AO,然后规定B点在AO的左侧就算在半圆内。每个点都遍历一次,找出最大值即可。参考代码:#include#includeusing namespace std;bool isInclude(int xx, 阅读全文
posted @ 2014-02-26 13:58 KK4SBB 阅读(255) 评论(0) 推荐(0) 编辑
 
摘要: 原题链接题目大意:定义了一种数字Humble Number,他们的质因数只包含2、3、5、7中的一个或者几个,求第n个这样的数,1#include#includeusing namespace std;int main(){ double seven,five,three,two; int a,humber[5842]={0},n=0; for(seven=1;seven>a)&&a!=0){ if(a%10==1&&a%100!=11){ //!!! cout format cout<<"The "<<a< 阅读全文
posted @ 2014-02-26 13:58 KK4SBB 阅读(232) 评论(0) 推荐(0) 编辑
 
摘要: 原题链接题目大意:FM要去逛街,他可以走任何街道,在任何路口转弯。他走一条陌生街道的速度是20公里每小时,走一条熟悉街道的速度是50公里每小时。输入是街道信息,输出消耗时间。解法:本质就是浮点运算,求两点间距离。参考代码:#include#include#include#includeusing namespace std;int main(){ int x0,y0,x1,x2,y1,y2,time; double dist=0.0,d; string str; char *p; while(cin>>x0>>y0){ //x0,y0 is useless, but s 阅读全文
posted @ 2014-02-26 13:58 KK4SBB 阅读(351) 评论(0) 推荐(0) 编辑
 
摘要: 原题链接题目大意:迭代求自然常数e。解法:没什么好说的,注意数据类型和输出格式。参考代码:#include#includeint main(){ int n=0; double fact,ee; printf("n e\n"); printf("- -----------\n"); printf("0 1\n1 2\n2 2.5\n"); ee=2.5; fact=2; for(n=3;n<10;n++){ printf("%d ",n); fact*=n; ee=ee+1/fact; printf(&quo 阅读全文
posted @ 2014-02-26 13:58 KK4SBB 阅读(155) 评论(0) 推荐(0) 编辑
 
摘要: 原题链接题目大意:给一个数字,每一位相加求和,不断重复过程,直到剩一位数字。解法:考虑到输入的数字可以很大,把输入按照字符串格式读入,再逐位处理。参考代码:#include #include using namespace std;int main(){ string str; int sum,sum2,i; while(cin>>str&&str!="0"){ sum=0; for(i=0;i0){ sum2+=sum%10; sum/=10; } if(sum2=10); } return 0;} 阅读全文
posted @ 2014-02-26 13:58 KK4SBB 阅读(215) 评论(0) 推荐(0) 编辑
 
摘要: 原题链接题目大意:Fred想在Louisiana买一套房子,但是堤坝不牢固,每年都要被河水侵蚀50平方英里。题目给出他豪宅的坐标,要求他被迫移民搬迁的年份。解法:也没什么好说的,先求出两点间的距离,即半径,然后算出面积,在除以每年塌方的面积,向上取整即可。参考代码:#include #include #define PI 3.14int main(){ int n=1,N,year; float X,Y,dist,area; scanf("%d",&N); while(n<=N){ scanf("%f%f",&X,&Y); 阅读全文
posted @ 2014-02-26 13:57 KK4SBB 阅读(310) 评论(0) 推荐(0) 编辑
 
摘要: 原题链接题目大意:叠扑克牌,给出伸出长度,问最多需要几张扑克牌。解法:循环累加。退出循环后向上取整输出。参考代码:#includeusing namespace std;int main(){ double i,len,sum; while(cin>>len&&len!=0.00){ sum=0.0; i=2; while(sum<len){ sum+=1/i; i++; } cout<<int(i+0.5)-2<<" card(s)"<<endl; } return 0;} 阅读全文
posted @ 2014-02-26 13:57 KK4SBB 阅读(300) 评论(0) 推荐(0) 编辑
 
摘要: 原题链接题目大意:给出一个格子图,求走完所有节点的最短路径距离。解法:简单啊,如果都是奇数,可以走一次斜边,其他情况就是长*宽。参考代码:#include int main(){ int i,k,m,n; double result; scanf("%d",&k); i=1; while(i<=k){ scanf("%d%d",&m,&n); printf("Scenario #%d:\n",i); if(m%2==0||n%2==0){ result = m*n; printf("%.2f\n 阅读全文
posted @ 2014-02-26 13:57 KK4SBB 阅读(240) 评论(0) 推荐(0) 编辑