叉姐的魔法训练(第⑨课)---- 幽默大师职业赛
挖坑
-------------------------------
一 数位DP
POJ 3208 Apocalypse Someday
#include <cstdio> #include <cstring> #include <iostream> using namespace std; typedef long long LL; int s[4][10]; LL a[15][4]; void init() { memset(s,0,sizeof(s)); s[0][6]=1; s[1][6]=2; s[2][6]=3; for(int i=0;i<10;i++) s[3][i]=3; memset(a,0,sizeof(a)); a[0][3]=1; for(int i=1;i<15;i++) for(int j=0;j<4;j++) for(int k=0;k<10;k++){ a[i][j]=a[i][j]+a[i-1][ s[j][k] ]; } } int main() { int T,n,len; LL state,num; init(); scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=0; i<15; i++) if(a[i][0]>n){ len=i; break; } state=0; num=0; for(int i=len-1;i>=0;i--){ int j; for(j=0;j<10;j++){ if(a[i][s[state][j]]<n) n=n-a[i][s[state][j]]; else break; } num=num*10+j; state=s[state][j]; } printf("%I64d\n",num); } return 0; }
-------------------------------
二 数论
POJ 3015 Expected Difference
-------------------------------
三 左偏树/可并堆
POJ 3016 K-Monotonic
-------------------------------
-------------------------------
-------------------------------