Advertisement
Guest User

Untitled

a guest
Feb 2nd, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. // 1260. Nudnik Photographer - http://acm.timus.ru/problem.aspx?space=1&num=1260
  2.  
  3. #include <bits/stdc++.h>
  4.  
  5. using namespace std;
  6.  
  7. const int MAX_N = 56;
  8.  
  9. vector<vector<long long>> dp(MAX_N, vector<long long> (MAX_N, 0));
  10.  
  11. map<pair<long long, long long>, long long> memo;
  12.  
  13. long long rec(int n, int last_num, bitset<MAX_N> bset) {
  14. if (last_num < 1 || last_num > n) return 0;
  15. bset[last_num] = 0;
  16. cout << n << " " << last_num << "->" << bset << endl;
  17. if (n < 1) return 0;
  18. if (n == 1 && last_num != 1) return 0;
  19. if (n == 2 && last_num > 3) return 0;
  20.  
  21. if (memo.find({n, last_num}) != memo.end()) {
  22. return memo[{n, last_num}];
  23. }
  24.  
  25. long long ans = 0;
  26. if (bset[last_num - 2]) ans += rec(n - 1, last_num - 2, bset);
  27. if (bset[last_num - 1]) ans += rec(n - 1, last_num - 1, bset);
  28. if (bset[last_num + 2]) ans += rec(n - 1, last_num + 2, bset);
  29. if (bset[last_num + 1]) ans += rec(n - 1, last_num + 1, bset);
  30.  
  31. memo[{n, last_num}] = ans;
  32. return memo[{n, last_num}];
  33. }
  34.  
  35.  
  36. int main() {
  37. ios::sync_with_stdio(false);
  38.  
  39. freopen("input.txt", "r", stdin);
  40.  
  41. int N;
  42. cin >> N;
  43.  
  44. memo[{1, 1}] = 1;
  45. memo[{2, 2}] = 1;
  46. memo[{2, 3}] = 1;
  47. for (int num = 2; num <= N; ++num) {
  48. memo[{num, 1}] = 0;
  49. }
  50.  
  51. bitset<MAX_N> bset(pow(2, N + 1) - 1);
  52. for (int last_number = 2; last_number <= N; ++last_number) {
  53. rec(N, last_number, bset);
  54. }
  55.  
  56. long long ans = 0;
  57. for (int n = 1; n <= N; ++n) {
  58. for (int last_num = 1; last_num <= N; ++last_num) {
  59. cout << n << " " << last_num << " " << memo[{n, last_num}] << endl;
  60. ans += memo[{n, last_num}];
  61. }
  62. }
  63.  
  64. cout << ans << endl;
  65.  
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement