IT民工
加油!
10 2011 档案
CSUOJ 1131(Nim-B* Sum)
摘要:这道题要我们先将10进制数x和y在B进制下进行加法取模运算,然后再将结果转换成10进制。#include<iostream>#include<string.h>using namespace std;const int MAX = 32;int a[MAX], b[MAX];int main(){ int n, cas, B, x, y; cin >> n; while(n --) { cin >> cas >> B >> x >> y; int j = 0; while(x > 0) { a... 阅读全文
posted @ 2011-10-31 14:35 找回失去的 阅读(278) 评论(0) 推荐(1)
UVA 10055(Hashmat the brave warrior )
摘要:这道题居然也出现了WA的情况,自己反思下!#include<iostream>using namespace std;int main(){ long long a, b; while( cin >> a >> b) { if( a < b) cout << b - a << endl; else cout << a - b << endl; } return 0;} 阅读全文
posted @ 2011-10-31 09:36 找回失去的 阅读(145) 评论(0) 推荐(0)
UVA 10071(Back to High School Physics)
摘要:http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1012开始做UVA上的题,然后发现白书推荐了这道题,一看直接上代码吧...#include<stdio.h>int main(){ int v, t; while( scanf( "%d%d", &v, &t) == 2) { printf("%d\n", 2 * v * t); } return 0;} 阅读全文
posted @ 2011-10-31 09:23 找回失去的 阅读(381) 评论(0) 推荐(0)
CSUOJ 1121(Network Connecting)
摘要:这道题也是并查集的题,今天学校OJ又活了,想起暑假没A掉这道题,就去做了一下。题目要我们找出和1号城市没有关联的城市,并查集处理后过一遍所有的城市,然后输出树根不是1的城市编号,没有就输出0。写的时候发现一段时间不写差点忘了这两个函数是怎么写的!!!#include<iostream>#define MAX 250using namespace std;int p[MAX];int find_set( int x ){ return p[x] == x ? x : ( p[x] = find_set(p[x]) );}void union_set( int x, int y ){ 阅读全文
posted @ 2011-10-30 17:47 找回失去的 阅读(242) 评论(0) 推荐(0)
ctype.h快速入门
摘要:摘自Yao的博客:http://www.cnblogs.com/yaohj/archive/2011/01/28/1946799.html简介:头文件ctype.h声明了一组用于分类和转换单个字符的函数。所有的函数都接收一个int型的参数,并返回一个int——返回的int可能代表一个字符,也可能代表的是bool值(0为假,非0为真)。你可能会有疑问,既然是字符操作,接受的参数为什么不用char,而用int? Good question,答案我也不确定……O_O好吧,我们继续……因为这些“函数”太过常用,且调用频繁,所以为了提高效率,这些“函数”是由一些宏实现的,通过查看源文件可以很容易发现这一 阅读全文
posted @ 2011-10-29 00:09 找回失去的 阅读(523) 评论(0) 推荐(0)
C++ vector容器类型 (摘自漫步云端的博客)
摘要:http://www.cnblogs.com/charley_yang/archive/2010/12/11/1903040.htmlvector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分 ,为了使用vector 我们必须包含相关的头文件 :#include <vector>使用vector有两种不同的形式,即所谓的数组习惯和 STL习惯。一、数组习惯用法1. 定义一个已知长度的 vector :vector< int > ivec( 10 ); //类似数组定义int ia[ 10 ]; 可以通过ivec 阅读全文
posted @ 2011-10-17 22:22 找回失去的 阅读(187) 评论(0) 推荐(1)
CsuOJ 1092(大尾巴狼的朋友)——因为小细节一直在WA...
摘要:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1092这道题要求找出与大尾巴狼的朋友个数,依然是用并查集。我的思路是将父节点数值大的集合并入数值小的集合,这是为了照顾大尾巴狼的编号1,然后就有两种做法了。其实也差不多,第一种是定义一个数组cnt来存放集合元素的个数,然后在合并集合的过程中不断更新cnt的值,最后输出cnt[1] -1;另一种做法是先将集合合并,最后从2开始循环找一遍p[x]=1的元素的个数输出。第一种的代码: 1 #include<iostream> 2 #define N 10000005 3 using nam 阅读全文
posted @ 2011-10-16 08:02 找回失去的 阅读(241) 评论(0) 推荐(1)
POJ1308(Is It A Tree?)
摘要:http://poj.org/problem?id=1308最近几天有点忙,敲代码敲的比较少,才几天就比较生疏了。昨天晚上做了这道题和杭电的1225,终于找回了感觉。但是遗憾的是杭电那道题没有A掉,找不出错在哪。先说POJ1308,这道题要求我们判断这些case的数字连接起来是否构成一棵树。一棵树只有一个树根,树当中的两个父节点不能含有相同的儿子。然后我就开始写了,用的依然是并查集,但是看了下数据感觉不好输入,-1,-1是结束输入,0,0是结束一个case,所以每个case开始的第一组数据单独输入,后面的数据用while循环判断是否是0,0来输入。问题依然有,不知道哪些树出现了,所以增加了一个 阅读全文
posted @ 2011-10-13 10:44 找回失去的 阅读(1817) 评论(1) 推荐(0)
hdu1220
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1220代码:#include<iostream>using namespace std;int main(){ int n; while(cin >> n) { cout << (n*n*n*n*n*n - 7*n*n*n + 6*n*n) /2 <<endl; } return 0;}// n^3(n^3-1)/2 所有小正方体两两组合的对数/* (6*n^3 - 6*n^2)/2 不符合要求的小正方体个数(假设每个小正方体周围都有六个正方体,即一共6*n^3 阅读全文
posted @ 2011-10-12 23:36 找回失去的 阅读(225) 评论(0) 推荐(0)
hdu_1290(我受教了)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1290这是一道让我很没脾气的数学题,一个人告诉我二维的是f(x) = a*x^2 + b*x + c,三维的是f(x) = a*x^3 + b*x^2 + c*x + d,用待定系数法求出公式再计算就OK 了...这道题的公式推出来是f(x) =(x^3 + 5x + 6) /6 #include<iostream>using namespace std;int main(){ int n; while(cin >> n) { cout << ( n*n*n + 5*n + 阅读全文
posted @ 2011-10-05 19:55 找回失去的 阅读(175) 评论(0) 推荐(1)
POJ1611(The Suspects)又见并查集
摘要:http://poj.org/problem?id=1611这貌似我做的第二道并查集的题,算是一道水题吧,题目的大概意思是找出与编号为0的人有交集的人数。所以要将出现的集合中有交集的合并成大集合,最后输出0所在集合的人数。贴代码:#include<iostream>using namespace std;#define N 30005int p[N],f[N];//f用来存集合元素的个数 int find(int x)//并查集的根本,找父亲结点 { return p[x] == x ? x : ( p[x] = find(p[x]) );}void merge(int a, in 阅读全文
posted @ 2011-10-05 13:59 找回失去的 阅读(205) 评论(0) 推荐(1)
Fibonacci(hdu1568)——一道我不知道怎么说的题
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1568这是道神奇的题,求斐波那契数列的0到第100000000项的前四位,之前做过斐波那契数列的水题,求到63项能用__int64解决,但是到100000000项的话用数组都会超时,所以我是一点办法没有,只有学习大牛的解法。看了下网上的题解,大牛们用的都是下面这个公式,不得不说,数学好才是真的好!o(︶︿︶)o 唉,这公式是怎么出来的?以下是大牛的解释:先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);假设给出一个数10234432,那么log10(1 阅读全文
posted @ 2011-10-04 22:34 找回失去的 阅读(1296) 评论(1) 推荐(0)
POJ1065(Wooden Sticks)
摘要:http://poj.org/problem?id=1065我发现我真的不适合做这些问题,老是考虑不完全。看到题之后,我知道要先排序,因为最省时的是l'>l,w'>w,排序之后就可以只看weight了,所以先将lenth作为一级参数,weight作为二级参数排序。排序之后就只需要考虑weight这个方面了。然后开始处理stick,对处理过的stick标记为1,剩下再循环处理,每次开始新的循环时间都要+1,直到所有的stick都处理完毕。我自己给代码的注释还是蛮给力的.贴下我的代码:#include<stdio.h>#include<stdlib.h 阅读全文
posted @ 2011-10-02 16:16 找回失去的 阅读(288) 评论(0) 推荐(0)
hdu_1257(最少拦截系统)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1257这勉强算是一道动归的题吧,不能用贪心算法来做,因为你要拦截的导弹高度是敌方决定的,而且后面出现的高度有可能会比前面高,所以要用到动归的思想。用X[i]存储第i+1发导弹的高度,用Y[j]来存储第j+1套系统的所能阻截的最大高度,每次阻截都得将阻截的高度赋给Y[j]。然后看一共需要多少套系统就OK了。代码:#include <stdio.h>#define M 100000int x[M],y[M];int main(){ int n,i,j,c; while(scanf("%d&q 阅读全文
posted @ 2011-10-02 13:55 找回失去的 阅读(190) 评论(0) 推荐(0)