自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

皓首不倦 不负少年

永远向大神们看齐,欢迎志同道合技术爱好者加微信CODER-GRH,非技术人员勿扰

  • 博客(67)
  • 资源 (17)
  • 收藏
  • 关注

原创 uva 10112 Myacm Triangles

这道题需要用到三角形的面积公式,用二维向量的外积解决,0.5*|a叉乘b| = 0.5×|a|*|b|*sin(ab夹角) = 三角形的面积,判断一个点是不是在三角形里面或是在其边上,判断这个点和这个三角形的三个顶点形成的三个三角形的面积和是不是和大三角形的面积相等就行了,注意浮点数的比较不能用==,要用fabs。书上的基础题目终于做完了,有个别几道题一直wrong answer不知怎么回事,以后

2013-09-30 11:50:23 457

原创 uva 10387 Billiard

分析问题时,可以将速度分为水平方向和垂直方向的分量,简单推导之后,可以发现,最后球回到中点的时候,水平方向和垂直方向的路程分别为m*a和n*b,这样垂直方向和水平方向的速度分量比就是(n*b)/(m*a),这样所求角度的正切值就出来了,注意处理90度的特殊情况,然后用路程处以时间,速度的绝对值就出来了,将水平和垂直方向的速度值算平方和开根就是题目求的速度了。#include #inclu

2013-09-30 10:23:03 657

原创 uva 375 Inscribed Circles and Isosceles Triangles

本身是道简单题,但是因为精度问题卡了半天,以后要注意浮点数计算的时候,尽量减少复杂的浮点运算次数,以免丢失精度。#include #include #define PI (acos(-1.0))char buffer[100];int case_count;double get_r(double b, double h){ //printf("b=%lf h=%lf\n

2013-09-29 18:51:12 589

原创 uva 579 ClockHands

简单题,不多说了。#include #include void func(int h, int m){ double h_angle, m_angle; double angle; h = h%12; h_angle = (h*60+m) / double(60*12); m_angle = m/(double)60; angle = fabs(h_angle-m

2013-09-29 15:44:02 790

原创 10250 The Other Two Trees

这道题乍看之下有些困难,其实题目的意思是告诉两个点的坐标,以这两个点连线作为直径画一个圆,然后求圆上面另外两个点连线过圆心且连线和前面的直径垂直。我的做法是首先求出两个点的中心点,然后平移中心点坐标到原点,题目告诉的两个点也一样平移,假设移动之后两个点中有一个点的坐标为(a,b),那么所求的点平移之后的坐标就分别为(b,-a)和(-b,a),这个根据两向量垂直其向量内积为零以及向量的长度的公式

2013-09-29 15:28:14 517

原创 uva 10879 Code Refactoring

简单到让人不敢相信#include void func(int n){ int i; int a, c; int count; count = 0; for(i=2; i<=n-1; i++) { if(2 == count) break; if(n%i == 0) { if(0 ==count) a = i; else

2013-09-29 14:08:40 471

原创 uva 10392 Factoring Large Numbers

直接枚举,注意数字大于1000000且为质数的情况要特殊处理。#include #include int prime_table[1000000];bool is_prime(int n) { int i, end; bool f; if(1 == n) return false; if(n!=2 && n%2==0) return f

2013-09-29 13:51:37 563

原创 uva 10061 How many zero's and how many digits ?

这道题稍微有一点麻烦,求总共占多少个位数比较好解决利用对数就可以轻松得出答案,但是要求最后由多少个0,需要分析一下问题,只要在阶乘的过程中出现了一个基数,就会在最后的结果里面多一个0,所以先将基数分解质因数,看每个质因数究竟需要多少个才能相乘得出一个基数,然后对参与阶乘的n个数分别进行分解,能够提取出基数的质因数的,就将质因数提取出来,统计所有可能提取出的质因数的个数,根据这个统计结果对比形成每一

2013-09-29 11:22:31 918

原创 uva 350 Pseudo-Random Numbers

模拟运算的过程就行了,注意不要用数组来保存运算结果,其实运算过程只需要一个数字最后出现的位置就行了,用map来存储正好合适。#include #include using namespace std;typedef int NUM;typedef int LAST_POS;map m;int case_count;void func(int Z, int I, int

2013-09-28 20:45:06 981

原创 uva 408 Uniform Generator

就是判断输入的两个数是不是互质。用欧几里得算法求最大公约数,如果结果为1就说明两个数互质了。#include void func(int a, int b){ int aa, bb, t; aa = a; bb = b; while(1) { t = aa; aa = bb%aa; bb = t; if(aa == 0) break; }

2013-09-28 20:21:27 497

原创 uva 568 Just the Facts

这道题中,阶乘里面每出现一个5,最后的阶乘里面最后就会多一个0(25这样的数字算2个5),所以,所有能够被五整除的数字在做乘法的时候要把数字里面的5全部去掉,每出现一个5就要在偶数里面扣掉一个2形成10,这个10就和我们这道题最后的答案没有关系了,然后利用取模运算的性质:(a*b)%c = ((a%c)*(b%c)) % c 这样阶乘大数越界的问题也就解决了。下面是代码:#include

2013-09-28 16:49:58 597

原创 uva 550 Multiplying by Rotation

模拟乘法的过程,当乘积的新得到的一位和a0相同且进位为0的时候,就达到了factor1的最小长度。代码:#include void func(int base, int a0, int k){ int jinwei; //进位数 int count, fac1_bit, mul_bit; count = 0; fac1_bit = a0; jinwei = 0;

2013-09-28 16:07:31 553

原创 uva 10110 Light, more light

其实就是判断n的因子个数是奇数还是偶数,除了平方数意外所有的数的因子个数都是偶数,所以问题变为判断一个数是不是平方数#include #include void func(unsigned int n){ double x; x = sqrt((double)n); if(x == floor(x+0.5)) printf("yes\n"); else prin

2013-09-28 15:18:46 455

原创 uva 575 Skew Binary

简单题目,纯当练手#include #include int bin[32];char buffer[100];void init(){ int i; for(i=1; i<=31; i++) { bin[i] = (1<<i)-1; }}void func(){ int i, j; int sum; sum = 0; for(i=strlen

2013-09-28 14:12:59 643

原创 uva 10014 Simple calculations

根据递推公式可以推出an的计算公式, 可以用数学归纳法证明,这里从略了:下面是代码:#include double c[3005];char buffer[200];void func(int n, double a0, double an1){ int i; double sum; double x; sum = 0.0; x = 2.0; for(i=

2013-09-28 13:43:17 479

原创 uva 10970 Big Chocolate

太简单了,不多说了。#include int main(void){ int m, n; while(scanf("%d %d",&m,&n) != EOF) { printf("%d\n", m*n-1); } return 0;}

2013-09-28 11:36:25 446

原创 uva 10916 Factstone Benchmark

利用对数的性质#include #include double a[260000];int b[260000];void init(){ int i; for(i=1; i<260000; i++) { a[i] = a[i-1] + log((double)i)/log(2.0); } for(i=1; i<260000; i++) { b[i] =

2013-09-27 18:56:15 601

原创 uva 10177 (2/3/4)-D Sqr/Rects/Cubes/Boxes?

找规律的题目,注意大数据溢出问题,所以所有变量都使用了double#include void func(int n){ double s2, r2, s3, r3, s4, r4; double i, j; double max_i, max_j, max_k, max_l; s2 = 0; s3 = 0; s4 = 0; r4 = 0; for(i=1; i<=n;

2013-09-27 17:14:24 470

原创 uva 10719 Quotient Polynomial

按照分解多项式的方法做就行了,简单题目#include #include using namespace std;stack s;char buffer[400];int a[10005];int b[10005];void func(int n, int k) //n代表p(s)里面的最高次幂的次数{ int i; long long r; for(i=n-1;

2013-09-26 17:54:26 480

原创 uva 11044 Searching for Nessy

太简单了,不多说了。#include long long func(int m, int n){ long long sum; sum = 0; if((m-2)%3 == 0) sum += (m-2)/3; else sum += (m-2)/3 + 1; if((n-2)%3 == 0) sum *= (n-2)/3; else sum *= (n-

2013-09-26 16:49:15 494

原创 uva 10790 How Many Points of Intersection?

假设上面和下面分别有m个点和n个点,可以推导出最多的交点个数为m*n*(m-1)*(n-1) / 4. 这样程序就非常简单了。#include int case_count;long long func(int m, int n){ return (long long)(m)*(long long)(n)*(long long)(m-1)*(long long)(n-1) / 4;

2013-09-26 16:31:46 437

原创 uva 10499 The Land of Justice

所有做过的题目里面最简单的一道,但是要注意n=1的时候的特殊情况的处理。#include #include void func(int n){ double res; if(n != 1) { res = n/4.0; res *= 100; } else { res = 0.0; } printf("%lld%%\n", (long long)floo

2013-09-24 22:20:36 521

原创 uva 846 Steps

先求出走n步能够最大走的距离,然后找到最小的n使得这个距离大于等于需要走的距离就行了,先求出100000以内的步数对应的最大距离,然后用二分法进行搜索就行了。#include #define MAX_STEPS 100000long long step[MAX_STEPS+1]; //step[i]表示走i步最多可以前进的格子数void init(){ int i; s

2013-09-24 21:08:15 518

原创 uva 573 The Snail

一道简单题目,把题目的逻辑分析清楚,模拟爬行的过程就行了。#include void func(int h, int u, int d, int f){ /* h---井的高度 u---第一个白天能够爬的高度 d---晚上下滑的高度 f---疲劳因子 */ double delete_height; delete_height = u*(f/100.0);

2013-09-24 20:41:28 496

原创 uva 107 The Cat in the Hat

一道数学题目,根据条件可以把N和分裂次数k列成两个次幂表达式,消去k得到关于N的对数关系式,可以用枚举的方式求出N,进而求出k,然后答案就容易求出来了。#include #include int find_N(int A, int B){ int i; for(i=1; i<=1000000; i++) { if( fabs(log((double)A)*log((doubl

2013-09-24 19:54:21 628

原创 uva 591 Box of Bricks

平均数简单题目#include #define MAX_LEN 51int h[MAX_LEN];int case_count;void func(int n){ int i; int sum, aver; sum = 0; for(i=0; i<n; i++) sum += h[i]; aver = sum/n; sum = 0; for(i=0;

2013-09-24 16:07:29 606

原创 uva 621 Secret Research

一道简单到爆的题目,不多说了。#include #include char buffer[1000];int main(void){ int i, n, len; gets(buffer); sscanf(buffer, "%d", &n); for(i=1; i<=n; i++) { gets(buffer); if(!strcmp(buffer,"1")

2013-09-24 14:25:28 577

原创 uva 253 Cube painting

一道简单题,把所有情况列举出来进行对比就行了,原来的顶面可能在旋转后出现在六个面任意一个,当顶面固定的时候,以顶面和底面的连线为轴旋转,会出现4中组合,把所有情况都考虑到就行了,我用的是暴力解法。#include #include char color1[8];char color2[8];void func(){ char temp[8]; int i; bool f;

2013-09-24 14:00:56 582

原创 uva 10161 Ant on a Chessboard

对于这道题,我的思路是先列出矩阵的对角线元素的行列值对应的序号(行列值是一眼的,这样一个一维数组就够存储了),然后用二分法去搜索序号为n的点夹在哪两个对角线节点之间,然后再在这两个对角线节点之间寻找正确的坐标点,注意行列值为1的时候和行列值为其他的奇数和偶数的时候,总共要分成三种情况来处理,因为对角线节点的行列值不一样的话,点的下一步移动方向不同。下面是AC代码。#include #incl

2013-09-24 10:57:13 906

原创 uva 113 Power of Cryptography

二分法,不多说了,一开始在纠结大数字该怎么办,后来发现32bit环境下double最大值是1.7e+308,完全够用了。#include #include #include int func(double n, double p){ int l, r, m; double v; l = 1; r = 1000000000; while(1) { m = (l+r)/

2013-09-24 09:57:29 575

原创 uva 10785 The Mad Numerologist

一道简单题目,可以方便求出元音有多少个,辅音有多少个,然后筛选每个字符多少个能够使得分数最低,然后分别构造元音序列和辅音序列,把字典序排前面的字符优先放到序列前面就保证了字典序最小了。#include #include #include #include #include #include using namespace std;vector vow; //元音vector

2013-09-23 20:46:33 525

原创 uva 755/poj 1002 487-3279

一道简单题目,在uva上提交一直submission error,最后在poj上找到了一样的题目,数据的读入方式有些不一样,下面的代码是poj1002的代码:#include #include #include #include #include #include using namespace std;map m;map change_map;void init(){

2013-09-23 19:13:18 606

原创 uva 123 Searching Quickly

一个小bug调试了很长时间,在判断title里面有没有对应的单词的时候,使用的是strstr函数,但是没有注意判断子串的前后是不是空格或是\0,太失败了,出这种傻逼的错,wrong了十几次,以后一定要小心了。#include #include #include #include #include #include using namespace std;set ignore_w

2013-09-23 16:30:33 549

原创 uva 400 Unix ls

这道题的要点是首先必须算出最少要分的行数,也就是求最多可以分多少列,分的列数如果使得一行的总宽度大于60就到达列数的上界了,根据分的列数和行数以及单词的序号可以求出单词在最后打印出来的时候的行数和列数,根据这个行数和列数更新打印的缓存就行了,最后一次把缓存全部打印出来就行了,不要用printf一行一行地打印,这样去判断对齐不是很方便,直接用一块二维矩阵缓存所有最后要打印的内容要方便得多。#

2013-09-23 10:30:46 633

原创 uva 156 Ananagrams

这道题的大意是要判断两个字符串里面的字符如果大小写不敏感打乱顺序后能不能互相转换,其实判断的方法很简单,将两个字符串里面所有字符全部转为小写,然后对字符排序,如果两个原始字符串得到的转换后的字符串是一样的,说明两个字符串可以互相转换,反之则不行,注意最后要求用字典序打印结果,先一步一步得出每一个字符串是不是题目要求的类型,然后将符合条件的字符串插入到集合里面,自然就是按字典序列排序的了,最后用一个

2013-09-22 17:03:26 615

原创 uva 120 Stacks of Flapjacks

模拟搬移的过程,搬移的方法是将当前剩余的球里面号数最小的排到最后面,然后再交换一次,移动到正确的位置上。#include #include #include #include #include #include using namespace std;#define MAX_LEN 100int pos[MAX_LEN]; //表示大小为pos[i]的球在位置icl

2013-09-22 16:00:57 586

原创 uva 299 Train Swapping

简单题目,模拟冒泡排序就行了,开始把问题想复杂了。#include #define MAX_LEN 60int pos[MAX_LEN]; //pos[i]表示排在位置i的球的号数为pos[i]void func(int len){ int i, j; int count, t; count = 0; for(i=len-1; i>=1; i--) { for

2013-09-21 22:19:00 488

原创 uva 152 Tree's a Crowd

暴力解法加简单的剪枝#include #include #include #include #define TREE_NUM 5005struct node{ double x; double y; double z;};double node_length(struct node *p){ return sqrt(p->x*p->x+p->y*p->y+

2013-09-21 20:23:13 513

原创 uva 10474 Where is the Marble?

快排加二分查找#include #include #include #define MAX_LEN 10005int pos[MAX_LEN]; int case_count;int cmp(const void *a, const void *b){ return *((int*)a) - *((int*)b);}//二分法对结果查找int find(int

2013-09-20 20:36:07 508

原创 uva 10420 List of Conquests

set 和 map的嵌套应用,很搞笑的是typedef map> Record;这样在wendows下面编译可以过,但是跑到服务器上面的gnu g++就变异过不了了,要这样:typedef map > Record;  (就少了一个空格,也不至于编译报错这么严重吧?),下面是AC代码:#include #include #include #include #include #incl

2013-09-20 19:44:41 511

计算机图形学实验七(交互式图形程序设计)

本人自己亲自完成的七个计算机图形学实验之七,需要参考的就下吧,我只为赚取积分。

2011-08-08

计算机图形学实验六(真实感图形程序设计)

本人自己亲自完成的七个计算机图形学实验之六,需要参考的就下吧,我只为赚取积分。

2011-08-08

计算机图形学实验五(三维图形变换程序设计)

本人自己亲自完成的七个计算机图形学实验之五,需要参考的就下吧,我只为赚取积分。

2011-08-08

计算机图形学实验四(二维图形变换程序设计)

本人自己亲自完成的七个计算机图形学实验之四,需要参考的就下吧,我只为赚取积分。

2011-08-08

计算机图形学实验三(OpenGL图形程序设计)

本人自己亲自完成的七个计算机图形学实验之三,需要参考的就下吧,我只为赚取积分。

2011-08-08

计算机图形学实验二(基本图形生成算法)

本人自己亲自完成的七个计算机图形学实验之二,需要参考的就下吧,我只为赚取积分。

2011-08-08

西南交大计算机图形学实验1源码

本人自己亲自完成的七个计算机图形学实验之一,需要参考的就下吧,我只为赚取积分。

2011-08-08

轻松汇编2.7最新版以及修改字体办法

轻松汇编是一个适合汇编初学者使用的编程环境,有拥有友好界面和单步调试的强大功能,并且可以通过视窗直观看到各个寄存器的数值变化,非常适合初学汇编编程的人使用,很容易上手,原版不能更换字体,压缩包中特附上字体修改办法的文档。赶快下载,开始轻松的汇编之旅吧!

2010-09-13

VisualAssist1827以及破解补丁

Visual Assist 插件,可用于vc6.0,vs2005,vs2008,vs2010,可以智能分析代码,高亮标注,智能提示,行家一定知道有多爽,不用多说了,要下的赶快吧!!!

2010-09-03

大学英语4综合教程课文翻译

大学英语4综合教程的翻译,有英文原文和中文翻译

2010-06-29

大学电路分析习题完整答案

我从师兄那里搞到的电分答案,做作业和分析的时候可以参考一下,绝对是难得的好东东。

2010-04-30

ACM培训专用电子书

经典的ACM培训电子教案,pdf格式,要下的赶快,适合初学者用,绝对好东西,不下后悔。

2010-04-30

绝好的J2EE入门级教案,公司培训资源放血奉送

本人在公司中接受培训时保留下来的J2EE培训教程,十分难得,好不容易从讲课的牛人那搞到的,要下就赶快吧!

2010-04-02

西南交大ACM离线题库

兄弟我向ACM协会的高手们求了好久才弄到手的,挥泪共享啊,大家要下的赶快啊,共有两千多道题,绝对可用,想参加ACM的赶快下吧!

2010-03-28

模电康华光主编第五版完整答案pdf

完整的模电五版答案,康华光主编版的,我找了好久才找到的,要下的赶快啊,不下要后悔的哦!

2010-03-28

Tomcat5.5.20

Java编程用的数据库软件,绝对能按能用,童叟无欺,要用的赶快下啊!

2010-03-05

mssql2000精品教程

数据库的基础教程,讲解SQL语言的基本用法,要学数据库最好先看看,适合入门的同学使用。

2010-01-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除