2012年10月7日
摘要: 1166与1754相似(线段树)1166讲的是对一段区间求和,而1754是对一段区间求最值。套用经典线段树模版1166代码:View Code 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 struct node 5 { 6 int a,b,sum; 7 }; 8 node re[140000]; 9 int s,p[50001];10 void make(int x,int y,int z)11 {12 re[z].a=x;13 re[z].b=y;14 if(x==y)15... 阅读全文
posted @ 2012-10-07 17:16 xinmenghuairi 阅读(344) 评论(0) 推荐(0) 编辑
  2012年10月6日
摘要: 这是个凸包题,不怎会啊。网上找了个比较容易理解的但是有点问题啊。就是有个测试结果不对尽然也AC了。挺郁闷的。(毕竟还是比较容易理解的)代码:View Code 1 #include<iostream> 2 #include<algorithm> 3 #include<math.h> 4 using namespace std; 5 struct point 6 { 7 double x,y; 8 }; 9 point p[50000],res[50000];10 double area(point t0,point t1,point t2)//三点构成的三角 阅读全文
posted @ 2012-10-06 10:18 xinmenghuairi 阅读(240) 评论(0) 推荐(0) 编辑
  2012年10月5日
摘要: 这个题是要判断两点间是否有符合的整数点共线、解题思路:判断三点共线公式为:(x2-x1)*(y3-y1)=(y2-y1)*(x3-x1)。刚开始我采用该公式判断,发现超时了,网上看了下发现了求公约数的方法,这种方法用到了相似三角形原理。对于A、C两点它们之间如果存在整数点F与它们共线,则必有AB/BC=AE/EF,则AB与BC必有不为1的公约数,所以现在的问题由判断是否存在整数点共线变成横向距离和纵向距离是否互质了。View Code 1 #include<iostream> 2 using namespace std; 3 #include<math.h> 4 int 阅读全文
posted @ 2012-10-05 11:00 xinmenghuairi 阅读(175) 评论(0) 推荐(0) 编辑
  2012年9月20日
摘要: 这道题意思是:给你一些字符串,看你能不能把他连成一串(连串规则:一个字符串a【】的首位要是与另一个字符串b【】的末尾相同就能连起来,b后跟着a)用并查集找出其每个字符出度与入度的个数:1.当相等时即构成欧拉回路满足条件2.当只有一个符号的出度多入度一个且一个符号的入度比出度多一个其他符号出度都等于入度是满足条件(还要判断是否构成回路,当最终点个数>1时不构成回路)代码:View Code 1 #include"iostream" 2 #include"string" 3 using namespace std; 4 char a[1002]; 5 阅读全文
posted @ 2012-09-20 20:08 xinmenghuairi 阅读(218) 评论(0) 推荐(0) 编辑
  2012年9月14日
摘要: 这个题意是:找连通的最短路程(只要每个点能通即可)思路:本题的字母是有按顺序的,只要对字母进行排号后将对应的地图记录下来然后再用prime()算法就能找出最短路径代码:代码 1 #include<iostream> 2 #define MAX 0x4f4f4f4f 3 using namespace std; 4 int map[29][29],dis[29],mark[29]; 5 int temp,n; 6 int prime() 7 { 8 int i,j,min,v; 9 temp=0;10 for(i=1;i<=n;i++)11 {12 ... 阅读全文
posted @ 2012-09-14 20:51 xinmenghuairi 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 这道题讲的是汇率。叫你找出某中货币通过汇率换成其他货币后最后再换成原来货币。是否能比原来的多。思路:先将其他货币进行排号,然后利用flody算法,找到那几种货币是否能通过汇率兑换后比原来的多。代码:View Code 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 double g[32][32]; 5 char na[32][100]; 6 int n,m; 7 8 int find(char s[])//找到该货币名 对应的排号 9 {10 int i;11 for(i=1;i< 阅读全文
posted @ 2012-09-14 19:54 xinmenghuairi 阅读(182) 评论(0) 推荐(0) 编辑
  2012年9月10日
摘要: 1162 这个题意是找这几个点的最短连通的最短路劲,就是将这些点的各个距离算出来,先确定一个点进行最短路劲选择。代码:View Code 1 #include<iostream> 2 #include<math.h> 3 #define MAX 0x4f4f4f4f 4 using namespace std; 5 struct node{ 6 double x; 7 double y; 8 }node1[101]; 9 int n,mark[101];10 double dis[101],map[101][101];11 double mj(double x,doub 阅读全文
posted @ 2012-09-10 21:12 xinmenghuairi 阅读(355) 评论(0) 推荐(0) 编辑
  2012年9月6日
摘要: 这个题是有规律的。只要找1的位置就行。当1的位置在<n的时候就以原位置2倍的变化改变。当位置在>n时就以原位置减n后2倍减的改变变化。代码:View Code 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int x,i,cur; 6 while(cin>>x) 7 { 8 cur=2; 9 for(i=1;cur!=1;i++) 10 if(cur<=x)11 cur=cur*2;12 ... 阅读全文
posted @ 2012-09-06 18:19 xinmenghuairi 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 这个题只要处理下怎样确定符合条件的个数,然后将这些数排序就行了。起初想了都不太严谨,不知道怎么确定个数,后来想出来了。只要确定个数这题就好办了,只要将那些字符转成整数,排序就行了。代码:View Code 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int cmp(const void *a,const void *d) 5 { 6 return *(int *)a-*(int *)d; 7 } 8 int main() 9 {10 char map[1003];11 int ... 阅读全文
posted @ 2012-09-06 17:32 xinmenghuairi 阅读(198) 评论(0) 推荐(0) 编辑
  2012年9月5日
摘要: 这个题大意是:计算n^n的最高位数是什么。解题思路:1,令M=N^N;2,分别对等式两边取对数得log10(M)=N*log10(N),得M=10^(N*log10(N));3,令N*log10(N)=a+b,a为整数,b为小数;4,C函数:log10(),计算对数,pow(a,b)计算a^b5,由于10的任何整数次幂首位一定为1,所以,M的首位只和N*log10(N)的小数部分有关, 即只用求10^b救可以了;6,最后对10^b取整,输出取整的这个数就行了。(因为0<=b<1,所以1<=10^b<10对 其取整,那么的到的就是一个个位,也就是所求的数)。起初w了好几次 阅读全文
posted @ 2012-09-05 20:57 xinmenghuairi 阅读(278) 评论(0) 推荐(0) 编辑