1 solutions

  • 0
    @ 2023-2-13 16:24:42
    #include<iostream>
    
    using namespace std;
    
    int f[10005];
    
    int main(){
    	
    	int num=8;
    	//最初有八位备战席,用num来记录当前备战席的情况 
    	for(int i=0;i<8;++i){
    		
    		int q;
    		cin>>q;
    		f[q]++;
    		//装桶的方式把战棋放进去统计拥有的数量,也就是用数组名代表元素,比如读入2,那么f[2]就从0变成1,如果再读就是变成2,代表了一共有几个2 
    		
    	}
    	
    	int n;
    	cin>>n;
    	
    	for(int i=1;i<=503;++i){
    		//先把备战席已有的提前合成了,不然会出现1 1 1 1 1 1 1 1 (2)读不进去的情况,实际上是能读进去的,因为1 1 1会提前合成,然后备战席空出来就能读进去了 
    		
    		while(f[i]>=3){
    			//有可能f[i]最开始大于等于6之类的,这种情况下就要用while来让他合成两个两星 
    			
    			f[i]-=3;//三个同样的合成一个高品质,这会让三个低品质的消失 
    			f[i*10]++;//通过观察题目的一星两星三星之间的关系可以得出,比如三个2合成为20,我们只需要让f[2]-=3,f[2*10]++,就能实现,也就是三个2消失,一个20增加了 
    			num-=2;//因为三个同样的消失,然后出现了一个新的高品质,所以num先减3后加一,也就是减二就行 
    			
    		}
    	}
    	
    	for(int i=0;i<n;++i){
    		
    		int k;
    		cin>>k;
    		
    		if(num<=7){//因为上面清理过最开始的数据,所以每次循环读入,只要num小于8就读入 
    			
    			f[k]++;//装桶 
    			num++;//让备战席加一 
    			
    			while(f[k]>=3){//防止1 1 2 2 3 3 4 4 (1 2 3 5 5 5)卡住 
    				
    				//连续清除备战席 
    				f[k]-=3;
    				f[k*10]++;
    				num-=2;//这三步的解释与上面同理 
    				
    			}
    			
    		}
    		
    		else if(num==8&&f[k]>=2){//备战席为8的情况下且有两张相同牌,第三张是同一张的情况,例如(1 1 2 2 3 3 4 4)(4)
    			
    			f[k]-=2;//把这两张删除
    			f[k*10]++;//获得一张更强的牌 
    			num=7;//备战席变成7
    			
    		}
    		
    	}
    	
    	for(int i=1;i<=503;++i){//把所有的都合成了 
    		
    		while(f[i]>=3){
    			
    			f[i]-=3;
    			f[i*10]++;//此时不需要对num进行操作了,没意义 
    			
    		}
    	}
    	
    	int ans=0;
    	
    	for(int i=503;i>=1;--i){//倒着查询桶的情况,只要某个桶里面有数字,那么这个数字就是最大的那个战力 
    		
    		if(f[i]){//f[i]不是0就能进入这个if 
    			
    			ans=i;
    			break;
    			
    		}
    		
    	}
    	
    	int m;
    	cin>>m;
    	
    	if(ans>=m) cout<<"YES YES YES";
    	else cout<<"NO NO NO";
    	
    	return 0;
    	
    }
    

    Information

    ID
    6694
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    # Submissions
    25
    Accepted
    6
    Uploaded By