ACM训练计划

 

引用自:杭电acm阶段之理工大版

             杭电ACM题目分类

             各大OJ题目分类

             hdu(杭电oj)第一页题目题解

            ACM牛人给的新手建议(这个也是转载的)

 

供留备查用

 

 

杭电acm阶段之理工大版

 

[671原创,欢迎转载]

 

 

以下题均为杭电acm网页的题号

首页http://acm.hdu.edu.cn/

题库入口http://acm.hdu.edu.cn/listproblem.php?vol=1

帮助http://acm.hdu.edu.cn/faq.php?lang=chs

 

 

 

 

此次培训主要锻炼同学们的算法学习,更重要的是锻炼同学们的自学能力,对于我们学计算机的同学来说,自学能力是关键,如果你真的指望从老师那里学到什么的话。。。。。。。。。。。。。。。(千万不能告诉老师)所以,这个真的很关键,首先是独立思考问题的能力,我对同学们的要求是,如果同学们遇到了问题,至少独立思考1小时以上,才可以从网上找答案或者问别人。不要觉得这个要求苛刻,其实这是一个很好的方法,如果一遇到不会的难题就上网查或者问,虽然可能题一会做出来了,但是下次碰见还是不会,甚至根本就没有印象。我经常调试程序3、4个小时以上,偶尔都会有10个小时的调试。这对同学们日后的学习很有帮助。

 

 

第一阶段:开始入门吧!(15天,53题)

一.输入输出练习(2天,10题)

         1000、1089—1096、1001

二.简单操作:(2—4天,12题)

         2000—2011、2039

三.英文题试水(3—4天,8题)

         1720、1062、2104、1064、2734、1170、1197、2629

四.回归水题(4-6天,24题)

         2012—2030、2032、2040、2042、2054、2055

(第一阶段大体结束之后,会由几位学长讲一些数据结构的知识,请同学们务必跟上进度!)

第二阶段:我要学算法!(12天,31题)

一.字符串我要会处理(2天,6题)

         2072、2081、2093、2091、1004、2057

二.简单数学题(4天,12题)

         2031、2033、2070、2071、2075、2089、2090、2092、2096—2099

三.要玩就玩汉诺塔(2天,5题)

         1995、1996、2064、2077、2175

四.As easy as math(4天,8题)

         1108、2138、1713、1722、2136、2504、1717、1125

 

第三阶段:acm无底洞啊!(10天,18题)

一.初见dp(2—4天,4题)

         2062、1087、1203、1003

二.迷宫之烟雾缭绕(2—4天,3题)

         1728、1010、1072

三.数学题做不下去了。(3-5天,8题)

         1052、1568、1443、1222、1249、1005、2674、1018

四.龙门客栈,暗藏玄机(2—3天,3题)

         1022、1237、1082

 

第四阶段:大家自学吧!(搞ACM同学请看)

大家从网站自己找资料,看一下acm的分类情况,然后根据自己的想法,以及组队安排,来对某一知识点优先学习,但是尽量在半年内还是保持全面发展,半年后在开始分方向。

^o^

 

刷完这些题的同学~~~按照POJ分类来刷下初级。

传送门:http://blog.csdn.net/liuqiyao_01/article/details/8477801

刷完初级,省赛铜牌就没问题了~~~

 

 

 

                                                                                                                                                 671敬上

 

ACM进阶

一位高手的建议:
一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.

训练过ACM等程序设计竞赛的人在算法上有较大的优势,这就说明当你编程能力提高之后,主要时间是花在思考算法上,不是花在写程序与debug上。
下面给个计划你练练:

第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来。

1.最短路(Floyd、Dijstra,BellmanFord) 
2.最小生成树(先写个prim,kruscal要用并查集,不好写) 
3.大数(高精度)加减乘除
4.二分查找. (代码可在五行以内) 
5.叉乘、判线段相交、然后写个凸包. 
6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简) 
7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 
8. 调用系统的qsort, 技巧很多,慢慢掌握. 
9. 任意进制间的转换

第二阶段:练习复杂一点,但也较常用的算法。 
如: 
1. 二分图匹配(匈牙利),最小路径覆盖 
2. 网络流,最小费用流。 
3. 线段树. 
4. 并查集。 
5. 熟悉动态规划的各个典型:LCS、最长递增子串、三角剖分、记忆化dp 
6.博弈类算法。博弈树,二进制法等。 
7.最大团,最大独立集。 
8.判断点在多边形内。 
9. 差分约束系统. 
10. 双向广度搜索、A*算法,最小耗散优先.

第三阶段:
    前两个阶段是打基础,第三阶段是锻炼在比赛中可以快速建立模型、想新算法。这就要平时多做做综合的题型了。 
1. 把oibh上的论文看看(大概几百篇的,我只看了一点点,呵呵)。 
2. 平时扫扫zoj上的难题啦,别老做那些不用想的题.(中大acm的版主经常说我挑简单的来做:-P ) 
3. 多参加网上的比赛,感受一下比赛的气氛,评估自己的实力. 
4. 一道题不要过了就算,问一下人,有更好的算法也打一下。 
5. 做过的题要记好 :-)
下面转自:http://hi.baidu.com/wilworld/blog/item/88b1b844d37e4049500ffe6a.html

算法书有很多可以参考:

1、Concrete Mathematics --- A Foundation For Computer Science
Ronald L. Graham , Donald E. Knuth , Oren Patashnik
  这本书《具体数学》是Stanford计算机系的教材(1970 年开始给研究生授课),书的内容是Knuth的巨著TAOCP第一章的扩展,涉及了计算机科学领域内几乎所有可能遇到的数学知识。书中许多经典问题的解答比目前广泛流传的解法更易懂。对于提高大家的数学修养有很大帮助。

2、Introduction to Algorithms
Thomas H. Cormen ,Charles E. Leiserson ,Ronald L. Rivest ,Clifford Stein
  《算法导论》MIT计算机系的经典算法教材。作者Rivest获得过ACM Turing Award,牛!本书内容全面,语言通俗,很适合大家入门。

3、实用算法的分析和程序设计
吴文虎 王建德
  大名鼎鼎的“黑书”。内容包括了竞赛需要的各种算法,各种层次的读者都适合。


【这里是我自己加的:其实所谓"黑书",还有一本,《算法艺术与信息学竞赛》作者:刘汝佳 黄亮,很经典,很流行】
4、网络算法与复杂性理论
谢政 李建平
  内容很丰富的图论教材

5、算法+数据结构=程序
N.Wirth
  Pascal语言的发明人Wirth教授的名著,深入阐述了算法与数据结构的关系,对每个算法都提供详细的Pascal源程序,适合各种水平的读者。

  最后,在学习算法提升战斗力的同时,也要多做题目,实战是很有必要的。其实并不是所有的题目都是靠算法的,有一些题目是有多种可以优化的手段,也有一些工程性比较强的题目。上手做和把题做精还是有很大区别的(惭愧的说,我就是属于上手做,没有做精,所以……)。

  愿每一位程序设计竞赛爱好者挑战极限!
=============================================================================
ACMer必备知识(任重而道远......)

图论

   路径问题
        0/1边权最短路径
        BFS
        非负边权最短路径(Dijkstra)
            可以用Dijkstra解决问题的特征
        负边权最短路径
        Bellman-Ford
            Bellman-Ford的Yen-氏优化
            差分约束系统
        Floyd
            广义路径问题
            传递闭包
            极小极大距离 / 极大极小距离
        Euler Path / Tour
            圈套圈算法
            混合图的 Euler Path / Tour
        Hamilton Path / Tour
            特殊图的Hamilton Path / Tour 构造

    生成树问题
        最小生成树
        第k小生成树
        最优比率生成树
        0/1分数规划
        度限制生成树

    连通性问题
        强大的DFS算法
        无向图连通性
            割点
            割边
            二连通分支
            有向图连通性
            强连通分支
            2-SAT
            最小点基

    有向无环图
        拓扑排序
            有向无环图与动态规划的关系

    二分图匹配问题
        一般图问题与二分图问题的转换思路
        最大匹配
            有向图的最小路径覆盖
            0 / 1矩阵的最小覆盖
        完备匹配
        最优匹配
        稳定婚姻

    网络流问题
        网络流模型的简单特征和与线性规划的关系
        最大流最小割定理
        最大流问题
            有上下界的最大流问题
                循环流
        最小费用最大流 / 最大费用最大流

    弦图的性质和判定


组合数学

    解决组合数学问题时常用的思想
        逼近
        递推 / 动态规划
    概率问题
        Polya定理


计算几何 / 解析几何

    计算几何的核心:叉积 / 面积
    解析几何的主力:复数

    基本形
        点
        直线,线段
        多边形

    凸多边形 / 凸包
        凸包算法的引进,卷包裹法

    Graham扫描法
        水平序的引进,共线凸包的补丁

    完美凸包算法

    相关判定
        两直线相交
        两线段相交
        点在任意多边形内的判定
        点在凸多边形内的判定

    经典问题
        最小外接圆
            近似O(n)的最小外接圆算法
        点集直径
            旋转卡壳,对踵点
        多边形的三角剖分


数学 / 数论

   最大公约数
        Euclid算法
            扩展的Euclid算法
                同余方程 / 二元一次不定方程
                同余方程组

    线性方程组
        高斯消元法
            解mod 2域上的线性方程组
        整系数方程组的精确解法

    矩阵
        行列式的计算
            利用矩阵乘法快速计算递推关系

    分数
        分数树
        连分数逼近

    数论计算
        求N的约数个数
        求phi(N)
        求约数和
        快速数论变换
        ……

    素数问题
        概率判素算法
        概率因子分解


数据结构

    组织结构
        二叉堆
        左偏树
        二项树
        胜者树
        跳跃表
        样式图标
        斜堆
        reap

    统计结构
        树状数组
        虚二叉树
        线段树
            矩形面积并
            圆形面积并

    关系结构
        Hash表
        并查集
            路径压缩思想的应用

    STL中的数据结构
        vector
        deque
        set / map


动态规划 / 记忆化搜索

   动态规划和记忆化搜索在思考方式上的区别

    最长子序列系列问题
        最长不下降子序列
        最长公共子序列
        最长公共不下降子序列

    一类NP问题的动态规划解法

    树型动态规划

    背包问题

    动态规划的优化
        四边形不等式
        函数的凸凹性
        状态设计
        规划方向


线性规划

常用思想

    二分
    最小表示法



    KMP
    Trie结构
    后缀树/后缀数组
    LCA/RMQ
    有限状态自动机理论

排序
    选择/冒泡
    快速排序
    堆排序
    归并排序
    基数排序
    拓扑排序
    排序网络

 

 

杭电ACM题目分类

——鱼尾尾

基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、1194、1196、1197、1201、1202、1205、1219、1234、1235、1236、1248、1266、1279、1282、1283、1302、1303、1323、1326、1330、1334、1335、1339、1390、1391、1393、1395、1397、1405、1406、1407、1408、1412、1418、1420、1465、1491、1555、1562、1563、1570、1587、1673、1678、1708、1718、1720、1785、1799、1859、1862、1877、1898、1976、1977、1985、1994、2000、2001、2002、2003、2004、2005、2006、2007、2008、2009、2010、2011、2012、2013、2014、2015、2016、2017、2018、2019、2020、2021、2022、2023、2024、2025、2026、2027、2028、2029、2030、2031、2032、2033、2034、2035、2039、2040、2042、2043、2048、2049、2051、2053、2055、2056、2057、2060、2061、2071、2073、2075、2076、2078、2081、2083、2088、2090、2092、2093、2095、2096、2097、2098、2099、2101、2103、2106、2107、2109、2113、2114、2115、2123、2131、2132、2133、2135、2136、2137、2138、2139、2143、2148、2153、2156、2161、2162、2164、2178、2186、2192、2200、2201、2212、2304、2309、2317、2401、2500、2502、2503、2504、2519、2520、2521、2523、2524、2535、2537、2539、2547、2548、2549、2550、2551、2552、2555、2560、2561、2562、2566、2567、2568、2700、2710、


DP:1003、10240、1029、1069、1074、1087、1114、1159、1160、1171、1176、1203、1231、1257、1260、1284、1421、1789、1978、2059、2084、2159、2191、2544、2571、2602、2709、

搜索:1010、1015、1016、1026、1072、1075、1175、1180、1181、1238、1239、1240、1241、1242、1253、1254、1312、1372、1548、1597、1671、1677、1728、1800、1983、2102、2141、2553、2563、2605、2612、2614、1616、2717

贪心:1009、1045、1049、1050、1051、1052、1257、1800、2037、2111、2124、2187、2391、2570

数学题:1018、1065、1071、1115、1141、1162、1212、1220、1492、1593、1701、1722、1798、1840、1999、2036、2080、2086、2089、2105、2108、2134、2303、2393、2438、2529、2547、2548、2552、2554、2601、2603、2701、

递推:1133、1143、1207、1249、1267、1284、1290、1297、1396、1992、1995、1996、2013、2014、2044、2045、2046、2047、2050、2064、2065、2067、2068、2070、2077、2085、2151、2154、2160、2190、2501、2512、2563、2569、2709、2716、

字符串:1020、1039、1043、1062、1073、1075、1088、1113、1161、1200、1251、1256、1288、1321、1328、1379、1804、1860、1982、1984、2017、2024、2025、2026、2027、2043、2052、2054、2072、2074、2087、2131、2137、2140、2163、2203、2206、2352、2500、2549、2564、2565、2567、2572、2609、2607、2707、2708、2719、2721、2723、

大数:1002、1042、1133、1250、1297、1715、1753、1865、2100、

胡搞:1022、1027、1030、1035、1128、1165、1209、1210、1215、1222、1228、1229、1230、1237、1259、1276、1286、1337、1342、1361、1370、1506、1577、1597、1702、1716、1727、1868、1870、1896、1981、1986、1987、1988、1997、1998、1999、2058、2062、2089、2090、2094、2104、2116、2117、2135、2175、2183、2184、2197、2303、2368、2370、2374、2511、2522、2527、2600、2615、2703、2711、2714、2715、2725、

博弈:1077、1404、1517、1524、1525、1527、1536、1564、1729、1730、1846、1847、1848、1849、1850、2147、2149、2176、2177、2188

母函数:1085、1171、1398、2079、2082、2110、2152、2189、2566、

hash:1264、1280、1425、1496、1800、2522、2600、

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

按照ac的代码长度分类(主要参考最短代码和自己写的代码)
短代码:0.01K--0.50K;中短代码:0.51K--1.00K;中等代码量:1.01K--2.00K;长代码:2.01K以上。

短:1147、1163、1922、2211、2215、2229、2232、2234、2242、2245、2262、2301、2309、2313、2334、2346、2348、2350、2352、2381、2405、2406;

中短:1014、1281、1618、1928、1961、2054、2082、2085、2213、2214、2244、2247、2255、2257、2258、2260、2265、2272、2273、2275、2287、2299、2329、2376;

中等:1001、1018、1037、1039、1054、1125、1655、2165、2210、2212、2225、2240、2241、2243、2246、2254、2303、2312、2339;

长:1009、1010、1015、2050。

附注:

短(中短)代码但要有思想(一定难度):1014、1147、1618、1961、2054、2082、2232、2244、2255、2273、2287、2299、2313、2348、2352、2376、2406;

长代码但没有难度:2050。

---------------------------------------------------------------------------------------------------------------------------
动态规划:
1037 A decorative fence、1050 To the Max、1088 滑雪、1125 Stockbroker Grapevine、1141 Brackets Sequence、1159 Palindrome、1160 Post Office、1163 The Triangle、1458 Common Subsequence、1579 Function Run Fun、1887 Testing the CATCHER、1953 World Cup Noise、2386 Lake Counting

简单、模拟题:
1001 Exponentiation 、1002 487-3279、1003 Hangover 、1701 Dissatisfying Lift、2301 Beat the Spread!、2304 Combination Lock、2328 Guessing Game、2403 Hay Points 、2406 Power Strings、2339 Rock, Scissors, Paper、2350 Above Average、2218 Does This Make Me Look Fat?、2260 Error Correction、2262 Goldbach\'s Conjecture、2272 Bullseye、2136 Vertical Histogram、2174 Decoding Task、2183 Bovine Math Geniuses、2000 Gold Coins、2014 Flow Layout、2051 Argus、2081 Calendar、1918 Ranking List、1922 Ride to School、1970 The Game、1972 Dice Stacking、1974 The Happy Worm、1978 Hanafuda Shuffle、1979 Red and Black、1617 Crypto Columns、1666 Candy Sharing Game、1674 Sorting by Swapping、1503 Integer Inquiry、1504 Adding Reversed Numbers、1528 Perfection、1546 Basically Speaking、1547 Clay Bully、1573 Robot Motion、1575 Easier Done Than Said?、1581 A Contesting Decision、1590 Palindromes、1454 Factorial Frequencies、1363 Rails、1218 THE DRUNK JAILER、1281 MANAGER、1132 Border、1028 Web Navigation、
博弈类
1067 取石子游戏、1740 A New Stone Game、2234 Matches Game、1082 Calendar Game 、2348 Euclid\'s Game、2413 How many Fibs?、2419 Forests
初等数学
1003 Hangover、1045 Bode Plot、1254 Hansel and Grethel、1269 Intersecting Lines、1401 Factorial、1410 Intersection、2363 Blocks 、2365 Rope、2242 The Circumference of the Circle、2291 Rotten Ropes、2295 A DP Problem、2126 Factoring a Polynomial、2191 Mersenne Composite Numbers、2196 Specialized Four-Digit Numbers、1914 Cramer\'s Rule、1835 宇航员、1799 Yeehaa!、1607 Deck、1244 Slots of Fun、1269 Intersecting Lines、1299 Polar Explorer、1183 反正切函数的应用、

图论及组合数学
2421 Constructing Roads、2369 Permutations、2234 Matches Game、2243 Knight Moves、2249 Binomial Showdown、2255 Tree Recovery、2084 Game of Connections、1906 Three powers、1833 排列、1850 Code、1562 Oil Deposits、1496 Word Index、1306 Combinations、1125 Stockbroker Grapevine、1129 Channel Allocation、1146 ID Codes、1095 Trees Made to Order、找规律2247 Humble Numbers、2309 BST、2346 Lucky tickets、2370 Democracy in danger、2365 Rope、2101 Honey and Milk Land
2028 When Can We Meet?、2084 Game of Connections、1915 Knight Moves、1922 Ride to School、1941 The Sierpinski Fractal、1953 World Cup Noise、1958 Strange Towers of Hanoi、1969 Count on Canton、1806 Manhattan 2025、1809 Regetni、1844 Sum、1870 Bee Breeding、1702 Eva\'s Balance、1728 A flea on a chessboard、1604 Just the Facts、1642 Stacking Cubes、1656 Counting Black、1657 Distance on Chessboard、1662 CoIns、1663 Number Steps、1313 Booklet Printing、1316 Self Numbers、1320 Street Numbers、1323 Game Prediction、1338 Ugly Numbers、1244 Slots of Fun、1250 Tanning Salon、1102 LC-Display、1147 Binary codes、1013 Counterfeit Dollar、
---------------------------------------------------------------------------------------------------------------------------
题目分类
排序 1002(需要字符处理,排序用快排即可) 1007(稳定的排序) 2159(题意较难懂) 2231 2371(简单排序) 2388(顺序统计算法) 2418(二叉排序树)

回溯搜索:1979(和迷宫类似) 1980(对剪枝要求较高)

数学计算 简单(或不值得做的题):1003 1004 1005 1068 1326 1656 1657 1658 1663 1922 1978 2000 2013 2014 2017 2070 2101 2105 2140 2190 2272 2301 2405 2419
          中等:1006(中国剩余定理) 1323 1969 2015(解密码) 2081(预处理) 2085(找规律)
难: 1014 1037 1147 2082 (这些是上课讲的)

高精度计算:1001(高精度乘法) 2413(高精度加法,还有二分查找)

历法:1008 2080 (这种题要小心)

枚举:1054(剪枝要求较高) 1650 (小数的精度问题)

数据结构的典型算法:1125(弗洛伊德算法) 2421(图的最小生成树)

动态规划:1163(经典题)

贪心:1328 1755(或用单纯形方法) 2054

模拟: 1281 1928 2083 2141 2015

递归: 1664
字符串处理:2121 2403

---------------------------------------------------------------------------------------------------------------------------
有标准模型的:
1125 1163 1183 1979 1185 1184 1187
寻找新算法的:
1014 1067 1147 1922 2082
调节情绪用:
1004 950 1218 1281 1928 1978 2000 2027

---------------------------------------------------------------------------------------------------------------------------
主流算法:
1.搜索 //回溯
2.DP(动态规划) 
3.贪心 
4.图论 //Dijkstra、最小生成树、网络流
5.数论 //解模线性方程
6.计算几何 //凸壳、同等安置矩形的并的面积与周长
7.组合数学 //Polya定理
8.模拟 
9.数据结构 //并查集、堆
10.博弈论 
//表示举例

非主流算法:
1.送分题 
2.构造 
3.高精度 
4.几何 
5.排序 
6.日期/时间处理 (这类题目相当多的)
7.数学方法 
8.枚举 
9.递推 
10.递归 
11.分治 


说明:
显然“送分题”不是一种算法。但是ACM竞赛中经常有一些很简单很简单的题目,具体涉及内容繁杂,难以归类,干脆就管他们叫送分题。
几何不同于计算几何,计算几何或者叫S计算几何,以Shamos在1975年发表的一篇论文为诞生标志。其实两者有很大的不同。

部分题目分类统计:

网络流:
最大流:
1087 a plug for UNIX
1149 PIGS
1273 drainage ditches
1274 the perfect stall
1325 machine schedule
1459 power network
2239 selecting courses
最小费用最大流:
2195 going home
?2400 supervisor, supervisee

压缩存储的DP
1038 bugs integrated inc
1185 炮兵阵地
2430 lazy cow

最长公共子串(LCS):
1080 human gene functions
1159 palindrome
1458 common subsequence
2192 zipper

凸包
1113 wall
2187 beauty contest


---------------------------------------------------------------------------------------------------------------------------

说明:递推算动归, 离散化算数据结构, 并查集算数据结构, 博弈算动归, 麻烦题一般都是不错的综合题, 最短路算图论,数据的有序化算排序

麻烦题:
1697, 1712, 1713, 1720, 1729, 1765, 1772, 1858, 1872, 1960, 1963, 2050, 2122, 2162, 2219, 2237,

简单题目:
1000, 1003, 1004, 1005, 1007, 1046, 1207, 1226, 1401, 1504, 1552, 1607, 1657, 1658, 1674, 1799, 1862, 1906, 1922, 1929, 1931, 1969, 1976, 2000, 2005, 2017, 2027, 2070, 2101, 2105, 2109, 2116, 2136, 2160, 2190, 2232, 2234, 2275, 2301, 2350, 2363, 2389, 2393, 2413, 2419,
推荐:
1063, 1064, 1131, 1140, 1715, 2163,

杂题:
1014, 1218, 1316, 1455, 1517, 1547, 1580, 1604, 1663, 1678, 1749, 1804, 2013, 2014, 2056, 2059, 2100, 2188, 2189, 2218, 2229, 2249, 2290, 2302, 2304, 2309, 2313, 2316, 2323, 2326, 2368, 2369, 2371, 2402, 2405, 2407,
推荐:
1146, 1147, 1148, 1171, 1389, 1433, 1468, 1519, 1631, 1646, 1672, 1681, 1700, 1701, 1705, 1728, 1735, 1736, 1752, 1754, 1755, 1769, 1781, 1787, 1796, 1797, 1833, 1844, 1882, 1933, 1941, 1978, 2128, 2166, 2328, 2383, 2420,

高精度:
1001, 1220, 1405, 1503,

排序:
1002, 1318, 1877, 1928, 1971, 1974, 1990, 2001, 2002, 2092, 2379, 2388, 2418,
推荐:
1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1840, 2201, 2376, 2377, 2380,

搜索
容易:
1128, 1166, 1176, 1231, 1256, 1270, 1321, 1543, 1606, 1664, 1731, 1742, 1745, 1847, 1915, 1950, 2038, 2157, 2182, 2183, 2381, 2386, 2426,
不易:
1024, 1054, 1117, 1167, 1708, 1746, 1775, 1878, 1903, 1966, 2046, 2197, 2349,
推荐:
1011, 1190, 1191, 1416, 1579, 1632, 1639, 1659, 1680, 1683, 1691, 1709, 1714, 1753, 1771, 1826, 1855, 1856, 1890, 1924, 1935, 1948, 1979, 1980, 2170, 2288, 2331, 2339, 2340,

数据结构
容易:
1182, 1656, 2021, 2023, 2051, 2153, 2227, 2236, 2247, 2352, 2395,
不易:
1145, 1177, 1195, 1227, 1661, 1834,
推荐:
1330, 1338, 1451, 1470, 1634, 1689, 1693, 1703, 1724, 1988, 2004, 2010, 2119, 2274,

动态规划
容易:
1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740, 1742, 1887, 1926, 1936, 1952, 1953, 1958, 1959, 1962, 1975, 1989, 2018, 2029, 2033, 2063, 2081, 2082, 2181, 2184, 2192, 2231, 2279, 2329, 2336, 2346, 2353, 2355, 2356, 2385, 2392, 2424,
不易:
1019, 1037, 1080, 1112, 1141, 1170, 1192, 1239, 1655, 1695, 1707, 1733, 1737, 1837, 1850, 1920, 1934, 1937, 1964, 2039, 2138, 2151, 2161, 2178,
推荐:
1015, 1635, 1636, 1671, 1682, 1692, 1704, 1717, 1722, 1726, 1732, 1770, 1821, 1853, 1949, 2019, 2127, 2176, 2228, 2287, 2342, 2374, 2378, 2384, 2411,

字符串:
1488, 1598, 1686, 1706, 1747, 1748, 1750, 1760, 1782, 1790, 1866, 1888, 1896, 1951, 2003, 2121, 2141, 2145, 2159, 2337, 2359, 2372, 2406, 2408,

贪心:
1042, 1065, 1230, 1323, 1477, 1716, 1784,

图论
容易:
1161, 1164, 1258, 1175, 1308, 1364, 1776, 1789, 1861, 1939, 1940, 1943, 2075, 2139, 2387, 2394, 2421,
不易:
1041, 1062, 1158, 1172, 1201, 1275, 1718, 1734, 1751, 1904, 1932, 2173, 2175, 2296,
网络流:
1087, 1273, 1698, 1815, 2195,
匹配:
1274, 1422, 1469, 1719, 2060, 2239,
Euler:
1237, 1637, 1394, 2230,
推荐:
2049, 2186,

计算几何
容易:
1319, 1654, 1673, 1675, 1836, 2074, 2137, 2318,
不易:
1685, 1687, 1696, 1873, 1901, 2172, 2333,
凸包:
1113, 1228, 1794, 2007, 2187,

模拟
容易:
1006, 1008, 1013, 1016, 1017, 1169, 1298, 1326, 1350, 1363, 1676, 1786, 1791, 1835, 1970, 2317, 2325, 2390,
不易:
1012, 1082, 1099, 1114, 1642, 1677, 1684, 1886,

数学
容易:
1061, 1091, 1142, 1289, 1305, 1306, 1320, 1565, 1665, 1666, 1730, 1894, 1914, 2006, 2042, 2142, 2158, 2174, 2262, 2305, 2321, 2348,
不易:
1067, 1183, 1430, 1759, 1868, 1942, 2167, 2171, 2327,
推荐:
1423, 1450, 1640, 1702, 1710, 1721, 1761, 1830, 1930, 2140,

 

第一页有几题没写,有机会补上(嗯,忘了就是另一回事了)。

这个是无聊的时候刷了第一页。。存到博客上当做纪念吧。。

 

hdu1000 简单题 难度1
计算a+b的值


hdu1001 简单题 难度1
计算1+2+...+n


hdu1002 简单题 难度1
大数a+b


hdu1003 dp 难度2
最大连续子序和


hdu1004 简单题 难度1
求出现次数最多的字符串。
方法:
简单方法是应用map


hdu1005 简单题 难度1
求f(n)=(A*f(n-1)+B*f(n-2))mod 7。
方法:
由于只是对7取余,所以可以(f(n-1)%7,f(n-2)%7)最多49种,会构成长度小于49的循环,之后直接推导即可。也可以用矩阵连乘的方法解决(最简单的矩阵连乘,如果学过,这个方法最简单)。


hdu1006 数学,枚举 难度6
给定一个度数n,问一天24小时,时针,分针和秒针分别与其余两针分离都大于n的时间占一天时间的百分比。注意时间是连续的。
方法:
这题主要的难度在于找到简便的方法。比较有效的方法就是理解每次所有的针从有重合到再次有重合至多有一段连续的段符合三针分离度大于n。然后枚举每个重合到重合的时间段。
题解链接:http://blog.csdn.net/a601025382s/article/details/37814777


hdu1007 最近点对 难度2
求n个点钟最近的点对距离的二分之一。
方法:
直接套模板。也可以学下分治方法。
题解链接:http://blog.csdn.net/a601025382s/article/details/37822795


hdu1008 简单题 难度1
有一架电梯,上一层需要6秒,下一层需要4秒,停一层需要5秒,给定一个序列,问电梯运行完成需要多久。电梯起始位置为0层,最后不需要回到0层。


hdu1009 简单题 难度1
有m个房间,里边有x物资xi,需要yi的y物资交换,现在有n个y物资,问最多能换多少?可以按比例交换,不需要整个房间交换。
方法:
按价值排序,从优交换即可。


hdu1010 dfs 难度2
走迷宫,路只能走一遍,门只能在特定时间t。
方法:
特别注意剪枝,
1)当时间到t却还没到门口,那之后就不用再走了;
2)从起点到门的最短距离为d,那么中间无论怎么乱走都是d+2*x的步数(想想就能知道),即d与t同奇同偶,一开始可以排除大部分情况;
3)路的个数比t小,也可以排除


*hdu1011 树形DP


hdu1012 简单题 难度1
无输入,只要输出0<=n<=9时的所有函数值e即可


hdu1013 简单题 难度1
给定一个数,将这个数的各个位数相加,如此反复,直到数字为个位数为止。


hdu1014 简单题 难度1
方法:
思维题,想到只有两数互质才能出现good choice情况,所以只要判断两数是否互质即可。输出用%10d


hdu1015 枚举/dfs 难度1
输入整数n和大写字母字符串,在字符串中找出5个字符,将其转换成1~26的数字,使得公式v-w^2+x^3-y^4+z^5=n。
方法:
用dfs枚举所有情况,复杂度最高为12^5,这题需要注意的是输出结果取字典数最大的,所以需要先将字符从大到小排序。


hdu1016 dfs 难度2
给定一个数n,将1~n的数构成一个环,使得任意两个相邻的数之和为素数。
方法:
先预处理出所有两两相加为素数的数对。然后从1开始用dfs枚举下一个数,直到构成环。
题解链接:http://blog.csdn.net/a601025382s/article/details/37922231


hdu1017 枚举 难度1
找出所有a,b(0 方法:
枚举所有的a,b即可。注意格式,每两个测试示例之间有一个空行。


hdu1018 数学 难度1
给定整数n(1<=n<=1e7),求n!的长度。
方法:
用ans=log10(n!),ans的整数部分+1就是n!的长度
(ans分成整数部分a和小数部分b,那么n!=10^(a+b)=(10^b)*10^a,10^b为整数位为1位的小数,相当于科学技术法,那么长度就是a+1了)。
这个方法耗时很长,984MS。。


hdu1019 数学/最小公倍数 难度1
给定n个数,求这n个数的最小公倍数
方法:
逐个求最小公倍数即可。


hdu1020 简单题 难度1
给定一个大写字母字符串,将字符串中连续的相同字母,装好成kX形式。k表示连续的个数,个数为1时省略k,X为连续的字母。


hdu1021 简单题/循环 难度1
已知F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2),给定一个整数n,求F(n)是否能被三整除。
方法:
1.将每个F(i)对3取余,会发现,f(i)会在0,1,2上构成循环。(1,2,0,2,2,1,0,1,)1,2,...发现8个一循环。
2.直接矩阵连乘求的。


hdu1022 堆栈 简单1
给定两个字符串a和b,问能否通过堆栈的方式将a变成b
方法:
直接堆栈即可。注意堆栈要清空。


hdu1023 dp/卡特兰数 难度2
一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列
方法:
1.dp。dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];入栈+出栈共i次,入栈比出栈多j次
2.卡特兰数。结果符合卡特兰数规律,可以直接套用卡特兰数公式。
结果太大,需要大数处理。也可以直接打表。
题解代码:http://blog.csdn.net/a601025382s/article/details/37928449


hdu1024 dp 难度3
输入m和n,给出一个n长数字序列。问m个不交叉连续段之和最大为多少。
方法:
dp。
dp[i][j]表示前j个序列数字,找出i段,且a[j]包含在段内时,最大的和。
dp[i][j]=max(dp[i][j-1]+a[j],max(dp[i-1][k])+a[j])(0 题解链接:http://blog.csdn.net/a601025382s/article/details/37931599


hdu1025 最长上升子序列(dp) 难度2
对于两条平行线上的点,求最大的一对一连线,使得所有连线都不相交。
方法:
根据第一条线的序号从小到大排序,求相对应的第二根线序列的最长上升子序列即可。
注意:输出时,一条线的时候用road,多条线的时候用roads
题解链接:http://blog.csdn.net/a601025382s/article/details/38032251


hdu1026 bfs 难度2
给定一个迷宫n*m,求从(0,0)到(n-1,m-1)。其中在经典迷宫上加了数字'n',表示在这个格子中有怪物,需要号n秒去打败才能继续前进。
方法:
由于在BFS的时候,不是最先到达就是最短时间,所以标志vis[i][j]表示的意义变为到达(i,j)的最短时间。当出现耗时大于vis[i][j]的路径时可以省略。
题解代码:http://blog.csdn.net/a601025382s/article/details/38034615


hdu1027 DFS/STL 难度2
给定一个序列1,2,...,n作为第一个序列,n长序列共有n!个排列。求字典序排列后,第m个序列。
方法:
1)由于排列数是n!,所以8个数的排列就必定大于m(1<=m<=10000)了,用DFS找出8个数的前10000种排列即可。其他的n可以通过n=8来推导出来。
2)直接使用STL中的函数next_permutation(a,a+n)得到下一个序列。
两种方法这题耗时都是15MS,不过第二种写法简便,而第一种对大量数据时比较有效


hdu1028 母函数/dp 难度2
整数划分n。
方法:
1)母函数。g(x)=(1+x+x^2+...)*(1+x^2+x^4+..)*...*(1+x^n),其中x^n的系数就是答案
2)dp。dp[i][j]表示将i划分成1~j有多少种方式。dp[i][j]=dp[i][i](j>i),dp[i][j]=dp[i][j-1]+dp[i-j][i](j<=i);
题解代码:http://blog.csdn.net/a601025382s/article/details/38057901


hdu1029 简单题 难度1
求n个数中,出现次数不小于(n+1)/2的数,n为奇数。
方法:
排序后,直接查找每个数的个数。


hdu1030 简单题 难度1
找出两个数m和n间的距离。
方法:
我们把上下两个相连的三角形构成的菱形看做一个格,右斜线看做横坐标,有斜线看做纵坐标,也是四个方向(0,-1),(0,1),(-1,0),(1,0)变化,
那么就相当于直角坐标了。
从(x1,y1)到(x2,y2),这是斜角坐标,距离dis=abs(x1-x2)+abs(y1-y2);我们还需要考虑菱形中的移动,这个都是一层移动一次。
所以答案ans=dis+abs(a-b)=abs(x1-x2)+abs(y1-y2)+abs(a-b),其中a和b表示各自层数,x1,y1,x2,y2表示两个数所在菱形在斜角坐标系的位置。




hdu1031 简单题 难度1
给定n个人对m间衣服元素的满意度,选择总满意度最大的k件(总满意度相同时选择序号较小的),从大到小输出衣服元素序号。
方法:
二次排序。


hdu1032 简单题 难度1
给定一个范围[i,j],问这个范围内最大的循环数。循环数:n是奇数就n=n*3+1,n是偶数就n=n/2,直到n=1,总的操作步数就是循环数。
方法:
直接暴力求出范围内所有的数的循环数,输出最大的。


hdu1033 简单题 难度1
输入由'A'和'V'组成的字符串。A表示顺时针转90度,V表示逆时针转90度。开始位置(310,420),方向向右


hdu1034 简单题 难度1
有n个小孩,起始每个小孩都有偶数颗糖果。每次操作,小孩都将自己一半的糖果给右边的孩子,然后奇数糖果的小孩从老师那拿到一颗糖果。
问经过多少次操作,每个孩子手中的糖果一样多。
方法:
模拟操作即可。


hdu1035 简单题 难度1
给定一个n*m的矩阵,矩阵由ESWN字母组成,表示方向。再输入k,表示机器人从矩阵北方第k格进入。每前进一格,机器人根据格子中的字母改变方向。
问需要多少时间才能走出矩阵,或者走几步后会陷入几步的循环。
方法:
模拟走法,用vis[i][j]记录走到(i,j)时花的时间,以及标记走过,用来判断是否成环,以及环长。用num记录已经走过的步数。


hdu1036 简单题 难度1
给定圈数n,总距离d。之后输入队伍编号num,每圈的耗时。求平均每km需要多少时间。
注意:格式,%3d表示占3格,%02d表示占两格,不满则前补0。最后的时间四舍五入。


hdu1037 简单题 难度1
输入三个地下通道的高度,问是否有不大于168的,若有输出最前面的一个。


hdu1038 简单题 难度1
给定直径d英寸,圈数r圈,时间t秒,问自行车行驶的距离,以及时速。
注意:单位的转换。


hdu1039 简单题 难度1
给定一个字符串,判断是否符合下列规则
1)至少存在一个元音
2)不存在连续三个元音,也不存在连续三个辅音
3)不存在连续两个相同的字母,除了oo和ee


hdu1040 简单题 难度1
给定一个序列,升序排列后输出。
方法:
直接调用STL中sort方法,时间复杂度nlogn


hdu1041 简单题 难度1
从1,开始,变化规律为0变成10,1变成01,经过n次变换后,问连续的0有多少个。例:1->01->1001->01101001
方法:
列举前面几次的变换,得到数据0,1,1,3,5,11,21,...发现规律f[i]=f[i-1]+2*f[i-2],预处理出来,当i=1000时很大,需要大数处理。
结果可以打表输出。


hdu1042 大数 难度2
求n!,数据太大,需要大数处理。
方法:
由于n=10000时,长度达到40000,所以不能一位存储,需要一次存储多位。选5位长度可以避免64位。
注意:输出时,需要补齐长度,用%05d


hdu1043 双向BFS/A*算法 难度3
给定一个长度为9的序列,表示3*3矩阵,由1~8数字和字母x组成。每次操作x都可以与相邻的数字交换,问需要通过怎么样的操作才能使序列变为{1,2,3,4,5,6,7,8,x}
方法:
1)双向BFS
需要通过8个数字的逆序数的奇偶性来特判是否能成功变换得到结果。
需要将9个字母的组成的序列转换成数字,表示序列在排列中的第几个,总共360000左右各数,便于哈希。
双向bfs,缩短时间,但耗时仍旧很长
2)A*算法
通过估计函数缩短时间的求最短路算法,BFS是A*算法中的特例。
题解代码:http://blog.csdn.net/a601025382s/article/details/38091457


hdu1044 bfs+状态压缩/bfs+dfs 难度2
有一个迷宫,需要在规定时间离开,在离开前尽可能拿到珍宝,问最大能拿到的珍宝价值和为多少。
方法:
1)bfs+状态压缩
将珍宝状态压缩,用l位二进制表示l个珍宝的获取状态,每次获得珍宝时,转换状态。这种方法耗时很高。
2)bfs=dfs
用bfs找出起点到各个珍宝以及出口的最短路径,找出各个珍宝到其他珍宝和出口的最短路径。
然后dfs找出其中价值最高,但耗时不超过时间t的路径。
题解代码:http://blog.csdn.net/a601025382s/article/details/38116577


hdu1045 枚举 难度1
给定一个n*n的矩阵,里边存在墙和路,在路上放尽可能多的炮(能攻击四个方向的所有炮,除了被墙挡住)使得没有炮能攻击到其他炮。
方法:
枚举t(1<=t<2^(n*n)),t转换成二进制,1表示该位置放炮,0表示不放炮,判断是否可以成立,找出最大放炮数。


hdu1046 简单题 难度1
给定n*m的格点,问从一个角开始,遍历所有的点一次然后回到起点的最短距离。
方法:
若n是偶数,我们可以将m的最后一列留出来和n的最下面一行,为了回来,而剩余的段走S形完全遍历;m是偶数时同理,共n*m。
若都是奇数时,上述走法就不能成立,必须走一次斜线,才能变成上面的情况。共n*m-1+sqrt(2)。


hdu1047 简单题 难度1
大整数加法。


hdu1048 简单题 难度1
将给定的字符串,通过特定编码,转换成另一字符串。


hdu1049 简单题 难度1
一个井深n英寸,一只虫子每分钟爬u英寸,然后休息一分钟,滑下d英寸,问多少分钟后虫子能爬出井。
方法:
小学数学竞赛题,不断做,不断错,哎,小学的时候不长记性啊。。


hdu1050 简单题 难度1
两个走廊,两边各200各房间,一边编号1,3,5...,现在是从一个房间搬到另一个房间,耗时10分钟,
当搬运过程与其他搬运过程公用相同部分走廊时需要分次序搬运,问最少需要耗时多久。
方法:
找走廊各房间前最大重叠次数就可以了。


hdu1051 贪心 难度1
给定一堆木棍,处理第一根木棍需要准备1分钟,处理时间不记,每根木棍都有长度l和质量w,当下次处理的木棍l'>l且w'>w,则不需要准备时间。求处理所有木棍的时间。


hdu1052 dp 难度3
田忌赛马,胜得200分,平0分,负-200分。已知战斗力,现在需要安排顺序使得得分最高。
方法:
最开始想用贪心,但后来发现在有很多相等速度马的情况下,很难贪心出来。所以需要用dp。
dp[i][j]表示打了i场比赛,用了j匹慢马(从最慢的开始用)和i-j匹快马(从最快的开始用)时的最优成绩。
原理:也算是一种变着法的贪心把。我们将国王的马从大到小排序,我们要么用最好的马战胜掉,要么用最差的马顶掉。
若不用最差的马还是输了,那最差的马还是要输给别的马,当然用最差的马好;若没有输,那用好马战胜,也用这匹马战胜的效果相同,都比国王剩下的马都强。
若不用最好的马去战斗,若不能战胜那肯定不用说是费的;若能战胜,那么肯定也能战胜国王剩余的马,保留这匹马和保留最最好的马的效果一样。
dp[i][j]=max(dp[i-1][j]+judge(n-i+j,i-1),dp[i-1][j-1]+judge(j-1,i-1));
题解代码:http://blog.csdn.net/a601025382s/article/details/38125045


hdu1053 哈夫曼树 难度1
给定一个字符串,每个字符占8位,求用哈夫曼树编码后的总占位数以及压缩比。
方法:
哈夫曼树处理时,先找出所有的字符,以及其出现的次数,作为节点,全部加入队列。每次处理是取出现次数最少的两个节点,指向一个新节点,
将这个新节点加入队列,直到队列中只剩一个。这样就能原节点和新节点构成一颗二叉树。编码时二叉树左连线编码0,右连线编码1,编码所有连线。
那么一个节点的编码就是到根节点所有连线上编码的组合。


hdu1054 最大匹配 难度2
给定一颗树,求最小顶点覆盖。
题解:
树必定可以划分成二分图,二分图最小顶点覆盖=二分图最大匹配。
题解代码:http://blog.csdn.net/a601025382s/article/details/11265531


*hdu1055 贪心 难度5




hdu1056 简单题 难度1
给定数字a,找出最小的n,使得1/2+1/3+...+1/n大于a。


hdu1057 模拟题 难度1
给定天数n,给定D[0]~D[15]给定一个20*20的矩阵,每个格子内有一个0~3的数字,表示细菌数。
每天,每个格子将加上D[k],k表示这个格子以及上下左右相邻格子的细菌之和(矩阵外格子算作0个细菌,每格细菌个数不能超过3,不能低于0)。
问n天后的细菌情况。


hdu1058 简单题 难度1
将质数因子只有2,3,5或7的数称为谦逊数。现在输入n,输出第n个谦虚数。
方法:
预处理出所有谦逊数。
注意:输出的个数,n是尾数11,12,13时是th,其他尾数是1,2,3的是st,nd,rd。


hdu1059 多重背包 难度1
有6种石头,价值1~6,已知石头的个数,问能够平分成等价值两份。
方法:
多重背包,可以用做学习多重背包的基础题目。


hdu1060 数学 难度1
给定整数n(1<=n<=1000,000,000),求n^n的最左边的数字是多少。
方法:
ans=log10(n^n)=nlog10(n),将ans分整数部分和小数部分ans-=(LL)ans(其中LL 是__int64,会爆int32),
那么10^ans就是n^n前端,且只有整数部分只有一位的浮点型,答案就是(int)ans;


hdu1061 数学 难度1
给定整数n,求n^n的末尾数字多少。
方法:
末尾数字只有n的末尾数字有关,且会构成循环,找循环输出即可。


hdu1062 简单题 难度1
输出一行字符串,将每个的字符串逆序输出。
注意:用gets读入,要用getchar()接收换行符。空格可能存在前后,单词间空格可能多个,多余空格不能删除


hdu1063 数学 难度2
给定一个浮点型数a,整数n,求a^n,要求不丢失精度。
方法:
先将小数点去掉,剩下整数,作大数乘法,再加上小数点,增加小数部分不够的零以及删除小数部分后导零。
注意:输出结果是整数时,后面不能跟小数点。输出结果小于1时,整数部分的0不输出。


hdu1064 简单题 难度1
输入12个浮点数,求它们的平均值。


hdu1065 简单题 难度1
给定一个坐标(x,y),一个半圆从原点开始,每年涨50面积,问多少年涨到(x,y)。
注意:该题pi=3.1415926,输出后面没有空格。


hdu1066 数学题 难度3
求n!最后一位非零数。




*hdu1067 哈希+bfs 难度3
将整个表哈希,然后BFS,每次走一步。


hdu1068 最大独立集(二分图匹配) 难度2
给定n个人之间的关联,问最大子集,使得子集的所有人都没有相互关联。
方法:
最大独立集模板题。最大独立集=n-最大匹配。由于本身的图可能不是二分图,所以需要镜像所有点,原有点和镜像点的关系就是二分图。
最大匹配为ans,那么最大独立集就是n-ans/2(为本身是二分图的一半);


hdu1069 dp 难度1
给定n种箱子,每种箱子个数不限,每个箱子三边分别为(xi,yi,zi),分别表示长宽高,箱子可以旋转使得长宽高交换。
两个箱子i,j,只有i.x>j.x&&i.y>j.y,j箱子才能放到i上方,问最高队可以堆叠多高。
方法:
将一个箱子转换成6种固定长宽高的箱子,然后对箱子以x从小到大排序(x相等时可以根据y来排序),然后dp。dp[i]表示已第i个箱子为底最高能堆得高度。
dp[i]=max(dp[i],dp[k]+e[i].z),(0<=k

hdu1070 简单题 难度1
超市有n种牛奶,价格pi,体积vi,每天喝200ML牛奶,当盒子中牛奶小于200ML时会被丢弃,当牛奶超过5天时会被丢弃。
问最便宜(总价/能够喝的天数)的牛奶,当存在多个价格最小牛奶时,输出体积最大的一个。
方法:
体积小于200ML的牛奶价格价格计无穷,当体积大于1000ML时计1000MS(超过5天的不能喝)。求出所有单价之后排序。


hdu1071 数学 难度1
已知抛物线顶点P1和直线相交的两个交点P2,P3,求抛物线与直线之间的面积。
方法:
y=a*x^2+b*x+c,积分∫y=1/3*a*x^3+1/2*b*x^2+c*x。积分求得抛物线[x2,x3]之间的面见,减去P2,P3与横坐标构成的梯形面积就是答案了。


hdu1072 bfs 难度2
一个迷宫里,一个人身上存在定时炸弹,定时6秒,迷宫内存在重置器地点,到达地点后可以将时间重置为6s秒,求最短的时间逃出迷宫,逃不出去输出-1.
方法:
用key表示各种状态(到达重置器位置时更改状态,因为以前的标识无效了),将到达的重置位置设置为墙(回来这个位置没有意义)。之后就是正常的bfs。
题解代码:http://blog.csdn.net/a601025382s/article/details/37959971


hdu1073 字符串 难度1
匹配字符串,输出ac,pe,wa三种状态。


hdu1074 dp+状态压缩 难度2
修斯有n(1<=n<=15)个作业要赶, 每个作业都有一个限期和完成需要的时间,当作业超过时限还没有完成的时候,每超过一天,
这门课的老师会扣除这门课期末成绩1分。问如何安排作业可以使扣除的分数最少,若存在多种情况,按作业排前的优先,即作业序号字典优先。
方法:
状态压缩n个作业为i,i在二进制下第j位是1时,表示第j个作业已经被完成,否则没有。
之后dp[i].num=min(dp[i].num,dp[k].num+e[j].t)((k|j)==i&&(k&j)==0)
题解代码:http://blog.csdn.net/a601025382s/article/details/38277027


hdu1075 字符串 难度1
给定字符串翻译字典,给定一行字符,将这行中存在于字典中的字符串翻译,其余不改变输出。
方法:
用map映射单词,遍历一行字符,找出字符串后判断map中是否存在后输出。


hdu1076 简单题 难度1
已知y和n,y表示当前是第几年,问之后n个闰年是什么时候。
方法:
预处理20000个闰年f[i],二分查找y是第k个,输出f[k+n]。


*hdu1077 计算几何 难度3
用半径为1的渔网捕获尽可能多的鱼。


hdu1078 dfs 难度2
有个n*n的矩阵,每个格子当中有一个体积为e[i][j]的奶酪,一只老鼠从(0,0)位置出发,每次只能往横坐标方向走或者只能往纵坐标方向走,
每次至多走k步,下一步位置的奶酪体积必须比上一次的奶酪体积要大。求最多能吃到多少体积的奶酪。
方法:
用dfs搜索路径,由于每次都只能吃更大的体积的奶酪,所以不会出现回到已经经过位置的情况。可以用数组dp[i][j]保存(i,j)位置最大搜索值,
即记忆化,别的方向的搜索搜到这个位置的时候可以直接调用dp[i][j]而不用再次搜索,节约时间,称为记忆化搜索。
题解代码:http://blog.csdn.net/a601025382s/article/details/38292849


hdu1079 博弈 难度2
亚当和夏娃玩一个游戏,给定一个开始时间y-m-d,轮流进行操作,谁先到达2001-11-4,谁就获胜。
每次操作可以前进一天y-m-d+1或者前进一个月y-m+1-d,前进的时间必须合法(在2001-11-4之前且日期合法)。亚当先走,亚当获胜输出YES,否则输出NO。
方法:
1)找规律也可以,在(b+c)%2==0||b==9&&c==30||b==11&&c==30,的情况都输出YES,否则输出NO。abc表示年月日,
2)用到sg函数,找出所有日期的sg函数值,然后判断给定日常的sg函数值是否是0,0则输,不是0则赢。
题解代码:http://blog.csdn.net/a601025382s/article/details/38298783


hdu1080 dp 难度2
给定两个基因,对比两个基因的相似度。即给定一个表,行列项均为ACTG-,表示基因,表内数字表示行和列对应基因的相似度,-为空。
先给定两个字符串表示基因a和b,长度分别为n和m,我们可以在字符串中间加入-,使得两个字符串长度相同;现在问通过加入-,最大的基因相似度是多少?
方法:
dp[i][j]表示用了a串用了前i个字符,b串用了前j个字符的情况下,得到的最大基因值。答案就是dp[n][m]。
由于‘-’不能和‘-’配对,所以可以得出dp公式:
dp[i][j]=max(dp[i-1][j-1]+get_num(a[i-1],b[j-1]),dp[i-1][j]+get_num(a[i-1,]'-'),dp[i][j-1]+get_num('-',b[j-1]));
代码链接:http://blog.csdn.net/a601025382s/article/details/38299917


hdu1081 dp 难度2
求一个矩阵的最大子矩阵和。
方法:
枚举子矩阵高度k和开始行i,我们可以在O(n)时间内求得f序列,f[j]=e[i][j]+...+e[i+k-1][j](这个预处理sum[i][j]=e[1][j]+..+e[i][j]即可),
之后求是f序列的最大连续子序列和了。


hdu1082 堆栈 难度1
已知n个矩阵的行和列,给定一个序列,求根据这个序列构成的矩阵乘法顺序需要的几次矩阵元素相乘。
方法:
堆栈:当遇到矩阵时,加入栈;当遇到右括号时,将两个矩阵出栈相乘后再压入栈,同时计算乘法次数。


hdu1083 最大匹配 难度1
有p门课程和n个学生,已知选择每门课程的学生,问是否能找到p个不同的学生,使得p门课都有一个不同的学生代表,学生代表必须选择了这门课程。
方法:
以课程和学生建二分图,求最大匹配,如果最大匹配等于p,那么就能找到要求的p个学生,输出YES;否则不能找到,输出NO。


hdu1084 简单题 难度1
根据做题数以及题目完成时间给定分数。
方法:
根据做题数和时间排序,用num数组记录各个等级的人数,然后给人确定分数,之后根据编号再排序回来。


hdu1085 多重背包 难度1
已知1,2,5三种硬币的个数,求最小不能组成的价格。
方法;
令m等于三个硬币的总价值,以m为体积多重背包,最小不能被背包到的点就是答案


hdu1086 计算几何 难度1
判断n条线段的交点个数,相同的交点重复计算。
注意:端点相交


hdu1087 dp 难度1
已知一个序列,现在要找一个最大递增子序列。
方法:
dp[i]表示跳到i位置时最大能得到的分数,dp[i]=max(dp[k])+a[i](0<=k

hdu1088 模拟题 难度1
翻译一个html本文,文本中只出现标签



注意:输出时每行开头没有空格,每行最后没有空格,输入的每个字符之间都有空格或者换行。


hdu1089 简单题 难度1
求a+b。


hdu1090 简单题 难度1
多组输入求a+b。


hdu1091 简单题 难度1
多组输入,求a+b,以0,0输入结尾。


hdu1092 简单题 难度1
求多个数的和。输入0时结束


hdu1093 简单题 难度1
输入测试样例的个数T,输入n,输入n个数,求n个数的和。


hdu1094 简单题 难度1
输入到文本末while(scanf("%d",&n)!=EOF),求n个数的和。


hdu1095 简单题 难度1
求a+b,输出的每个测试样例后输出一个空行。


hdu1096 简单题 难度1
求多个数的和,每个测试样例之后输出一个空行。


hdu1097 简单题 难度1
求a^b的末位数字。


hdu1098 简单题 难度1
输入k,求整数a使得f(x)=5*x^13+13*x^5+k*a*x对任意x都是65的倍数。
方法:
f(x+1)=5*(x+1)^13+13*(x+1)^5+ka*(x+1)=5*(C(13,0)x^13+C(13,1)*x^12+...+C(13,0)*x^0)+13*(C(5,0)*x^5+...+C(5,5)x^0)+ka*x+ka=
f(x)+5*C(13,1)*x^12+...5*C(13,13)+13*C(5,1)*x^4+13*C(5,5)+k*a,对65取余,f(x+1)=13+5+ka=18+ka,是65的倍数。枚举a=1~65,
找到a使得a*k+18是65的倍数,若不存在输出no(a=66,(a*k+18)%65=(a%65*k%65+18)%65,等效于a=1,所以只用枚举1~65)。




hdu1099 数学 难度2
有n种彩票,现在要集齐所有彩票,求买齐彩票的期望购买张数。
方法:
买第一张自己没有的概率是n/n,买第二张自己没有的概率是(n-1)/n,期望需要买1/((n-1)/n)才能买到;买第三张的概率是(n-2)/n,
期望需要买1/((n-2)/n)张。。。所以答案ans=n/n+n/(n-1)+...+n/1;求分母最小公倍数,然后通分,化简,按格式输出。


hdu1100


hdu1106 简单题 难度1
给定一串由数字组成的串,将其中的5数字当成空格,将倍分割的数字排序输出。要求去掉前导零。
方法:
c=0,c=c*10+a[i],直到a[i]为5,将c加入数组,跳过a[i]==5,然后继续前面的步骤即可。最后排序数组输出。


hdu1108 简单题 难度1
球两个数的最小公倍数。
方法:
lcm=a/gcd(a,b)*b;gcd是最大公约数,用辗转相除法求得,int gcd(int a,int b){return b==0?a:gcd(b,a%b);}


hdu1172 简单题 难度1
电脑随机产生一个四位数,给定n个猜测,每个猜测包括猜测数,个数匹配数,位置匹配数。求是否有唯一符合的四位数,有则输出。
方法:
暴力枚举所有四位数,跟猜测比较,查看个数匹配数和位置匹配数是否相等。


hdu1173 简单题 难度1
给定一个直角坐标系,上面有n个点,表示金矿,现在要选择一个位置建设基地,使得到达所有金矿的距离和最小。距离计算:fabs(x1-x2)+fabs(y1+y2)。
方法:
分别求n个坐标的横坐标和纵坐标的中位数即可。(根据中位数的性质,这样的位置距离最短)


hdu1174 计算几何 难度1
CS中的警匪对战,已知匪的位置三维坐标,身高和头半径;警的位置,身高,头半径和子弹飞行方向向量。问是否能击毙匪。
方法:
这题比较水,不用判子弹方向是否是背离匪的脑袋的。只要计算出子弹的所在直线,匪脑袋的圆心,计算圆心到直线的距离和匪脑袋的半径比较即可。


hdu1175 模拟题 难度1
连连看,给定一个n*m矩阵,0表示空格,其他数表示特定图片,只有两个方块相同,转弯次数小于等于2次才能消掉。给定位置(x1,y1)和(x2,y2),
问两个位置上的方块能否消掉。
方法:
先用a[i][j][k]数组记录一个点各个方向上的连续0的个数。然后分情况讨论,一种没有转弯,直接判断中间是否有足够的连续0即可;
其余的算一种,这个又分两种,一种是走Z型,一种走N型,Z型则向左右两边延展找出所有可以用过的位置,然后再相同纵坐标的时候判断上下是否连通即可,
N型同理。


hdu1180 bfs 难度2
一张n*m地图上,S表示起点,T表示终点,*表示墙,.表示路,|表示竖着的梯子,能让在该位置的上下方向通行,-表示横着的梯子。每分钟梯子会变化一次,
从横到竖或者从竖到横。一个人只能上下左右移动,每次耗时1分钟;人不会在梯子上停留,经过梯子达到梯子对面只用一分钟。
可以在原地停留,问从起点到终点最少需要多少时间。
方法:
bfs,在碰到梯子时判断梯子位置情况,不同相则时间多加一,位置变为梯子对面。


hdu2007 简单题 难度1
球一段区间[n,m]内所有偶数的平方和以及所有奇数的立方和。
方法:
预处理数所有的e[i],e[i].x表示所有小大于i的偶数的平分和,e[i].y表示所有不大于i的奇数的立方和,答案就是e[m].x-e[n-1].x和e[m].y-e[n-1].y;
注意:0的情况(这题好像没有0的数据),以及n>m


hdu2008 简单题 难度1
统计n长的实数序列中,负数,零和正数的个数。


hdu2009 简单题 难度1
数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。


hdu2010 简单题 难度1
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身。求给定范围内的所有水仙花数。
方法:
先预处理出所有的水仙花数,然后根据范围输出。


hdu2011 简单题 难度1
求多项式1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...的前n项的和。


hdu2012 简单题 难度1
对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x

hdu2013 简单题 难度1
每天吃掉一半多一个的桃子,n天后剩下一个桃子,问开始有几个桃子。


hdu2014 简单题 难度1
给定n个分数。去掉一个最高分,一个最低分,然后求平均数。


hdu2015 简单题 难度1
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,
现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。


hdu2016 简单题 难度1
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。


hdu2017 简单题 难度1
对于给定的一个字符串,统计其中数字字符出现的次数。


hdu2018 简单题 难度1
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?


hdu2019 简单题 难度1
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序


hdu2020 简单题 难度1
输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。


hdu2021 简单题 难度1
已知人民币一共有100元、50元、10元、5元、2元和1元六种,用最少的人民币张数凑n元。
方法:
贪心,大的纸币先用。


hdu2022 简单题 难度1
求n*m矩阵中绝对值最大的数。


hdu2023 简单题 难度1
假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。


hdu2024 简单题 难度1
输入一个字符串,判断其是否是C的合法标识符。即字符串以字母或者下划线开头,由数字,下划线和字母组成的合法。


hdu2025 简单题 难度1
对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。


hdu2026 简单题 难度1
输入一个英文句子,将每个单词的第一个字母改成大写字母。


hdu2027 简单题 难度1
统计每个元音字母在字符串中出现的次数。


hdu2028 简单题 难度1
求n个数的最小公倍数。
方法:
lcm=a/gcd(a,b)*b;gcd()为求最大公约数,int gcd(int a,int b){return b==0?a:gcd(b,a%b);}


hdu2029 简单题 难度1
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。


hdu2030 简单题 难度1
统计给定文本文件中汉字的个数。
方法:
汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一位为1。 
计算机中, 补码第一位是符号位, 1 表示为 负数, 
所以 汉字机内码的每个字节表示的十进制数都是负数
统计输入字符串含有几个汉字,只只需求出字符串中小于0的字符有几个,将它除以2就得到答案


hdu2031 简单题 难度1
输入一个十进制数N,将它转换成R进制数输出。


hdu2032 简单题 难度1
输出n层杨辉三角。


hdu2033 简单题 难度1
求两个时间的和。


hdu2034 简单题 难度1
集合A-B,即输出A集合中与B集合重复的数。


hdu2035 简单题 难度1
求A^B的最后三位数表示的整数。


hdu2036 简单题 难度1
求n个点围成的多边形面积。


hdu2037 dp 难度1
给定n个电视节目的开始时间和结束时间,问最多可以完整的看完的节目的个数、
方法:
根据开始时间排序,dp[i]=max(dp[i],dp[j]+1)(e[j].y<=e[i].x,0<=j

hdu2039 简单题 难度1
给定三条边,请你判断一下能不能组成一个三角形。
注意:输入的是实数。


hdu2040 简单题 难度1
判断a和b是否是亲合数,亲和数就是a的所有真约数(不含本身的约数)和等于b,b的所有真约数和等于a。


hdu2041 dp 难度1
一开始在第一个台阶上,之后每次可以走一个台阶或者两个台阶,问走到n有多少种方法。
方法:
dp[i]=dp[i-1]+dp[i-2](n>=i>=3)


hdu2042 简单题 难度1
每次羊减少一半少一只,n次后剩余3只,问开始有几只。


hdu2043 简单题 难度1
判断难度是否安全。


hdu2044 简单题 难度1
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
注意:会超出int,需要用__int64


hdu2045 dp 难度1
给一行的n个格子染色,共有3种颜色,相邻格子不能同色,头尾不能同色,问有多少种染色方式。
方法:
dp[i][j],当j=0时表示i长格子的染色方法,j=1时表示,相邻格子染色不同,头尾染色相同的情况。
dp[i][0]=dp[i-1][0]+dp[i-1][1]*2;dp[i][1]=dp[i-1][0];
注意:会超出int


hdu2046 dp 难度1
在2*n的方格内放1*2的长条,有多少种放法。
方法:
dp[i]=dp[i-1]+dp[i-2];dp[i]表示2*i的格子的放法数。有两种放法:1是最后一个放竖条,那么有f[i-1],最后两格放两格横条,那么有f[i-2]种。
注意:超出int,dp[0]=1;


hdu2047 dp 难度1
由EOF三个字符组成的n长字符串,不出现O和O连续的情况有多少种?
方法:
dp[i][j],j=0表示结尾不是O的合法情况数,j=1表示结尾为O的合法情况数,ans=f[n][0]+f[n][1]。
dp[i][0]=(dp[i-1][0]+dp[i-1][1])*2,dp[i][1]=dp[i-1][0]。
注意:超出int


hdu2048 数学 难度1
有n个人,每个人在一张彩票写上自己的名字,放入盒子,然后每个人抽取一张,抽到自己名字的彩票则中奖,问都不中奖的概率。
方法:
用错排公式求得不中奖的情况数,即n长序列的排列,所有的元素都不在自己原来的位置上的情况数。然后求得概率。
dp[i]=(dp[i-1]+dp[i-2])*(n-1)或者ans=n!*(1/2!-1/3!+1/4!-1/5!+...+(-1)^n/n!)


hdu2049 数学 难度1
n对新人新婚,给每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排;
然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个.问有m个新郎找错,有多少种可能方式。
方法:
也是错排,现用组合数找出n-m个人,之后剩余的m个就是错排了。ans=c[n][n-m]*dp[m];dp[m]=(m-1)*(dp[m-1]+dp[m-2]);


hdu2050 简单题 难度1
问n条<型的折线最多能将平面分成几个部分。
方法:
找规律,每次增加一条折线所增加的区域数等于这条折线与原来的线至多有几个交点。
dp[1]=2,dp[i]=dp[i-1]+4*(i-1)+1;


hdu2051 简单题 难度1
将10进制数转换成二进制。


hdu2052 简单题 难度1
给定n和m,用+,-,|输出长宽为n和m的矩形。


hdu2053 简单题 难度1
输入一个整数n表示n次操作,第i次操作,将第i*k(k=1,2,....)个的灯开关(从开到关,或者从关到开),问n次操作后,第n个灯的状态。
方法:
求n的因子个数即可。欧拉函数。


hdu2054 简单题 难度1
判断两个数是否相等。
注意:可能是实数;数字很大,长度要开1e5,用字符串读入;可能存在前导零和后导零。


hdu2055 简单题 难度1
输入一个字母x和数字y,f(x)表示,当x为小写字母时f(x)=-(x-'a'+1),否则f(x)=x-'A'+1;求f(x)+y;


hdu2056 简单题 难度1
求两个矩阵相交区域的面积。
注意:用printf("%.2f\n",0.0);过了,用printf("%.2f\n",0);挂了。。


hdu2057 简单题 难度1
两个16进制数相加。


hdu2058 简单题 难度1
已知n和m,对于序列1,2,3...,n。找出所有和等于m的连续子序列。
方法:
起点为i,长度为k的连续序列,和为(2*i+k-1)*k/2=m,枚举k(1<=k<=sqrt(m*2))即可。


hdu2059 dp 难度2
龟兔赛跑,兔子固定移动速度vr,乌龟使用电瓶车v1,蹬电瓶车v2;电瓶车每次只能开c,路上有n个供电站,位置pi,充电时间t。
问乌龟是否可以赢兔子。
方法:
dp[i]表示到达pi(即之后要在pi充电)的最短时间,dp[i]=min(dp[k]+路上耗时)。


hdu4908


hdu4910 数学 难道3
输入一个正整数n(n<=1e18),输出所有的i相乘并对n取余所得的值。(gcd(i,n)==1,1<=i<=n)
方法:
找规律:将n分解分所有质因子相乘,质因子2个数为a,其余质因子个数为b,ans=(a==0?a:a-1)+b;当ans<2时结果为n-1,否则结果为1.
需要的知识:Miller_Rabin算法+线性筛
题解代码:http://blog.csdn.net/a601025382s/article/details/38379971

 

 

你可能感兴趣的:(菜鸟初识算法)