zoukankan      html  css  js  c++  java
  • CodeForces 42C Safe cracking 规律题

    题目链接:点击打开链接

    3个数为一组,找最大的一个数让它降低,则显然是有解的,分类讨论一下就可以

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    #include<vector>
    using namespace std;
    int n, k;
    int a[4];
    vector<pair<int,int> >ans;
    int maxpos(){
    	int pos = 0;
    	for(int i = 1; i < 4; i++)
    		if(a[pos]<a[i])pos = i;
    	return pos;
    }
    void chu(int pos){
    	a[pos] >>= 1; a[(pos+1)%4] >>= 1;
    	ans.push_back(pair<int,int>(0, pos));
    }
    void ADD(int pos){
    	a[pos] ++; a[(pos+1)%4] ++;
    	ans.push_back(pair<int,int>(1, pos));
    }
    int main(){
    	while(cin>>a[0]>>a[1]>>a[2]>>a[3]){
    		ans.clear();
    		int pos, siz = 0;
    		while(1){
    			pos = maxpos();
    			if(a[pos]==1)return true;
    			int l = pos-1; if(l<0)l = 3;
    			int r = pos+1; if(r>3)r = 0;
    			if(a[pos]&1){
    				if(a[l]&1)
    				{
    					ADD(l);
    					chu(l);
    				}
    				else if(a[r]&1)
    				{
    					ADD(pos);
    					chu(pos);
    				}
    				else {
    					ADD(pos);
    					chu(l);
    				}
    			}
    			else {
    				if((a[l]&1)==0)
    				{
    					chu(l);
    				}
    				else if((a[r]&1)==0)
    				{
    					chu(pos);
    				}
    				else {
    					ADD(l); ADD(pos);
    					chu(l);
    				}
    			}
    		}
    		for(int i = 0; i < ans.size(); i++)
    			printf("%c%d
    ", ans[i].first?'+':'/', ans[i].second+1);
    	}
    	return 0;
    }
    


  • 相关阅读:
    bzoj4864 [BeiJing 2017 Wc]神秘物质
    HNOI2011 括号修复
    bzoj2402 陶陶的难题II
    ZJOI2008 树的统计
    USACO09JAN 安全出行Safe Travel
    HAOI2015 树上操作
    hdu5126 stars
    BOI2007 Mokia 摩基亚
    SDOI2011 拦截导弹
    国家集训队 排队
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6730580.html
Copyright © 2011-2022 走看看