poj
cyl纤云弄巧
To Be
展开
-
PO J2602 大数相加
poj 2062题意是两个大数相加,第一行输入两个数的位且位数相等。然后每行输入两个数字分别是从两个大数最高位输起。方法一:数组。注意数组输出速度慢易超时建议用putchar();本人亲测比printf();快1S左右。#include#define M 1000005int a[M],b[M],c[M];int main(){ int i; int w;原创 2016-03-18 23:45:04 · 599 阅读 · 1 评论 -
POJ 1006
对于这道题最开始害怕于纯英语题目的长度,但是细细看起并不难 题意:关于日期的p,e,i,d;前三个是高峰期的具体时间,起循环周期分别是23,28,33。d是现在的时间求下一个高峰期多少天之后来临。 这很像求公倍数但是得注意与现在的时间差。#include<stdio.h>int main(){ int p,e,i,d,n=1,ex=0; while(scanf("%d%d%d原创 2016-03-20 23:51:38 · 387 阅读 · 0 评论 -
poj1017 最优解问题
题意:有六种高度相同的盒子x*x,现在输入每一种盒子的个数,求用6*6的盒子最少用几个。 这道题看似简单,但是考验的是算法的优化,一种简便的算法感动了我。这个方法不是我想到的。 直接代码:#include<stdio.h>int main(){ int b1,b2,b3,b4,b5,b6; while(scanf("%d%d%d%d%d%d",&b1,&b2,&b3,&b4,原创 2016-04-03 17:49:13 · 679 阅读 · 0 评论 -
poj 2249 排列组合问题
题意:输入两个数,m,n;计算C(m,n)。 乍一看难度不高,但是有许多细节需要注意数值的范围,很大,需要用double。不能过多用for循环,否则会超时。相乘与相除的次数可以转换为一样的。 #include<stdio.h>int main(){ double m,n,i,p; double a; while ( scanf("%lf%lf",&m,&n)!=原创 2016-03-24 00:15:15 · 513 阅读 · 0 评论 -
POJ 1008 (模拟)
题意:玛雅日历有两种,第一种一年365天19个月前18个月每月20天,第19月5天,第二种日历是一年260天,13个月每月20天,每月有两种计算天数的一种是英文,一种是1~13天。题外话:现在为止我还是极少接触算法,这道题听说是简单的模拟题。虽然我的bug太多改了很久,但是我还是觉得极大增强了我的信心。#include#includechar Haab[25][10] = {"pop"原创 2016-05-26 01:15:01 · 407 阅读 · 0 评论 -
poj 1936
题意:输入两个字符串a,b,判断a,是否包含b. 仿佛听见了心碎,如此水题。我却wa了好久!!! 注意细节:细节决定成败 直接代码。#include<stdio.h>#include<string.h>#define M 100005char a[M],b[M];int main(){ long int m,n; while(scanf("%s%s",a,b)!=EO原创 2016-04-18 23:55:50 · 313 阅读 · 0 评论 -
poj 1705
题目比较长并且是英语。 题意: 输入字符串比较与之前输入的字符串前i1个字母相同。前i个字母相同的话输出i个空格(其中还有有一个条件是i1要与上两个字符串相同的i2比较,若小于i2则输出i1个空格,大于i2则输出i2+1个空格),之后再输出此字符串。 首先我用了一个比较笨的方法,但是比较杂乱。为了比较答案,用了 freopen(“input.txt”,”r”,stdin); freo原创 2016-04-20 00:03:57 · 487 阅读 · 0 评论 -
POJ 1013 (简单模拟)
题意:有一个天平,和12枚硬币(有一枚是假的),用A~L表示,但是不一定每个字母都会出现。现在有三次称量结果,求一枚假硬币,每个样例都有解。这个问题可以利用标记的次数来判断,标记的次数越多则可以认为是假的。abs()函数求绝对值,头文件是#include#include#include#include#includeint main(){ int n; sca原创 2016-05-30 18:51:07 · 429 阅读 · 0 评论 -
POJ 1003 (水题)
题意:给一个长度C,问卡片需要几张才能大于等于C,卡片伸出长度规律:最上边的为伸出1/2,接着下边的为1/3,1/4·····#include<stdio.h>int main(){ double c; while(scanf("%lf",&c) != EOF) { if(c == 0.00) break; int原创 2016-05-18 20:41:15 · 492 阅读 · 0 评论 -
POJ 1007(稳定排序)
题意就不多说了。 要点1:稳定排序对于此题来说需要对类排序,用到sort函数,并且需要自己定义一个bool函数。 要点2:对结构体排序是对其公共变量逆序数排序的,所以要算逆序数。 对于sort函数:此网站有详细的解释。 http://www.jb51.net/article/54863.htm#include<iostream>#include<algorithm>using nam原创 2016-05-18 22:26:36 · 553 阅读 · 0 评论 -
POJ 1046 (枚举,类)
题意:输入16组三个数组成的数,可以想象为空间坐标,然后求下边输入每一组数的最近坐标,以三个-1结束,输出格式看样例。题看起来很难但是重要的是思路,现在发现类很好用。while()语句用法也要注意。#includeusing namespace std;class Color{public: float a,b,c;};int main(){ Color A[原创 2016-05-19 17:32:44 · 407 阅读 · 0 评论 -
POJ 1118(斜率,排序,找到最大的简单方法)
题意:给出n个点坐标,求最多能有几个点在一条直线上。思路:需要求每一个点和其余点的斜率。然后排序,找到出现同一个斜率的最多的个数,记着这个数,然后和下一次比较取最大。要点1:排序注意竖直线没斜率。要点2:和上一次比较容易出错。要点3:每个数的初值要注意。易犯的错误代码:#include#includeusing namespace std;#includeint m原创 2016-05-19 20:20:00 · 825 阅读 · 0 评论 -
POJ 1207 (跟着题意走)
题意:题中给出了一个循环公式,当n为奇数时候n = 3*n + 1,为偶数时n = n/2;求出区间(i,j)包括i,j的最大循环次数。注意:输入i不一定小于j。法一:暴力。#includeint main(){ int n,m; while(scanf("%d%d",&n,&m) != EOF) { int i,j;原创 2016-05-19 21:15:30 · 391 阅读 · 0 评论 -
poj 1477(超级水题)
题意:把不同高度的stack搬运平均,求最小搬砖的数。#include#includeint main(){ int n,a[55]; int numb = 0; while(scanf("%d",&n) != EOF && n != 0) { int sum = 0; numb++; for(int i =原创 2016-06-01 23:14:38 · 476 阅读 · 0 评论 -
POJ 1493(水题)
#include#include#includeusing namespace std;int main(){ int n; char a[30]; int numb[30]; while(scanf("%d",&n) != EOF && n) { int maxn = 0,m; getchar(); //注意原创 2016-06-02 17:56:13 · 293 阅读 · 0 评论 -
POJ 1250 (水题)
题意:有n个房间,字母表示人,每个字母出现两次,分别表示进入、进出。若房间足够则输出All customers tanned successfully.否则输出流失的人数。水题不要想复杂。善于用数组。#include#include#includeint main(){ int n; bool a[30]; //记录离开或者进入 me原创 2016-05-21 17:25:42 · 414 阅读 · 0 评论 -
POJ 1543(暴力)
题意:求满足a*a*a = b*b*b + c*c*c + d*d*d的,四个数。#includeint main(){ int n,a,b,c; scanf("%d",&n); for(int i = 2; i <= n; i++) for(a = 2; a < i; a++) for(b = 2; b < i; b++)原创 2016-06-04 15:54:15 · 341 阅读 · 0 评论 -
POJ 1552 (一次水过)
题意:给出一行数字,最后一个数是0,求这一行数字之中有多少是满足a *2 = b.主要是输入,和判断,可以先排序。#include#includeusing namespace std;#includeint main(){ int a[20]; while(scanf("%d",&a[0]) != EOF && a[0] != -1) {原创 2016-06-04 16:20:58 · 412 阅读 · 0 评论 -
POJ 1575 (字符串处理)
题意:判断密码是否通过:1 必须有元音;2 不能同时出现三个元音或者辅音;3 不能连续出现一样的字母除了“ee”、“oo”。#include#includeint main(){ char a[200]; while(scanf("%s",a) != EOF) { if(strcmp(a,"end") == 0) break原创 2016-06-05 18:35:22 · 391 阅读 · 0 评论 -
POj 1580(字符串处理)
题意:比较两个字符串,位置相同的记录,可以移动比较求最大的位置相同数。样例给的很明确。最开始只从一边移动比较,后来发现AAAB,BAAA样例,才明白。刚开始开了四个字符串组:#include#includeint main(){ char a[100],b[100],c[100],d[100]; while(scanf("%s",a) != EOF) {原创 2016-06-06 21:07:54 · 397 阅读 · 0 评论 -
POJ 1318 (排序,sort函数)
//开阔思维,怎么简单怎么来#include#include#include#includeusing namespace std;int main(){// freopen("input.txt","r",stdin); char words[101][10],str[10],str1[10]; int i,j,length1,length2,s = 0;原创 2016-07-24 23:59:03 · 404 阅读 · 0 评论 -
POJ 1657 (abs函数)
为数不多的汉语题。方法:王后车象需要单独考虑即可,最难的是象分三种情况。注意点:c++中取绝对值函数abs的头文件是#include#include#includeint main(){ int n; scanf("%d",&n); while(n--) { char a[3],b[3]; scanf("%s原创 2016-06-19 15:30:38 · 300 阅读 · 0 评论 -
POJ 1001(大数相乘)
POJ1001题意:输入m,n 求m的n次方。/*需要注意的点太多了,没事就多打几遍*/#include#include#includeusing namespace std;int point;void ridzero(char a[]){ int i; i = strlen(a) - 1; while(a[i] == '0'){原创 2016-07-27 14:49:27 · 371 阅读 · 0 评论 -
POJ 1331(确定进制)
题意:可以看百练2972现在要逐渐使用函数来减少主函数的复杂程度。使程序清晰。做题方法:判断p*q = r,因为long足以表示,所以可以先转化为10进制,然后从进制2~16遍历即可。用到的算法是秦九韶算法。#include#includelong bten(char *x,int b){ long ret = 0; int lenth = strlen(x)原创 2016-06-21 23:23:36 · 470 阅读 · 0 评论 -
POJ 1308(简单并查集)
此博客详细介绍了并查集的基本概念:并查集的初级应用及进阶 POJ1308:题意是输入每两个的数第二个的父亲是第一个数,判断输入结束之后是否是一颗树的结构。#includeint father[10020];int Find_it(int x){ int temp = x,t; while(father[temp] != temp) temp =原创 2016-07-28 16:30:24 · 353 阅读 · 0 评论 -
POJ 2236(简单并查集)
POJ2236 题目大意:有n台电脑,因为某些原因只能在d距离内进行交流,输入n台电脑的坐标判断能否连接。 思路:建立并查集两个基本函数“查找”“合并”,用use数组存储能电脑是否修好。合并的条件是电脑之间距离是否为 #include#include#define M 1010bool use[M];int distance;struct Node{ i原创 2016-07-28 21:25:02 · 491 阅读 · 0 评论 -
POJ 1565 百练 2973(skew进制问题)
题意:输入一个skew binary 表示的数,第k位的进制为2的k+1次方减1。用十进制输出。法一:直接算出第k位的进制。#include#includeint main(){ char numb[1000]; int length; while(scanf("%s",numb) != EOF) { if(strcmp(num原创 2016-06-23 09:04:50 · 329 阅读 · 0 评论 -
POJ百练2798 (2进制转化16进制)
题意:百练2798方法:利用2进制的4位表示一位16进制要点:1:pow函数,用的时候注意参数类型,C++有很多类型。 2:2进制不足4位的情况。#include#include#includeint main(){ char input[10005]; int i,temp,length,Case; scanf("%d",&Case);原创 2016-06-23 11:32:18 · 559 阅读 · 0 评论 -
POJ1426(简单广搜)
POJ1426题意:输入一个数求其倍数(由01组成)。广搜的初学者,感觉这个很容易理解。因为在搜索的过程中可能会出现较大的数,所以开long long型的队列。#include#includeusing namespace std;void bfs(int n){ queueq; q.push(1); long long x ; whil原创 2016-08-02 10:12:46 · 422 阅读 · 0 评论 -
POJ 3278(简单广搜)
POJ3278题意:输入n,m,求由n到m需要最少步数,n只能加一减一或者乘二。写的第二道广搜题,发现用队列就是每一种可能读入队尾,然后再从队首一个一个的遍历。需要做的是判断条件和记录步数。#includeusing namespace std;#include#include#include#define M 200000int key[M];int visit原创 2016-08-02 10:48:19 · 544 阅读 · 0 评论 -
POJ Floyd入门
POJ1125POJ2240题:题:原创 2016-08-04 17:39:33 · 610 阅读 · 0 评论 -
3299 (入门水题 套公式)
POJ3299题意:给你H,D,T,任意的两个个输出这三个。题目中有公式,不过还是学到了知识。1:log 的用法。2:exp(x)是e的x次方。3:简化问题的思想。#include#include#includeusing namespace std;int main(){ char a; float T,D,H; whil原创 2016-08-17 16:13:09 · 296 阅读 · 0 评论 -
POJ 1860 (反向bellman用法)
Currency ExchangeTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 26659 Accepted: 9850DescriptionSeveral currency exchange points are working in our city.原创 2016-08-06 18:07:28 · 325 阅读 · 0 评论 -
POJ 1068 (括号模拟)
http://poj.org/problem?id=1068题意:其实这道题很直接,p是每一个)之前有多少(,w是一个()内包括自身有多少个()。思路:直接的模拟:1 还原括号。2:找出w。可以用一个数组0,1来模拟)(。#include#includeint main(){ // freopen("in.txt","r",stdin);原创 2016-08-28 14:29:22 · 508 阅读 · 0 评论 -
POJ 2739(优化,也可以无敌打表)
http://poj.org/problem?id=2739题意:输入一组数,问连续素数和等于它的有几种情况。#include#includeusing namespace std;int prim[10005];int prime(int n){ if(n == 1) return false; if(n == 2) return tr原创 2016-08-18 10:50:32 · 394 阅读 · 0 评论 -
POJ3259(经典bellman判断负权)
POJ3259题意:有n个虫洞,问有从一些虫洞穿行过程中因为时间的快慢能遇到自己吗?相对论。其实题很简单,就是问有没有负权的存在,若有将会一直松弛。#includeusing namespace std;#define INF 0x3f3f3f3f#define M 5200int dist[M];int n,m,f;int all;class Node原创 2016-08-08 15:13:26 · 340 阅读 · 0 评论 -
POJ 2262 (简单素数判定 ,需要优化)
http://poj.org/problem?id=2262题意:哥德巴赫猜想;一个数哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和。题中给出的范围是成立的,所以不用考虑:Goldbach's conjecture is wrong.这道题让我知道了,想问题的原创 2016-08-19 16:44:52 · 324 阅读 · 0 评论 -
POJ 1062(昂贵的聘礼 枚举 + Dijkstra)
POJ1062这道题是中文题,不多说,但是问题是数据可能不易看懂,比如样例的10000 3 2 分别是原价,等级,和可能兑换物品的数量,接下来是两行可能兑换的物品及另需要的钱。#include#includeusing namespace std;#define INF 0x3f3f3f3f#define Maxn 200int M,N;int price[Ma原创 2016-08-08 18:05:19 · 427 阅读 · 0 评论 -
POJ 2253(floyd 条件改变)
POJ 2253题意:有很多坐标,求点一到点二的每个通路之中最长的距离,输出最长的距离之中最短的那个。这道题无关最短路,利用Floyd的遍历,但是关键在于条件。#include#include#includeusing namespace std;double path[210][210];class coordinate{public:原创 2016-08-08 21:08:38 · 321 阅读 · 0 评论 -
POJ 1125 (经典水题 floyd)
POJ1125题意:众所周知,证券经纪业依靠的就是过度的传言。您需要想出股票经纪人中传播假情报的方法,让您的雇主在股票市场的占据优势。为了获得最大的效果,你必须蔓延最快的方式谣言。不幸的是你,股票经纪人信息只信任他们的“可靠来源”,这意味着你在你传播谣言之前必须考虑到他们的接触结构。它需要特定股票经纪人和一定的时间把谣言传递给他的每一位同事。你的任务将是写一个程序,告诉您选择哪一个原创 2016-08-09 14:38:35 · 2823 阅读 · 0 评论