做题记录(2010.3~2010.5)

来源:互联网 发布:科罗拉多矿业学院 知乎 编辑:程序博客网 时间:2024/05/01 09:55

OJ

题目号

题目名称

日期

一句话概括做题思路

HDU

1049

Is It a number

3.8

合法数字,Wrong answer

HDU

2554

3.8

简单规律题,AC

HDU

1049

Is It a number

3.9

题意没能完全理解,导致错误,没考虑E后面不能带小数 AC

HDU

2056

Rectangles

3.9

数学几何题,找关系。 AC

HDU

2062

Subset sequence

3.10

数学集合+规律,看答案 AC

HDU

2063

过山车

3.11

二分图的最大匹配问题(匈牙利算法)WA

HDU

2064

汉诺塔3

3.12

找规律题,但注意数值大小,用__int64

HDU

2077

汉诺塔4

3.12

找规律题,在2064的基础上很容易

ZOJ

1136

Longest Ordered Subsequence

3.12

动态规划,找最长上升子序列 AC

ZOJ

3310

Unrequited Love

3.14

动态规划,写出状态转移方程,并注意减少不必要的比较,因为会超时AC

ZOJ

3311

Special AC String

3.14

字符串的处理(STL),注意题目要求,注意细节AC

HDU

3364

Lucky Number

3.15

简单题,找规律,8的倍数 hdu上排第一

HDU

2063

过山车

3.15

利用二分图(DFS)模板,简单通过

HDU

3349

lazy gege

3.16

找规律,简单数学几何题 hdu上排第一

HDU

3347

Calculate the expression

3.16

此题花了近两个小时,其实很简单的一道题目,但是没注意细节,将输入放到while中,因为每次都要先进行输入后再判断,造成没有正常退出。教训啊!!!本来想放弃的,还是坚持把它通过了。用到了STL map容器 AC

HDU

3279

Nth Largest Value

3.16

求第三大数,用STLset集合容器 简单AC

HDU

3201

Build a Fence

3.16

求面积,简单AC

HDU

3343

An ant's story

3.16

微积分证明,超级简单的代码,hdu上排第一

HDU

2548

两军相遇

3.17

绝对水题,5分钟虐掉

HDU

3344

Kakuro Extension Extension

3.17

字符串处理,代码量大,运行结果对,但不知道为什么无法AC

HDU

2547

无剑无我

3.17

简单数学题,5分钟虐掉

HDU

2549

壮志难酬

3.17

开始没考虑小数点前边的数据大小,导致错,最终AC

HDU

3344

Kakuro Extension Extension

3.18

今天早上神奇般AC了,有的题中说:“After each test case, you should output one blank
line”,而有的题目却说:“Between each test case, you should ouput one blank line”请大家注意AfterBetween的区别,因为如果多了一或少了空行,将导致Presentation Error甚至Wrong Answer

HDU

2550

百步穿杨

3.18

用二维数组简单AC

HDU

2551

竹青遍野

3.18

简单题,将全部数据算出来,存到数组中 AC

HDU

2570

迷瘴

3.18

贪心 这道题目很奇怪,提交了N次才AC,如果在先前除100,就WA,如果在输出的时候除以100,就AC。真搞不明白??

HDU

256025622568

三道水题

3.18

这三道水体15分钟内AC完它们

HDU

2561

第二小整数

3.18

multiset容器区别set容器,multiset允许重复的元素键值插入

HDU/POJ

1361/1068

Parencodings

3.19

模拟法,用二维数组标记

理解题目花了近30分钟 细心 AC

HDU

比赛:1001

关键字拷贝

3.20

STL string的使用,注意细节

HDU

比赛:

1008

流行新词

3.20

STL multiset容器的使用

HDU

1159

Common Subsequence

3.20

经典动态规划

HDU

2573

Typing

3.21

字母大小写的处理,注意数据下标,尽量简化题目方法(不熟练)

HDU

1207

汉诺塔II

3.22

找规律,细心

HDU

1995

汉诺塔V

3.22

注意大数的边界,一种投机取巧的方法就是不用高精度,直接用计算器算出最后越界的大数,判断输出即可。

HDU

2175

汉诺塔IX

3.24

规律题,细心AC

HDU

101210141017

简单数学题

3.25

简单数学题,注意输入输出格式

HDU

3351

Seinfeld

3.29

简单模拟题 hdu 第一

HDU

3354

Probability One

3.29

简单数学题 hdu 第一

HDU

3353

Not So Flat After All

3.29

主要解决质因数问题:

方法一:不考虑消耗时间 用set和 multiset容器相结合

方法二:时间消耗0,但方法复杂

HDU

3352

Tiles of Tetris, NOT

3.29

数学问题,注意要总结出规律,求最小公倍数

HDU

1031

Design T-Shirt

3.29

没怎么整理,代码写得很菜,代码量大,细心

HDU

1021

Fibonacci Again

3.29

简单规律题,找出规律,超级水

HDU

3357

Stock Chase

3.30

传递闭包问题,每次插入都要更新,注意:自己公司不能和自己公司交易

HDU

1028

Ignatius and the Princess III

3.30

母函数,未AC 解决 整数划分

HDU

3336

Count the string

3.30

思路:一个看数据量。(n < 200000)。想到的算法时间:只能在{O(n),O(1),O(n*log n)(这个有点危险)},首先想到暴力枚举,先得枚举所有前缀,再找匹配的,时间上不行了。于是想到了一个小小的技巧。

就是:无论这个串怎么样,它最少多会有n个匹配的,就是与自己身的。然后永远把第一个字符与第二个以后的字符匹配,找到相同的记数就加一,再把第下一个字符与第二个字符匹配,以此类推,直到不能匹配为

止,就下移。一直重复到字符串结束为止。  类似深度搜索

HDU

比赛 1011

毓秀园的花岗岩路

3.30

用传统方法怎么都AC不了,总是超时(至少错了10次)。今晚就尝试着用STL容器来做,终于AC~~ 哈哈·~

思路如下

1.把所有输入的石头,都把最小边排在最前面,注意不能搞乱它们之间的顺序,写一个比较函数,排序~

2.然后将它们连接到字符串S

3.将字符串加到set容器ss中,根据此容器的特性,若值相同,则不重复统计

4.最后判断ss的大小和n是否相同

HDU

2734

Quicksum

3.30

字符串的计算 简单题

HDU

1328

IBM Minus One

3.30

字符串的计算 简单题

HDU

1390

Binay Number

3.31

二进制的转换 简单题

HDU

2719

The Seven Percent Solution

3.31

字符串的替换 处理

HDU

1326

Box of Bricks

3.31

简单计算 注意格式

HDU

1086

You can Solve a Geometry Problem too

3.31

求两条线段是否有交点(几何),利用模板很快就AC,但代码量太大~~

HDU

1321

Reverse Text

3.31

使用C++string类型的反转函数,注意头文件要写上: #include <string> 和 #include <algorithm>

采用一行输入: cin.getline(c,70); 要写范围

HDU

2160

母猪的故事

3.31

水题

HDU

2162

Add ‘em

3.31

简单题

HDU

1379

DNA Sorting

4.1

比较函数 注意 类型转换、类型的赋值和调用qsort函数,声明变量时,在程序的最开始时声明

特别注意: 比较函数返回值为TRUE时,就进行调换

区别C++sort的比较函数

HDU

2180

时钟

4.2

好恶心的一道题目,费尽了我所有心思,细节上的小小错误,真的好恶心。收获:看完题目,弄清楚思路后再敲键盘,要不对着一团代码,怎么也找不出逻辑的错误!!!

HDU

2552

三足鼎立

4.2

纯数学题目:tan(arctan(X))=X,其它的调用数学函数即可。

HDU

2201

熊猫阿波的故事

4.3

简单数学,算概率

HDU

2203

亲和串

4.3

理解循环移位:所谓循环移位是指在移位时不丢失移位前原范围的位,而是将它们作为另一端的补入位。

本题将S1在本身后边再接一个S1,循环移位本身

HDU

1214

圆桌会议

4.3

数学找规律题

HDU

1222

Wolf and Rabbit

4.3

数论简单题,判断两数是否存在公约数的问题

HDU

1329

Hanoi Tower Troubles Again!

4.3

总结规律

HDU

1517

A Multiplication Game

4.3

感觉是博弈问题,但师兄说不是,也是总结规律

HDU

3280

Equal Sum Partitions

4.3

模拟题

HDU

1509

Windows Message Queue

4.6

注意输入gets(c)scanf("%s",c)的区别,优先队列的用法,会重载比较操作符

HDU

2156

分数矩阵

4.6

简单题

HDU

1161

4.7

入门题目

HDU

1406

完数

4.7

注意一定的技巧:1.先把数据范围内的所有完数算出来

2.判断输入两个数的大小,小数在前边

HDU

1711

Number Sequence

4.7

KMP简单运用,注意类型,char类型只能接受一个字符,还有语法上的细节要注意

HDU

1709

The Balance

4.7

母函数的简单运用,此题定义两个数组,其中一个是用于标记每次增加的数据,另一个是标记可以实现的数据,如果同时用同一个的话, 会重复计算,导致结果错误,最重要的是,采用两个数组,可以用于分层处理

HDU

1381

Crazy Search 

4.7

Set容器的运用和s.substr(i,n)的运用

HDU

1701

ACMer

4.8

数学问题,巧妙用类型转换来取整

HDU

1018

Big Number

4.8

N!的位数,注意数学规律

HDU

1028

Ignatius and the Princess III

4.8

母函数G(x)=(1+x+x^2+....)(1+x^2+x^4+....)(1+x^3+x^6+....)(1+x^4+x^8+....)....(1+x^n+)

HDU

1060

Leftmost Digit 

4.8

大数求首位是多少,难点在于多个大数相乘。利用数学知识:已知大数n,求n^n的首位数,log10 n=xn*x取小数部分b,再10b次方,最后取整得出最高位。

HDU

1544

Palindromes

4.8

分析:《ACM程序设计》P186,注意常规方法会超时。

在处理字符串的时候,一定要注意字符串相对应的位置

HDU

2740

Root of the Problem

4.8

数学问题,用到pow(double,double)函数,当A^N=B,则A=pow(B,1/N)。注:BN都要为double类型

HDU

1671

Phone List

4.8

先将所有电话号码排序(升序),再直接和上一个比较,注意超时,用STLvector容器的sort快速排序和find查找

HDU

1194

Beat the Spread!

4.8

简单数学题!

HDU

1303

Double

4.8

思路是先排序,在判断比较,简单题

HDU

1039

Easier Done Than Said?

4.8

简单字符串判断,但代码长,注意细节

HDU

1056

HangOver

4.9

数学题,计算1/2+1/3+1/4

HDU

1065

I Think I Need a Houseboat

4.9

题目有点难读,计算圆的面积公式

HDU

1048

The Hardest Problem Ever

4.12

密码破译题,但此题简单,处理好字符串的输入即可

HDU 

1789

Doing Homework again

4.12

贪心

这一道经典的贪心花了我好多心血,因为老是处理不好细节问题,wr78次才AC贪心公式:每次选择一个最大的且尽可能的在规定时间内往后推。

思路:1.对输入的数据进行排序,先按规定时间,再按扣分

 2.从后面开始贪心,理由很简单,因为能完成得事件,尽可能的推后,别放到前面,占用了别的科目的位置

 3.k[i]来标记,时间i是否有科目安排,如果有,先选择第一个,然后判断后边的数据,有没有比他更大的。 如果没有,便直接找后续最大的数据  

4.一个细节问题,每次确定某个科目,就将他赋值为0,以免重复用

HDU

1253

胜利大逃亡

4.12

BFS(广度搜索)

意外学习到,C++的结构体也可以像C#一样,里边有好几个方法

BFS搜索,将所有情况遍历完,直到最后到达终点或者步子大于规定时间范围

HDU

3374

String Problem

4.12

最小表示法 分别求出 最小字符串和最大串

最后再用KMP算法统计有多少个字符串一样的

HDU

1372

Knight Moves

4.13

BFS(广度搜索)

注意sscanf的用法

HDU

1314

Numerically Speaking

4.13

模拟题,高精度的加法、乘法、除法和取余,还得注意字符串的输出格式,一道不错的题目

HDU

1106

排序

4.14

注意输入字符的处理

排序利用容器自动排序的功能

HDU

1029

Ignatius and the Princess IV

4.14

用常规方法会超内存,用map的容器,最后查找那个最多,输出即可。

HDU

1207

Clock

4.14

计算时钟角度,然后排序,定义结构体,调用快速排序,提交时用C++提交

HDU

1236

排名

4.14

注意格式 结构体排序,比较函数判断字符串

HDU

1280

m大的数

4.14

ms.erase(it,it1);删除指定位置

ms.erase(*it);删除所有与*it相等的值

注意:常规方法会超内存!

HDU

1391

Number Steps

4.14

简单题,没有见到什么排序!?

HDU

2673

shǎ崽 OrOrOrOrz 

4.14

排序,在依次头尾输出。方法一:常规数组,用快速排序,再控制数组下标排序。

方法二:直接将数据存入STLmultiset容器,在用迭代器控制头尾依次输出。

HDU

1045

Fire Net 

4.15

这道贪心题目,一定要注意对每个点的标记!

此题的标记方式:  若为‘.’,则标记为0  若为‘X’,则标记为1  若该路上有炮台,则该炮台的范围内标记为-1

贪心的方式是根据影响的行和列来决定:

0:行和列都是墙 1:行或列有一个两边都有墙 

2:行和列都会相通

有 0 1 2三种方式,贪心最小的情况

HDU

2037

今年暑假不AC

4.15

典型贪心:从后面开始贪心

用结构体,先按开始时间排序,如果开始时间一样,再按结束时间排序

HDU

1051

Wooden Sticks

4.15

贪心+递归

方法一:采用结构体和快速排序 用时:15ms 内存:296k

方法二:常规方法 用时:140MS 内存:188K 

HDU

1050

Moving Tables

4.15

贪心 这道题最少花多少时间,实际上我们只要考虑哪一段重合度最高,重合度最高的地方, 也就是我们至少要移动的次数了。因为有400间房间,1-2对应一段走廊,3-4对应一段走廊,如此我们可以把走廊分成200段,标记为a[1]-a[200],之后我们根据输进的房间序号,就可以算出要用到哪几段的走廊,之后给对应的a[n]值加1就好,最后求出a[n]最大值就是移动的次数了

HDU

3177

Crixalis's Equipment

4.15

经典的贪心,注意其贪心的方式,是贪心所要空间和占用空间的差,而不是贪心所要空间。从大到小排序。

HDU

1053

Entropy

4.16

贪心经典 赫夫曼编码 此题又长又臭,如果没有学习过赫夫曼编码,题意真像天书

赫夫曼编码(算法导论 P233

前缀编码:没有一个编码是另一个编码的前缀

构造赫夫曼树(二叉):每次合并具有最低频度的两个树

解题思路:利用priority_queue 优先队列容器 每次取出最小两个值,合并再加入队列中,直到队列取空

PS:一个细节错误,开始一直没有发现,最后找了近一个小时,那就是当所有输入都相同时,队列里只有一个结构体,那么,它就没有进入while循环 进行统计。所有最后加上一个判断

HDU

2566

统计硬币

4.17

母函数 只需循环判断即可

HDU

2079

选课时间

4.17

母函数,先用t[a]=b标记学分a课程有b门,再暴力计算

HDU

3317

hot girl with cool car

4.18

主要是题目意思有点难理解,作图推导公式,初中三角几何知识

HDU

1152

brownie points I

4.18

简单题,判断点所在的期间,主要就是题目难读

HDU

2299

Largest Triangle

4.18

数学题,海伦公式+凸包。但对此题,暴力也可以过

HDU

3194

Median

4.18

Hash问题,开始往难的方面想去了,想到数论那些,OH~

其实用hash统计每个结果的次数,最后判断哪一个先通过中间值

HDU

3233

Download Manager

4.18

文件下载,和去年那道排序题目差不多,主要就是题目意思难懂

HDU

2831

Plants VS Zombies

4.18

经典贪心问题

HDU

2919

Adding Sevens

4.18

模拟题,注意二进制的转换

HDU

2572

终曲

4.19

还以为这道题的代码会很长,自己想的解题思路很复杂,网上一搜,发现别人的代码写得非常的好。比用KMP算法,直接调用了string.h函数库的strstr方法:返回第一次出现的指针位置(看函数文档)

strstr函数+map

HDU

2152

fruit

4.19

母函数经典模板(整数拆分),初始化范围要注意好

HDU

2189

来生一起走

4.19

母函数,整数拆分(拆分成素数)

HDU

2110

Crisis of HDU 

4.19

母函数 与其他母函数一样,不能使用暴力方法,就只能使用经典模板(滚动数组),注意结果要取余10000

HDU

1358

Period

4.19

KMP算法的巧妙运用,统计一个字符串的所有循环串

HDU

1465

不容易系列之一

4.20

组合数学,排错公式。d[1]=0;d[2]=1;

d[n]=n-1*(d[n-1]+d[n-2]);

HDU

1492

The number of divisors(约数) about Humble Numbers

4.20

组合数学:常规方法超时

首先 2357是互质的!可以把 写成 (2^a)*(3^b)*(5^c)*(7^d)   a,b,c,d >= 0!

每次从a ,b,c,d中选出一组数就是一个因数,那么ans=a*b*c*d 

HDU

1570

A C

4.20

排列组合问题,简单组合数学

HDU

2089

不要62

4.20

注意数据的大小,先提前统计还前i个数据含有多少合法的数据,再在输入数据的区间中相减。简单数学题

HDU

1568

Fibonacci

4.20

经典:Fibonacci通项公式+对数求前几位数

http://zc634579757.blog.163.com/blog/static/124497462200971624038914/

HDU

1019

Least Common Multiple

4.20

求最小公倍数,有一点注意的是,整型*整型可能超过int的范围,所以在此题,第一个数先除以最大公约数,再乘另外个数,避免数据类型过大,导致错误。

HDU 

1164

Eddy's research I

4.20

分解质因数

HDU 

1212

Big Number

4.20

别以为是高精度问题,其实用点数学理论+小技巧

HDU

1023

1130

1134

Train Problem II

How Many Trees?

Game of Connections

三题代码一样

4.21

卡塔兰数列+高精度乘法(此题巧妙地处理)

唯一要注意的问题是n比较大,需要用大数来处理。为了避免做大数除法,先做了一个小处理。

h(1)1,catalan数满足递归式: 

  h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2)

 

  另类递归式: 

   h(n)=((4*n-6)/(n))*h(n-1); 

  该递推关系的解为: 

h(n)=C(2n,n)/(n + 1) (n=1,2,3,...)  一下程序,用该公式 h(n)=C(2n,n)/(n + 1) => h(n)=(2n!/n!)/(n+1)!

HDU

2088

Box of Bricks

4.21

简单题

HDU

2065

红色病毒

4.21

递归:1、先将条件分类 2、观察各个条件之间的关系

3、通个关系总结出递归关系

HDU

2072

单词数

4.21

STL容器的set使用,但此题注意处理多余的空格,避免把空格加入容器,输入用getsgetchar,不能用cin,因为不接受空格

HDU

2078

复习时间

4.21

超级简单贪心

HDU

1575

Tr  A

4.21

此题求矩阵的幂

用到二分法求矩阵的幂+矩阵乘法

HDU

1757

A Simple Math Problem

4.22

构造矩阵 矩阵乘法 矩阵的幂

此题难点在如何构造矩阵,另外在写for语句时,要记得多加大括号,今天早上调试了一个上午,才发觉这样的错误

HDU

1725

Find minimal sum

4.22

简单数学题

HDU

1202

The calculation of GPA

4.22

水题、简单计算

区别实型(小数)和整型

HDU

3388

 Coprime

4.23

数论 看别人的代码

1677

HDU

1215

七夕节

4.30

打表发,常规方法超时,容器会错

HDU

1286

找新朋友

5.5

简单数论题,欧拉函数,找前n个数与n互质的数

原创粉丝点击