• 小明种苹果(续)第十七次CCF认证


    小明种苹果(续)第十七次CCF认证

    题目

    原题链接



    ](http://118.190.20.162/view.page?gpid=T93)


    很高心,在现在CCF CSP可以下载自己当时的答卷了,也就是自己当时提交的代码,下面就贴上自己认证时写的代码

    // INFO BEGIN
    //
    // User = 201910014101(赵**) 
    // Group = C/C++ 
    // Problem = 小明种苹果(续) 
    // Language = DCPP 
    // SubmitTime = 2019-09-15 16:54:19 
    //
    // INFO END
    
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int maxn=1e4+7;
    struct node
    {
    	bool drop;
    	ll init, sum;
    }ap[maxn];
    int n, m;
    int main()
    {
    	ll tmp;
    	scanf("%d", &n);
    	for(int i=1; i<=n; i++)
    	{
    		scanf("%d", &m);
    		for(int j=1; j<=m; j++)
    		{
    			scanf("%lld", &tmp);
    			if(tmp<=0)
    			{
    				ap[i].sum+=(-tmp);
    			}	
    			else if(tmp>0 && j!=1) 
    			{
    				
    				if(ap[i].init-ap[i].sum!=tmp)
    					ap[i].drop=true;
    				ap[i].init=tmp;
    				ap[i].sum=0;
    			}
    			else 
    			{
    				ap[i].drop=false;
    				ap[i].init=tmp;
    				ap[i].sum=0;
    			}
    		}
    	}
    	ll res=0;
    	int pre, next, drops=0, team=0;
    	for(int i=1; i<=n; i++)
    	{
    		res+=ap[i].init-ap[i].sum;
    		if(ap[i].drop)
    		{
    			drops++;
    			pre=i-1;
    			next=i+1;
    			if(pre<=0) pre=n;
    			if(next>=n+1) next=1;
    			if(ap[pre].drop && ap[next].drop)
    			{
    				team++;
    			}
    		}
    	}
    	printf("%lld %d %d
    ", res, drops, team);
    	return 0;
    }
    

    update:2019.12.11 16:54

    解题思路

    进行模拟即可

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int maxn=1007;
    struct node
    {
    	ll init, dsum;
    	bool drop; //用来记录这棵树是否发生苹果掉落
    }a[maxn];
    int n, m;
    int main()
    {
    	ll tmp;
    	scanf("%lld", &n);
    	for(int i=1; i<=n; i++)
    	{
    		scanf("%d", &m);
    		for(int j=1; j<=m; j++)
    		{
    			scanf("%lld", &tmp);
    			if(j==1) //第一次要进行初始化
    			{
    				a[i].init=tmp;
    				a[i].drop=false;
    				continue;	
    			} 
    			if(tmp>0)
    			{
    				if(a[i].init!=tmp) //判断是否发生苹果掉落
    				{
    					a[i].dsum+=a[i].init-tmp;
    					a[i].init=tmp;
    					a[i].drop=true;	
    				}	
    			}
    			else
    			{
    				a[i].init += tmp; //注意这个tmp是非正数 
    			}	
    		}	
    	}
    	ll sum=0, nums=0, ans=0;	
    	for(int i=1; i<=n; i++)
    	{
    		sum+=a[i].init;
    		if(a[i].drop)
    			nums++;
    	}
    	printf("%lld %lld ", sum, nums);
    	for(int i=1; i<=n; i++)
    	{
    		if(a[i].drop)
    		{
    			if(i==1 && a[n].drop && a[i+1].drop)
    				ans++;
    			else if(i==n && a[i-1].drop && a[1].drop)
    				ans++;
    			else if(a[i-1].drop && a[i+1].drop)
    				ans++;
    		}
    	}
    	printf("%lld
    ", ans);
    	return 0;
     } 
    
    欢迎评论交流!
  • 相关阅读:
    搭建Git服务器
    shell脚本的使用
    谈谈递归和回溯算法的运用
    给 Qt 添加模块
    QtQuick 中的 qml 与 Qt 的 C++
    QT 中使用 c++ 的指针
    QT 的使用及编写代码遇到的问题和解决方法
    Centos 7 上安装使用 vscode
    PHP 数组转json格式,key的保存问题
    PHP compact
  • 原文地址:https://www.cnblogs.com/alking1001/p/11592696.html
Copyright © 2020-2023  润新知