NC227311. 糟糕的打谱员
描述
输入描述
第一行是整数,测试组数。
每组测试用例,第一行是整数,你记录的谱子长度。
接下来行,每行两个数和,表示一步棋,下这步棋的人是且下在了编号为的劫争处。
输出描述
每个测试用例输出一个整数,表示最长的合法行棋子序列长度。
示例1
输入:
1 20 1 10 0 6 0 9 1 3 0 3 0 5 0 3 1 1 0 2 0 2 0 2 1 9 1 10 1 1 1 10 0 6 0 8 1 1 1 9 0 1
输出:
10
C++ 解法, 执行用时: 380ms, 内存消耗: 424K, 提交时间: 2021-09-19 15:57:01
#include <bits/stdc++.h> using namespace std; typedef long long ll; int n; void solve(){ scanf("%d",&n); int ans=0,f[2][12]={0}; for(int i=1;i<=n;i++){ int c,a; cin>>c>>a; for(int j=1;j<=10;j++){ if(j!=a) f[c][a]=max(f[c][a],f[1-c][j]+1); } ans=max(ans,f[c][a]); } cout<<ans<<endl; } int main(){ int t; cin>>t; while(t--){ solve(); } return 0; }