FOJ 1402(dp推规律)

推规律吧
/**
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43
0 1 2
5 13 29 61 125 253 509 1021 2045 4093 8189 16381 32765 65533 131069 262141 524285 48570 97143 194289 388581

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 3
9 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131
 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203

 5 13 29 61 125 253 509 1021 2045 4093 8189 16381 32765
65533 131069 262141 524285 48570 97143 194289 388581 777165 554330 108660 217323 434649 869301 738602 477204 954411 908822 817644 635288 270576 541155 82310 164623 329249 658501 317002 634007 268014 5
36031 72062 144127 288257 576517 153034 306071 612145 224290 448583 897169 794338 588676 177352 354707 709417 418834 837671 675342 350684 701371 402742 805487 610974 221948 443899 887801 775602 551204
 102408 204819 409641 819285 638570 277140 554283 108566 217135 434273 868549 737098 474196 948395 896790 793580 587160 174320 348643 697289 394578 789159 578318 156636 313275 626553 253106 506215 124
30 24863

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43
5 13 29 61 125 253 509 1021 2045 4093 8189 16381 32765 65533 131069 262141 524285 1048573(18) 2097149 4194301 8388605

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 7
1 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 1
29 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203
5 13 29 61 125 253 509 1021 2045 4093 8189 16381 32765 65533 131069 262141 524285 1048573 2097149 4194301 8388605 16777213 33554429 67108861 134217725 268435453 536870909 1073741821 2147483645 -3 -3 -
3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3
-3 -3 -3

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 7
1 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 1
29 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 201 203
5 13 29 61 125 253 509 1021 2045 4093 8189 16381 32765 65533 131069 262141 524285 48570 97143 194289 388581 777165 554330 108660 217323 434649 869301 738602 477204 954411 908822 817644 635288 270576 5
41155 82310 164623 329249 658501 317002 634007 268014 536031 72062 144127 288257 576517 153034 306071 612145 224290 448583 897169 794338 588676 177352 354707 709417 418834 837671 675342 350684 701371
402742 805487 610974 221948 443899 887801 775602 551204 102408 204819 409641 819285 638570 277140 554283 108566 217135 434273 868549 737098 474196 948395 896790 793580 587160 174320 348643 697289 3945
78 789159 578318 156636 313275 626553 253106 506215 12430 24863
*/
/**
5 13 29 61 125 253 509 1021 2045 4093 8189 16381 32765 65533 131069 262141 524285 1048573 2097149 4194301 8388605 16777213 33554429 67108861 134217725
a[3][0] = a[2][1] = 5;
a[3][1] = a[2] a[ a[3][0] ] = a[2][ 5 ] = 13;
a[3][2] = a[2][ 13 ] = 29;
a[3][3] = a[2][ 29 ] =
1,5
2,13
3,29 

1, 1*2+3    n*2+3
2, 5*2+3    (n*2+3)*2 + 3   n*2*2 + 3*2 + 3
3, 13*2+3    (  (n*2+3)*2 + 3 )*2 + 3   n*2*2*2 + 3*2*2 + 3*2 + 3
3+6+12+
4, 29*2+3    (  (  (n*2+3)*2 + 3 )*2 + 3  )*2 + 3  1*2*2*2*2 + 3*2*2*2 + 3*2*2 + 3*2 +3
n, 2(n) + 3*(1-2(n)) /  -1
2(n) + 3*(2(n)-1)
4*2(n)-3
a[m-1][  ]

3*(1-2*2(n)) /  (1 - 2) =
3*(-15 )/-1 = 45 + 16 = 61
61

*/
/**
5 13 29 61 125 253 509 1021 2045 4093 8189 16381 32765 65533 131069 262141 524285 1048573 2097149 4194301 8388605 6777210(22) 3554420(23) 7108843(24) 4217686(25)
*/
/***
a[3][22] = a[2][ a[3][21] ] = a[2][ 8388605 ] = 13;
a[3]

*/
#include <iostream>
#include<cstdio>
using namespace std;

int Ackermann(int m,int n)
{
	if (m==1)
	{
		return 2+n;
	}
	else if (m==2)
	{
		return 3+2*n;
	}
	else if (m==3)
	{
		if(n>0)
		return Ackermann(2,Ackermann(m,n-1));
		else if (n==0)
		{
			return Ackermann(2,1);
		}
	}
	return 0;
}
int main()
{
//	for(int i=0;i<=3;i++){
//        for(int j=0;j<=100;j++){
//                printf("%d ",Ackermann(i,j));
//        }
//        printf("\n");
//    }
for(int i=0;i<=24;i++)
    printf("%d ",Ackermann(3,i) );
	return 0;
}
/**134217725*/
/**a[3][24] = a[2][ a[3][23] ]
4217686*/
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int a[4][100000000 + 10];
int main()
{

    for(int i=0;i<=3;i++){
        for(int j=0;j<=100000000;j++){
            if(i==0) a[i][j]=j+1;
            else if(i>0&&j==0) a[i][j]=a[i-1][1];
            else if(i>0&&j>0) a[i][j]=a[i-1][a[i][j-1]];
        }
    }
    for(int j=0;j<=1000000;j++) a[0][j]=j+1;
    a[1][0]=2;a[1][1] = a[0][ a[1][0] ] = 3; a[1][2] = a[0][ a[1][1] ]=4;  a[1][3] = a[0][ a[1][2] ] = 5;
    for(int j=1;j<=1000000;j++) a[1][j] = a[0][ a[1][j-1] ];
    a[2][0]=a[1][1] = 3; a[2][1] = a[1][ a[2][0] ] = 5;
    for(int j=1;j<=1000000; j++) a[2][j]=a[1][ a[2][j-1] ];

//     for(int i=0;i<=3;i++){
//        for(int j=0;j<=100;j++){
//                printf("%lld ",a[i][j]);
//        }
//        printf("\n");
//
//    }
    printf("%lld",a[1][1000001]);
    a[2][500000] = a[1][ a[2][500000 - 1] ] = a[1][1000001];
    a[1][1000001] = a[0][ a[1][1000000] ]

    n=2; m=1000000;
    a[2][1000000] = a[1][ a[2][] ]
//        int m,n;
//    while(scanf("%d%d",&m,&n)!=EOF){
//        printf("%lld\n",a[m][n]);
//    }

    return 0;
}
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int a[4][100000000 + 10];

int main()
{
    for(int i=0;i<=3;i++){
        for(int j=0;j<=100000000;j++){
            if(i==0) a[i][j]=j+1;
            else if(i>0&&j==0) a[i][j]=a[i-1][1];
            else if(i>0&&j>0) a[i][j]=a[i-1][a[i][j-1]];
        }
    }

//    for(int i=0;i<=24;i++)
//    printf("%d ",a[3][i] );
    int m,n;
    while(scanf("%d%d",&m,&n)!=EOF){
        printf("%d\n",a[m][n]);
    }
//     for(int i=0;i<=10;i++){
//        for(int j=0;j<=10;j++){
//                printf("%d ",a[i][j]);
//        }
//        printf("\n");
//    }

    return 0;
}

ac:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int pp[25]={};
int a(int m,int n){
    if(m==0 ) return n+1;
    else if(m==1) return n+2;
    else if(m==2) return 2*n+3;
    else if(m==3) return a(2, 4*floor( pow(2,n)+0.5 )-3 )  ;

}
int main()
{
     int m,n;
    while(scanf("%d%d",&m,&n)!=EOF){
        printf("%d\n",a(m,n));
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-28 21:37:33

FOJ 1402(dp推规律)的相关文章

[FJOI2007]轮状病毒 题解(dp(找规律)+高精度)

[FJOI2007]轮状病毒 题解(dp(找规律)+高精度) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1335733 没什么好说的,直接把规律找出来,有两种规律(据说还有多种dp),再套个高精度 \(First\) \(f[1]=1,f[2]=5,f[i]=3×f[i-1]-f[i-2]+2\) 就直接写个高精+低精和高精×低精和高精-高精就行了 \(Second\) \(f[1]=1,f[2]=3,f[i]=f[i-1]+f[i-2]\) \(i

hdu 2604 Queuing dp找规律 然后矩阵快速幂。坑!!

http://acm.hdu.edu.cn/showproblem.php?pid=2604 这题居然O(9 * L)的dp过不了,TLE,  更重要的是找出规律后,O(n)递推也过不了,TLE,一定要矩阵快速幂.然后立马GG. 用2代表m,1代表f.设dp[i][j][k]表示,在第i位,上一位站了的人是j,这一位站的人是k,的合法情况. 递推过去就是,如果j是1,k是2,那么这一位就只能放一个2,这个时猴dp[i][k][2] += dp[i - 1][j][k]; 其他情况分类下就好,然后

ZOJ-3929 Deque and Balls (DP+找规律)

题目大意:n个数,每个数的大小都在1~n之间.操作n次,第 i 次将第 i 个数放到一个双端队列里面,放到队列两端的概率是相等的.问操作n次之后双端队列中元素满足xi>xi+1的对数的期望,输出的数据为:(期望*2^n)%mod. 题目分析:定义状态dp(i)表示操作 i 次之后的相应期望值.则状态转移方程为: dp(i)=1/2*(dp(i-1)+k1)+1/2*(dp(i-1)+k2)  (两种情况,放在队首和队尾) 其中,k1表示比a(i)小的元素可能与a(i)相邻的总次数,k2表示比a(

sgu495:概率dp / 推公式

概率题..可以dp也可以推公式 抽象出来的题目大意: 有 n个小球,有放回的取m次  问 被取出来过的小球的个数的期望 dp维护两个状态 第 i 次取出的是 没有被取出来过的小球的 概率dp[i] 和取出的是已经被取出来过的小球的概率np[i]; 如果第 i-1 次取出的是已经被取出来过的小球 那么第 i 次取出没有取出来过小球的概率即为 dp[i-1]: 反之则为 dp[i-1] - 1/n(没有取出来过的小球少了一个) 所以可以得到状态转移方程 dp[i]=dp[i-1]*(dp[i-1]-

loj6172 Samjia和大树(树形DP+找规律)

题目: https://loj.ac/problem/6172 分析: 首先容易得出这样的dp式子 然后发现后面那个Σ其实是两段区间,可以用总和减去中间一段区间表示,所以只要维护个前缀和就ok了 这样复杂度就是O(nm)的 但是题目中的m异常巨大,有1e9,好像不能用dp做 但我们可以找下规律,发现对于一个点,其所有dp值是前后对称的,而且中间有很长的一段都是相同的数字! 设某个点x深度为d,那么它受到最“偏”的影响是来自叶子节点的,状态值之间会差d*k 对于一颗树而言,深度最大值为n-1,所以

hdu 5000 Clone (dp + 找规律)

Clone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 820    Accepted Submission(s): 403 Problem Description After eating food from Chernobyl, DRD got a super power: he could clone himself righ

Codeforces 474D Flowers (线性dp 找规律)

D. Flowers time limit per test:1.5 seconds memory limit per test:256 megabytes We saw the little game Marmot made for Mole's lunch. Now it's Marmot's dinner time and, as we all know, Marmot eats flowers. At every dinner he eats some red and white flo

hdoj 2802 F(N)【递推 规律】

F(N) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4078    Accepted Submission(s): 1432 Problem Description Giving the N, can you tell me the answer of F(N)? Input Each test case contains a si

HDU2451 Simple Addition expression(数位dp/找规律)

题意 对于一个非负整数 i, 当 \(i + (i+1) + (i+2)\) 计算过程中不产生进位时,称i满足条件, 求 小于n的 i 的个数. 传送门 思路 数位dp. Code #include <bits/stdc++.h> using namespace std; typedef long long ll; ll dp[20][5], n; int a[20], top; ll dfs(int pos, int sta, bool limit) { if(pos==-1) return