zoukankan      html  css  js  c++  java
  • CCF201609-3

    博客园的大佬的源码给我提供了很多帮助。

    这个题最省事的部分在于使用了vector中的insert()erase()方法,放置随从等操作简洁了许多。

    以攻击操作为例,在一方的某随从攻击指定随从后,遍历双方的随从(使用迭代器),发现生命值小于等于0的,即从随从数组中抹去。

    end()函数的意义在于,在一方结束后,及时综合考察整个战场的状况。

    #include<bits/stdc++.h>
    
    using namespace std;
    int n;
    string cmd;
    int now=0;
    struct node{
    	int attack;
    	int health;
    	node(int _attack,int _health):attack(_attack),health(_health){}
    };
    vector<node> smn[2];
    vector<node>::iterator it;
    
    void init(){
    	for(int i=0;i<2;i++){
    		smn[i].clear();
    		smn[i].push_back(node(0,30));
    	}
    	now=0;
    }
    void summon(){
    	int position,attack,health;
    	cin>>position>>attack>>health;
    	it=smn[now].begin();
    	smn[now].insert(it+position,node(attack,health));
    }
    void attack(){
    	int attacker,defender;
    	cin>>attacker>>defender;
    	smn[now][attacker].health-=smn[now^1][defender].attack;
    	smn[now^1][defender].health-=smn[now][attacker].attack;
    	for(int i=0;i<2;i++){
    		for(it=smn[i].begin()+1;it<smn[i].end();it++){
    			if((*it).health<=0){
    				smn[i].erase(it);
    			}
    		}
    	}
    }
    void end(){
    	if(smn[0][0].health<=0&&smn[1][0].health>0){
    		printf("-1
    ");
    	}else if(smn[0][0].health>0&&smn[1][0].health>0){
    		printf("0
    ");
    	}else{
    		printf("1
    ");
    	}
    	for(int i=0;i<2;i++){
    		printf("%d
    ",smn[i][0].health);
    		printf("%d",(int)smn[i].size()-1);
    		for(int j=1;j<(int)smn[i].size();j++){
    			printf(" %d ",smn[i][j].health);
    		}
    		printf("
    ");
    	}
    
    }
    int main(){
    	init();
    	cin>>n;
    	while(n--){
    		cin>>cmd;
    		if(cmd=="summon"){
    			summon();
    		}else if(cmd=="attack"){
    			attack();
    		}else if(cmd=="end"){
    			now^=1;
    		}
    	}
    	end();
    	return 0;
    }
    
  • 相关阅读:
    微信小程序——gulp处理文件
    小程序开发经验总结
    微信小程序入门之构建一个简单TODOS应用
    3元体验腾讯云小程序后端解决方案
    C++笔记:面向对象编程(Handle类)
    你真的知道你看到的UTF-8字符是什么吗?
    Unity3D游戏开发之在Unity3D中视频播放功能的实现
    vb.net机房收费系统——存储过程
    Oracle基础学习4--Oracle权限传递
    我与京东的那些事儿
  • 原文地址:https://www.cnblogs.com/master-cn/p/12912921.html
Copyright © 2011-2022 走看看