1 条题解

  • 0
    @ 2025-12-8 15:23:11

    使用双端队列,记录每个牌堆的状态,按照题意模拟即可,有一些细节需要去注意但不是很多。

    #include<bits/stdc++.h>
    
    using namespace std;
    
    deque<int> save[14];
    int vis[14];
    
    int main()
    {
    	for(int i=1;i<=13;i++)
    		for(int j=1;j<=4;j++){
    			char c;cin>>c;int x;
    			if(isdigit(c))x=c-'0';
    			else if(c=='J')x=11;
    			else if(c=='Q')x=12;
    			else if(c=='K')x=13;
    			else if(c=='A')x=1;
    			if(x==0)x=10;
    			save[i].push_back(x);
    		}
    	for(int i=1;i<=4;i++){
    		int cur=save[13].front();save[13].pop_front();
    		if(cur==13)continue;
    		while(1){
    			vis[cur]++;
    			save[cur].push_front(cur);
    			int nxt=save[cur].back();
    			save[cur].pop_back();
    			if(nxt==13)break;
    			cur=nxt;
    		}
    	}
    	int tot=0;
    	for(int i=1;i<=13;i++)if(vis[i]==4)tot++;
    	cout<<tot;
    	return 0;
    }
    
    
    • 1

    信息

    ID
    9893
    时间
    1000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    10
    已通过
    8
    上传者