代码改变世界

随笔分类 -  ACM/ICPC

【菜鸟做水题】:杭电 find your present(用异或的解题思想)

2012-09-03 21:30 by ATP_, 332 阅读, 收藏,
摘要: Problem DescriptionIn the new year party, everybody will get a "special present".Now it's your turn to get your special present, a lot of presents now putting on the desk, and only one of them will be yours.Each present has a card number on it, and your present's card number will b 阅读全文

【菜鸟做水题】:杭电 hide handkerchief (辗转相除判断2数互质)

2012-09-03 20:28 by ATP_, 290 阅读, 收藏,
摘要: Problem DescriptionThe Children’s Day has passed for some days .Has you remembered something happened at your childhood? I remembered I often played a game called hide handkerchief with my friends.Now I introduce the game to you. Suppose there are N people played the game ,who sit on the ground form 阅读全文

【慢慢学算法】:数组排序(一题多做)

2012-07-14 10:22 by ATP_, 1683 阅读, 收藏,
摘要: 题目描述:输入一个数组的值,求出各个值从小到大排序后的次序。输入:输入有多组数据。每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。输出:各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。样例输入:4-3 75 12 -3样例输出:1 3 2 1//单纯使用map,利用map中键唯一的特性#include<iostream>#include<map>#include<algorithm>using namespace std;int A[10010], B[10010];int main(){ 阅读全文

【慢慢学算法】:查找第k小数

2012-07-13 09:43 by ATP_, 815 阅读, 收藏,
摘要: 题目描述:查找一个数组的第K小的数,注意同样大小算一样大。如 2 1 3 4 5 2 第三小数为3。输入:输入有多组数据。每组输入n,然后输入n个整数(1<=n<=1000),再输入k。输出:输出第k小的整数。样例输入:62 1 3 5 2 23样例输出:3#include<iostream>#include<fstream>#include<algorithm>using namespace std;int main(){ int n; while(cin >> n) { int a[n]; int flag = 1; //注意fl 阅读全文

【慢慢学算法】:位运算练习

2012-07-13 08:30 by ATP_, 475 阅读, 收藏,
摘要: 题目描述:给出两个不大于65535的非负整数,判断其中一个的16位二进制表示形式,是否能由另一个的16位二进制表示形式经过循环左移若干位而得到。循环左移和普通左移的区别在于:最左边的那一位经过循环左移一位后就会被移到最右边去。比如:1011 0000 0000 0001 经过循环左移一位后,变成 0110 0000 0000 0011, 若是循环左移2位,则变成 1100 0000 0000 0110输入:第一行是个整数n, 0 < n < 300000,表示后面还有n行数据后面是n行,每行有两个不大于65535的非负整数输出:对于每一行的两个整数,输出一行,内容为YES或NO样例 阅读全文

【慢慢学算法】:奇偶校验(bitset使用)

2012-07-12 21:56 by ATP_, 839 阅读, 收藏,
摘要: 题目描述:输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如'3’,输出:10110011)。输入:输入包括一个字符串,字符串长度不超过100。输出:可能有多组测试数据,对于每组数据,对于字符串中的每一个字符,输出按题目进行奇偶校验后的数,每个字符校验的结果占一行。样例输入:33a样例输出:101100111011001101100001#include<iostream>#include<string>#include<bitset>using namespace std;int main(){ string s; while( 阅读全文

【慢慢学算法】:最小年龄的3个职工(sort对结构体的多级排序)

2012-07-12 21:43 by ATP_, 480 阅读, 收藏,
摘要: 题目描述:职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。输入:输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。接下来的N行有N个职工的信息:包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。输出:可能有多组测试数据,对于每组数据,输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。关键字顺序:年龄>工号>姓名,从小到大。样例输入:5501 Jack 6102 Nathon 100599 Lily 79923 Lucy 15814 Mickle 65样例输出:501 J 阅读全文

【慢慢学算法】:成绩排序(qsort对结构体的多级排序)

2012-07-12 21:37 by ATP_, 2699 阅读, 收藏,
摘要: 题目描述:用一维数组存储学号和成绩,然后,按成绩排序输出。输入:输入第一行包括一个整数N(1<=N<=100),代表学生的个数。接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。输出:按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。如果学生的成绩相同,则按照学号的大小进行从小到大排序。样例输入:31 902 873 92样例输出:2 871 903 92#include<stdlib.h>#include<stdio.h>typedef struct NODE{ int number; int grade;}NODE;int C 阅读全文

【慢慢学算法】:八进制(vector练习)

2012-07-12 18:52 by ATP_, 353 阅读, 收藏,
摘要: 题目描述:输入一个整数,将其转换成八进制数输出。输入:输入包括一个整数N(0<=N<=100000)。输出:可能有多组测试数据,对于每组数据,输出N的八进制表示数。样例输入:789样例输出:71011#include<iostream>#include<vector>using namespace std;int main(){ int n; while(cin >> n) { vector<int> ivec; ivec.push_back(n % 8); n /= 8; while( n > 0 ) { ivec.push_ 阅读全文

【慢慢学算法】:全排列

2012-07-11 19:58 by ATP_, 554 阅读, 收藏,
摘要: 题目描述:给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有'a' < 'b' < ... < 'y' < 'z',而且给定的字符串中的字母已经按照从小到大的顺序排列。输入:输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。输出:输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:已知S = s1s2...sk , T = t1t2...tk,则S < T 等价于,存在p (1 <= p & 阅读全文

【慢慢学算法】:小白鼠排队

2012-07-10 21:55 by ATP_, 432 阅读, 收藏,
摘要: 题目描述:N只小白鼠(1 <= N <= 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色用“red”,“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。输入:多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。下面有N行,每行是一只白鼠的信息。第一个为不大于100的正整数,表示白鼠的重量,;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。注意:白鼠的重量各不相同。输出:每个案例按照白鼠的重量从大到小的顺序输出白鼠的帽子颜色。样例输入:33 阅读全文

【慢慢学算法】:连通图

2012-07-10 21:52 by ATP_, 370 阅读, 收藏,
摘要: 题目描述: 给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的。输入: 每组数据的第一行是两个整数 n 和 m(0<=n<=1000)。n 表示图的顶点数目,m 表示图中边的数目。如果 n 为 0 表示输入结束。随后有 m 行数据,每行有两个值 x 和 y(0<x, y <=n),表示顶点 x 和 y 相连,顶点的编号从 1 开始计算。输入不保证这些边是否重复。输出: 对于每组输入数据,如果所有顶点都是连通的,输出"YES",否则输出"NO"。样例输入:4 31 22 33 23 21 22 30 0样例输出:NOYE 阅读全文

【菜鸟做水题】:杭电1008

2012-07-10 18:11 by ATP_, 292 阅读, 收藏,
摘要: #include"stdio.h"double fac(int n) //阶乘!!!!!!!!{ double out ; if( n == 0) out = 1; else if ( n == 1) out = 1; else out = n * fac(n - 1); return out;}int main(){ double result; printf("n e\n- -----------\n0 1\n1 2\n2 2.5\n"); for(int i = 3; i < 10; i... 阅读全文

【菜鸟做水题】: 杭电1004

2012-07-10 18:10 by ATP_, 337 阅读, 收藏,
摘要: #include"stdio.h"#include "string.h"typedef struct{char str[16];int count;}COLOR;COLOR color[1001];int main(){int n = 0;char str_in[16] = "";while(scanf("%d", &n) != EOF){//getchar();if(n == 0)break;int index = 0;for(int i = 0; i < n; i++){bool flag = f 阅读全文

一些精简的小技巧

2012-07-09 17:51 by ATP_, 245 阅读, 收藏,
摘要: 一.标志变量的设置 样例输入"To be or not to be," quoth the Bard,"that is the question". 样例输出``To be or not to be,"quoth the Bard,``that is the question". int main(){ int c, q = 1; while((c = getchar()) != EOF) { if( c == '"') { printf("%s",q ? "``" : 阅读全文

POJ题目分类(转)

2012-07-08 10:09 by ATP_, 246 阅读, 收藏,
摘要: POJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-fo 阅读全文

杭电ACM试题分类,一步一个脚印!(转)

2012-07-07 23:26 by ATP_, 419 阅读, 收藏,
摘要: 杭电ACM试题分类注:网上搜的第一篇1001 这个就不用说了吧1002 简单的大数1003 DP经典问题,最大连续子段和1004 简单题1005 找规律(循环点)1006 感觉有点BT的题,我到现在还没过1007 经典问题,最近点对问题,用分治1008 简单题1009 贪心1010 搜索题,剪枝很关键10111012 简单题1013 简单题(有个小陷阱)1014 简单题1015 可以看作搜索题吧1016 经典的搜索1017 简单数学题1018 简单数学题1019 简单数学题1020 简单的字符串处理1021 找规律的数学题1022 数据结构的题(栈的应用)1023 特殊的数(Catalan N 阅读全文

【慢慢学算法】:特殊乘法

2012-05-23 14:57 by ATP_, 454 阅读, 收藏,
摘要: 题目描述: 写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5输入:两个小于1000000000的数输出:输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。样例输入:123 45样例输出:54 代码: #include<stdio.h>int main(){ long long x, y, temp1, temp2, sum; int index1, index2; char a[11],b[11]; while(s... 阅读全文

【慢慢学算法】:数字阶梯求和

2012-05-17 09:30 by ATP_, 948 阅读, 收藏,
摘要: 题目描述: 给定a和n,计算a+aa+aaa+a...a(n个a)的和。输入:测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。输出:对于每组输入,请输出结果。样例输入:1 10样例输出:1234567900 代码: #include<stdio.h>#include<math.h>int main(){ int a, n, index; char sum[1000]; int pre; while(scanf("%d%d",&a, &n) != EOF) { pre = 0; index = 阅读全文

【慢慢学算法】:排名

2012-05-15 13:25 by ATP_, 349 阅读, 收藏,
摘要: 题目描述: 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑每题的分值,所以并不是最后的排名。给定录取分数线,请你写程序找出最后通过分数线的考生,并将他们的成绩按降序打印。输入: 测试输入包含若干场考试的信息。每场考试信息的第1行给出考生人数N ( 0 < N < 1000 )、考题数M ( 0 < M < = 10 )、分数线(正整数)G;第2行排序给出第1题至第M题的正整数分值;以下N行,每行给出一名考生的准考证号(长度不超过20的字符串)、该生解决的题目总数m、以及这m道题的题号(题目号由1到M)。 当读入的考生人数为0时, 阅读全文