T1000

 #include <stdio.h>
int main()
{
int a, b;
while (scanf("%d %d", &a, &b) != EOF)
printf("%d\n", a + b);
return ;
}

T1001

 #include <stdio.h>
#ifdef AUTHOR
Code By Hatsuakira Tenan
#endif
int f(int n)
{
int js = ;
for (; n > ; --n)
js += n;
return js;
}
int main()
{
int n;
while (scanf("%d", &n) != EOF)
printf("%d\n\n", f(n));
return ;
}

T1002

 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#define MAXLENGTH 1002
#define MAXCARRY 10000
#ifdef AUTHOR
Code By Hatsuakira Tenan
#endif
struct largeint
{
int num[MAXLENGTH], len;
largeint()
{
len = ;
memset(num, , sizeof(num));
}
};
void scanf_override(largeint &input)
{
int tmplen;
char tmp[MAXLENGTH];
scanf("%s", tmp);
std::reverse(tmp, tmp + (tmplen = strlen(tmp)));
input.len = tmplen / + (tmplen % > );
for (int i = , j = ; i < tmplen; ++i, ++j)
{
input.num[j] = tmp[i] - '';
if (tmp[++i] == '\0')
break;
input.num[j] += * (tmp[i] - '');
if (tmp[++i] == '\0')
break;
input.num[j] += * (tmp[i] - '');
if (tmp[++i] == '\0')
break;
input.num[j] += * (tmp[i] - '');
}
}
inline largeint operator +(largeint a, largeint b)
{
int tmp = ;
a.len = std::max(a.len, b.len);
for (int i = ; i < a.len; ++i)
{
a.num[i] += b.num[i] + tmp;
tmp = a.num[i] / MAXCARRY;
a.num[i] %= MAXCARRY;
}
if (tmp > )
a.num[a.len++] = ;
return a;
}
void printf_override(largeint output)
{
printf("%d", output.num[--output.len]);
for (int i = output.len - ; i > -; --i)
printf("%04d", output.num[i]);
}
void work(int k)
{
largeint a = largeint(), b = largeint();
scanf_override(a);
scanf_override(b);
printf("Case %d:\n", k + );
printf_override(a);
printf(" + ");
printf_override(b);
printf(" = ");
a = a + b;
printf_override(a);
printf("\n");
}
int main()
{
int T;
scanf("%d", &T);
work();
for (int i = ; i < T; ++i)
{ printf("\n"); work(i); }
return ;
}

T1003

最长连续子序列和, 根据数据范围(N<=100, 000 & T<=20)选择使用O(n)的算法, 是较为基础的动态规划.

 #include <stdio.h>
#include <limits.h>
#define MAXLENGTH 100005
#ifdef AUTHOR
Code By Hatsuakira Tenan
#endif
int number[MAXLENGTH], start, end, max;
void dp(int length)
{
int max_tmp = , start_tmp = , end_tmp = ;
max_tmp = max = INT_MIN;
for (int i = ; i < length; ++i)
{
if (max_tmp < )
{
if (number[i] > max_tmp)
{
max_tmp = number[i];
start_tmp = end_tmp = i;
if (max < max_tmp)
{
max = max_tmp;
start = start_tmp;
end = end_tmp;
}
}
}
else
{
max_tmp += number[i];
end_tmp = i;
if(max_tmp > max)
{
max = max_tmp;
start = start_tmp;
end = end_tmp;
}
}
}
}
void work(int R)
{
printf("Case %d:\n", R);
int n;
scanf("%d", &n);
for (int i = ; i < n; ++i)
scanf("%d", &number[i]);
dp(n);
printf("%d %d %d\n", max, start + , end + );
}
int main()
{
int T;
scanf("%d", &T);
for (int i = ; i < T; printf("\n"), ++i)
work(i);
work(T);
return ;
}

T1004 用STL 做这个题很耍赖, 但是鉴于数据量不大所以直接暴力遍历也是可以的.

 #include <stdio.h>
#include <string.h>
#include <map>
#include <string>
using std::map;
using std::string;
map<string, int> set;
void work(int n)
{
set.clear();
int maxn = -;
string tmp_stl_string;
char tmp_string[];
for (int i = ; i < n; tmp_stl_string = tmp_string, ++set[tmp_stl_string], ++i)
scanf("%s", tmp_string);
for (map<string, int>::iterator it = set.begin(); it != set.end(); ++it)
if (maxn < it -> second)
{
maxn = it -> second;
tmp_stl_string = it -> first;
}
printf("%s\n", tmp_stl_string.c_str());
}
int main()
{
int n;
scanf("%d", &n);
while (n > )
{
work(n);
scanf("%d", &n);
}
return ;
}

HDOJ(~1004)的更多相关文章

  1. hdoj 1004 学习思路

    hdoj 1004题目大概讲的是,将输入的字符串根据输入次数多少,输出出现次数最多的字符串. 题目逻辑很简单,就是需要选择相应的数据结构,看了别人提交的discuss,明显发现可以使用多种数据结构解这 ...

  2. HDOJ 1004 Let the Balloon Rise

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  3. HDOJ 1004题 Let the Balloon Rise strcmp()函数

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  4. HDOJ 1004 Let the Balloon Rise (字符串+stl)

    题目: Problem Description Contest time again! How excited it is to see balloons floating around. But t ...

  5. 杭电hdoj题目分类

    HDOJ 题目分类 //分类不是绝对的 //"*" 表示好题,需要多次回味 //"?"表示结论是正确的,但还停留在模块阶 段,需要理解,证明. //简单题看到就 ...

  6. 模拟+思维 HDOJ 5319 Painter

    题目传送门 /* 题意:刷墙,斜45度刷红色或蓝色,相交的成绿色,每次刷的是连续的一段,知道最终结果,问最少刷几次 模拟+思维:模拟能做,网上有更巧妙地做法,只要前一个不是一样的必然要刷一次,保证是最 ...

  7. HDOJ 题目分类

    HDOJ 题目分类 /* * 一:简单题 */ 1000:    入门用:1001:    用高斯求和公式要防溢出1004:1012:1013:    对9取余好了1017:1021:1027:   ...

  8. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

随机推荐

  1. LINQ实战

    转载:http://www.cnblogs.com/yubinfeng/p/4567064.html    原作者:尼古拉斯~yu 文章部分内容在原文的基础上有删改. 我相信在net进阶的这个阶段,很 ...

  2. ubuntu下的文本查看相关命令

    文本查看 1.cat命令(查看文本内容) 使用时三种常用模式 (1)cat 文本名 直接查看文本内容 (2)cat 文本名 -n 直接查看文本内容,但为文本中所有行编号 (3)cat 文本名 -b 直 ...

  3. WebService积累

    1.缺点,无法传输复杂对象:如无法序列化key/value结构的类型参数以及相关一维集合接口(Hashtable等打上标签[Serializable]即可序列化,不过继承的IDictionary并不可 ...

  4. [cc150] 硬币问题

    Given an infinite number of quarters (25 cents), dimes (10 cents), nickels (5 cents) and pennies (1 ...

  5. c语言的自动类型转换

    转自c语言的自动类型转换 自动转换遵循以下规则: 1)        若参与运算量的类型不同,则先转换成同一类型,然后进行运算. 2)        转换按数据长度增加的方向进行,以保证精度不降低.如 ...

  6. Structs 原理图

    Struts开源架构很好的实现了MVC模式,MVC即Model-View-Controller的缩写,是一种常用的设计模式.MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化.MV ...

  7. C++中为什么要用虚函数、指针或引用才能实现多态?

    原文链接:http://blog.csdn.net/zoopang/article/details/14071779 学过C++的都知道,要实现C++的多态性必须要用到虚函数,并且还要使用引用或者指针 ...

  8. MySQL的SQL_CALC_FOUND_ROWS

    分页程序一般由两条SQL组成: SELECT COUNT(*) FROM ... WHERE .... SELECT ... FROM ... WHERE LIMIT ... 如果使用SQL_CALC ...

  9. 用PersonalRank实现基于图的推荐算法

    今天我们讲一个下怎么使用随机游走算法PersonalRank实现基于图的推荐. 在推荐系统中,用户行为数据可以表示成图的形式,具体来说是二部图.用户的行为数据集由一个个(u,i)二元组组成,表示为用户 ...

  10. c++模板实现抽象工厂

    类似于rime的rime::Class<factory type, product type>实现方式. C++模板实现的通用工厂方法模式 1.工厂方法(Factory Method)模式 ...