社区讨论

std 这一行啥意思

AT_arc123_c [ARC123C] 1, 2, 3 - Decomposition参与者 7已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@lo3gddtd
此快照首次捕获于
2023/10/24 06:11
2 年前
此快照最后确认于
2023/10/24 06:11
2 年前
查看原帖
CPP
#include<iostream>
#include<unordered_map>
 
using namespace std;
using ll = long long;
 
 
int solve(ll N){
  unordered_map<ll, int> memo;
  auto f = [&](auto self, ll N) -> int {//这一行。
    if(N==0) return 0;
    if(memo.count(N)) return memo[N];
    
    ll n = N / 10, r = N % 10;
    int res = 0;
    if(1 <= r && r <= 3 && self(self, n) <= 1) res = 1;
    else if(2 <= r && r <= 6 && self(self, n) <= 2) res = 2;
    else if(3 <= r && r <= 9 && self(self, n) <= 3) res = 3;
    else if(4 <= r && r <= 9 && self(self, n) <= 4) res = 4;
    else if(0 <= r && r <= 2 && self(self, n - 1) <= 4) res = 4;
    else res = 5;
    memo[N] = res;
    return res;
  };
  return f(f, N);
}
 
int main(){
  int T; cin >> T;
  for(int t=0; t<T; ++t){
    ll N; cin >> N;
    cout << solve(N) << endl;
  }
}

回复

9 条回复,欢迎继续交流。

正在加载回复...