grep+ found these files to match your search:
p547.cpp: //easy, memoization, dp, number theory, perfect numbers, factors, gotcha p10243.cpp: //hard, graphs, dp, minimum vertex cover in a tree, good p11427.cpp: //medium, dp, math, probability p10578.cpp: //medium, game, minimax, dp, good, excellent p10532.cpp: //medium, math, number theory, combinatorics, dp, memoization, good p475.cpp: //medium, dp, longest common subsequence, wildcard matching, good, excellent, UNSOLVED: can't be judged :-( p10288.cpp: //medium, rational, math, probability, expected value, dp, good p747.cpp: //medium, dp, shortest path, dfs, cute, UNSOLVED: perhaps I gave up too soon p348.cpp: //medium, dp, matrix chain multiplication, classic, good, excellent p104.cpp: //medium, dp, arbitrage, good p11584.cpp: //medium, dp, strings, palindromes, good p106.cpp: //hard, super hard, math, number theory, dp, pythagorean triples, pythagoras p10681.cpp: //medium, graphs, adjacency matrix powers, dp p11176.cpp: //hard, dp, probability, good, excellent p10069.cpp: //medium, big int, dp, subsequences, memory efficiency, good, excellent p559.cpp: //hard, good, excellent, geometry, the squares game, limiting attention to endpoints p757.cpp: //hard, dp, good, efficiency, fishing p926.cpp: //medium, dp p10891.cpp: //medium, dp, game, minimax p10086.cpp: //hard, dp, good, excellent p10157.cpp: //hard, math, dp, big int, parenthesized expressions, good, UNSOLVED: BigInt is too slow; long double is too wrong. p648.cpp: //easy, partition, dp, ugly, UNSOLVED: ugly, confusing, stupid and demented p662.cpp: //hard, dp, good, excellent p10118.cpp: //medium, dp, memoization, good, excellent p580.cpp: //medium, good, excellent, good dp, dp, memoization, math, number theory, combinatorics, good example p10788.cpp: //medium, dp, parsing, parentheses, classic, good p10616.cpp: //hard, dp, coins, mod, good, excellent p672.cpp: //multiple input, medium, dp, limiting attention to endpoints, bad p882.cpp: //medium, dp, precomputation, dropping plates, mailboxes, classic, good excellent p909.cpp: //medium, dp, bitpack compression, UNSOLVED: what. p10100.cpp: //medium, dp, lcs, longest common subsequence, bad, horrible, retarded, demented p10604.cpp: //hard, dp, bitmasks p11150.cpp: //medium, greedy, dp, simulation, good, excellent p11153.cpp: //hard, dp, traveling salesman, bitmasks p837.cpp: //medium, geometry, endpoints, sets, good, excellent p10304.cpp: //medium, dp, trees, optimal binary search tree, bst, huffman, UNSOLVED: too slow, need O(n^2) p11301.cpp: //medium, dp p10081.cpp: //medium, math, combinatorics, dp, good p10400.cpp: //medium, dp, good, optimal expression without operator precedence, tricky, efficiency p10131.cpp: //medium, dp, longest increasing subsequence, lis, good p900.cpp: //easy, math, dp, good p787.cpp: //medium, dp, brute force, maximum substring product, maximum substring sum p10664.cpp: //easy, partition, coins, dp, good p11174.cpp: //hard, dp, number of topological sorts of a forest, efficiency, good, excellent p568.cpp: //easy, number theory, math, factorials, last nonzero digit, io, printf, short, dp, good p10593.cpp: //hard, dp, squares and rhombi on a grid, good p10313.cpp: //medium, good dp p10651.cpp: //medium, bitmasks, dp, precomputation, good p11137.cpp: //easy, dp, coins p11523.cpp: //medium, dp, blocks p11310.cpp: //easy, dp p231.cpp: //medium, longest increasing subsequence, dp, nlogn p10350.cpp: //medium, dp p11067.cpp: //easy, dp, number of monotone paths on a grid p11126.cpp: //hard, dp, memory efficiency p531.cpp: //medium, dp, lcs, longest common subsequence, path recovery, classic p714.cpp: //hard, very hard, dp, binary search, copying books, good, excellent p904.cpp: //medium, geometry, parallelepiped intersection, pseudogrid, limiting attention to endpoints, classic p643.cpp: //medium, simulation, dp, careful programming p526.cpp: //medium, dp, lcs, longest common subsequence, string distance, classic p10051.cpp: //medium, dp, clean dp, good p10559.cpp: //hard, very hard, dp, blocks, good, excellent p10133.cpp: //medium, io, dp, anal input, good p10218.cpp: //medium, probability, dp, memoization, binomial distribution, bad, UNSOLVED: WA p585.cpp: //medium, dp, triangle grid p10884.cpp: //hard, math, big int, dp p11090.cpp: //hard, graphs, shortest path, dp, binary search, good, gotcha p825.cpp: //easy, dp, number of right-down paths, good, excellent p571.cpp: //medium, math, water jugs, dp, memoization, number theory, good, bfs, excellent, macros p11753.cpp: //medium, dp, palindromes, lcs, longest common subsequence, clever, good, excellent p10285.cpp: //medium, bfs, dp, longest downhill path on a grid, good, excellent p473.cpp: //hard, iterative dp p497.cpp: //multiple input, medium, good dp, p231 p10818.cpp: //hard, graphs, dp, shortest path, hamiltonian path, traveling salesman p10312.cpp: //hard, super-catalan numbers, good dp p437.cpp: //medium, stacking boxes, dp, sort, longest increasing subsequence p10091.cpp: //medium, math, dp, graphs, probability, bad, gotcha, UNSOLVED: "It's total bullshit." Ozzy Osbourne p10317.cpp: //medium, math, dp, brute force, partition, coins, UNSOLVED: do this! I'm tired now. Careful with TLE. p583.cpp: //medium, math, dp, memoization, number theory, factors, primes, factorization, good, optimization p11407.cpp: //medium, dp, coins, math, number theory p164.cpp: //medium, dp, lcs, longest common subsequence, bad, wrong judge p11081.cpp: //medium, dp, lcs, longest common subsequence p11069.cpp: //medium, math, dp, short, good p574.cpp: //medium, dp, partition, coins, math, stl, iterators, reverse iterators p10271.cpp: //hard, ridiculously hard, dp, good, short p11521.cpp: //hard, very hard, dp, double dp, string compression p147.cpp: //medium, dp, coins, good, short p10549.cpp: //hard, dp, lis, lcs, stacking boxes, good, UNSOLVED: WA. Kill me. Kill me now! p11450.cpp: //easy, dp, coins p11375.cpp: //medium, big int, dp, digits p308.cpp: //medium, geometry, flood fill, limiting attention to endpoints, dfs, bfs, good, excellent p11517.cpp: //easy, dp, coins p10817.cpp: //hard, dp, bitmasks, good p10198.cpp: //medium, math, dp, big int, partition special case p10722.cpp: //medium, big int, dp, good, combinatorics p165.cpp: //hard, ridiculously hard, dp, stamps, math, combinatorics, backtracking, precomputation, coins, good, excellent p357.cpp: //easy, coins, dp, good, short p10536.cpp: //medium, dp, game, game of euler p10864.cpp: //medium, geometry, limiting attention to endpoints, flood fill, good p10405.cpp: //easy, dp, longest common subsequence, good, short p910.cpp: //easy, dp, graphs p10819.cpp: //medium, knapsack, dp, coins p10826.cpp: //hard, dp, good p11404.cpp: //hard, dp, iterative dp, palindromes, recovery, efficiency p562.cpp: //easy, partition, np-complete, dp, coins p10874.cpp: //easy, dp, good, excellent p10359.cpp: //medium, big int, dp, math, combinatorics, good p103.cpp: //medium, lis, longest increasing subsequence, dp p10644.cpp: //hard, dp, floor tiles, polyominoes p10581.cpp: //medium, math, dp, partitions, lexicographic, recursive p751.cpp: //dp, memoization, game, triangle war, dots and boxes p11088.cpp: //medium, dp, bitmasks p10049.cpp: //medium, math, dp, binary search, self-describing sequence, good, excellent, short p435.cpp: //hard, dp, coins, partition, banzhaf power index, good, excellent p711.cpp: //hard, dp, partition, good, excellent p10337.cpp: //easy, dp, classic p11133.cpp: //medium, math, dp, eigensequences, e-transform, good, excellent p452.cpp: //medium, graphs, topological sort, dp, efficiency, crazy input p11151.cpp: //medium, dp, palindromes p10259.cpp: //medium, dp, graphs, topological sort, bfs, dfs, careful reading, good, excellent p10066.cpp: //easy, dp, lcs, longest common subsequence, good p640.cpp: //medium, short, good, math, number theory, sieve, memoization, dp, no input p11084.cpp: //hard, dp, math, permutations, split-and-merge, bidirectional search, dp, good, excellent p10254.cpp: //medium, big int, math, dp, combinatorics, towers of hanoi, good p10404.cpp: //medium, dp, game, minimax, variation of nim p242.cpp: //medium, coins, stamps, dp, classic p10860.cpp: //medium, strings, substring check, dp, efficiency p10700.cpp: //medium, dp, math, maximum expression value among all parenthisations p10032.cpp: //medium, coins, dp p10482.cpp: //hard, dp, coins, good p10558.cpp: //medium, dp, UNSOLVED: Derek's problem... 100^3 is too slow. p11125.cpp: //medium, dp, gotcha p760.cpp: //hard, dp, lcs, longest common subsequence with recovery, good, UNSOLVED: need smarter backtracking p10007.cpp: //medium, math, dp, big int, catalan numbers p10306.cpp: //medium, partition, dp, coins in 2d, good, excellent p10688.cpp: //medium, dp, good p11061.cpp: //medium, dp, probability, precomputation, good p11022.cpp: //medium, dp p10702.cpp: //medium, graphs, shortest path of a given length, matrix multiplication, dp, good p116.cpp: //medium, dp, minimum weight left-right path through matrix, good, excellent p10721.cpp: //medium, dp, good, combinatorics p10130.cpp: //medium, knapsack, dp, coins p10617.cpp: //medium, dp, palindromes, strings, memoization, classic, good, excellent p10123.cpp: //medium, dp, good p11552.cpp: //easy, dp p10680.cpp: //hard, dp, math, number theory, lcm, last nonzero digit, sieve, primes p11095.cpp: //hard, graphs, vertex cover, split-and-merge, bidirectional search, dp, good, excellent p10739.cpp: //medium, dp, palindromes, short, good, excellent p10003.cpp: //medium, dp, good, excellent, short p11514.cpp: //medium, dp, bad p166.cpp: //medium, dp, coins p10453.cpp: //medium, palindromes, dp, good p11307.cpp: //medium, dp, trees p601.cpp: //easy, graphs, dfs, path game, memoization, dp p10419.cpp: //medium, primes, dp, partition, goldbach, UNSOLVED: times out p11600.cpp: //hard, dp, graphs, probability p10520.cpp: //easy, memoization, dp p251.cpp: //easy, simulation, dp, UNSOLVED: I don't understand sample output. p10238.cpp: //hard, math, big int, dp, probability, throwing dice, classic, UNSOLVED: hard as hell p10239.cpp: //medium, dp, good p674.cpp: //easy, coins, classic dp, good dp, good, short p11311.cpp: //medium, dp, minimax, game p10564.cpp: //medium, dp, path recovery, gotcha p10626.cpp: //medium, dp, memoization, sneaky, tricky, good p607.cpp: //medium, dp, good, UNSOLVED: O(n^3) is too slow p431.cpp: //medium, dp, knapsack p10862.cpp: //medium, big int, math, dp p10454.cpp: //hard, parsing, dp, trees, catalan numbers p11730.cpp: //easy, bfs, dp p11654.cpp: //medium, dp p11725.cpp: //medium, dp, bitmasks p10703.cpp: //medium, limiting attention to endpoints, space not covered by a union of rectangles, classic, good p11762.cpp: //medium, dp, sieve p11516.cpp: //medium, dp, binary search, scanline, intervals covering points p221.cpp: //medium, geometry, painting, sorting, scanline, limiting attention to endpoints p10759.cpp: //medium, rational numbers, rationals, math, combinatorics, dp, UNSOLVED: hard p10854.cpp: //medium, dp, number of execution paths p590.cpp: //medium, graphs, dp, shortest path of a given length, matrix multiplication, good, excellent p10723.cpp: //medium, dp, shortest common supersequence, gotcha, good, excellent p10373.cpp: //medium, knapsack, dp, coins p709.cpp: //medium, dp, justifying text, word processor, good p11052.cpp: //medium, dp p10446.cpp: //easy, math, dp, counting the number of time a recursive function is called, bad p10872.cpp: //hard, math, combinatorics, dp, short, tiny p10859.cpp: //hard, graphs, dp, minimum vertex cover on a tree
grep+ searches the database of Valladolid problems that I solved (or tried to). You can give it keywords like "dp", "graphs", "math", "brute force", etc. and it will give you a list of problem numbers that (in my opinion) match the keywords. The database contains 1408 problems.
Please ignore anything that appears after "UNSOLVED:". As you probably know, not being able to solve a problem after many attempts can be very frustrating.