1 条题解

  • 0
    @ 2025-8-24 22:58:08

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar mxjz666
    114514

    搬运于2025-08-24 22:58:08,当前版本为作者最后更新于2024-05-21 19:04:29,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    根据题意,我们可以把 1313 个牌堆用 1313 个双端队列来实现,根据题意模拟即可。但要注意第 1313 堆是与前 1212 堆不一样的。

    献上我丑陋的代码。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=20;
    deque<int> d[N];
    int cnt[N];
    int main(){
    	for(int i=1;i<=13;i++){
    		for(int j=0;j<4;j++){
    			char c;
    			cin>>c;
    			if(c>='1'&&c<='9'){
    				d[i].push_back(c-'0');
    			}else if(c=='0'){
    				d[i].push_back(10);
    			}else if(c=='J'){
    				d[i].push_back(11);
    			}else if(c=='Q'){
    				d[i].push_back(12);
    			}else if(c=='K'){
    				d[i].push_back(13);
    			}else{
    			    d[i].push_back(1);
    			}
    		}
    	}
    	int ck=0,ans=0,key=d[13].front();
    	d[13].pop_front();
    	while(ck<4){
    		if(key==13){
    			ck++;
    			key=d[13].front();
    			d[13].pop_front();
    			continue;
    		}
    		d[key].push_front(key);
    		int tmp=key;
    		key=d[tmp].back();
    		d[tmp].pop_back();
    		cnt[tmp]++;
    		if(cnt[tmp]==4){
    			ans++;
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    
    • 1

    信息

    ID
    10092
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者