• CCF201909-2小明种苹果(续)


     

    解题思路:解题思路很简答,就是用数组将数据存起来然后再进行统计,具体思路就见代码注释,记录这道题的是为了警示自己好好审题啊......

    审题有问题,写题火葬场啊.......以为每棵树就疏一次果,把D和小明统计疏果有落果的次数混为一谈,怎么提交都只有50分还一直再挑统计E的毛病.....

    #include<iostream>
    
    using namespace std;
    int a[1005][1005];
    int b[1005] = {0};//每棵树是否有落果的统计
    
    int main() {
        int n;//共几棵树
        cin >> n;
        for (int i = 0; i < n; i++) {
            cin >> a[i][0];//进行了几次操作
            for (int j = 1; j <= a[i][0]; j++) {
                cin >> a[i][j];
            }
        }
        int per_num = 0;//每棵树的苹果数
        int sum_num = 0;//最后的总剩余苹果数
        int dgcount = 0;//有果实掉落的苹果树的棵树
        for (int i = 0; i < n; i++) {
            per_num = a[i][1];//初始苹果的情况
            for (int j = 2; j <= a[i][0]; j++) {
                if (a[i][j] < 0)//疏果的情况
                    per_num += a[i][j];
                else if (a[i][j] > 0) { //统计果子的情况
                    if (a[i][j] != per_num) {//有落果的情况,掉果的棵树的统计不能在这,因为可能一棵树统计多次
                        b[i] = 1;
                    }
                    per_num = a[i][j];
                }
            }
            sum_num += per_num;
        }
        for (int i = 0; i < n; i++) {
            if (b[i]) {
                dgcount++;
            }
        }
        //判断连着三棵树都掉果的组数
        int e = 0;
        for (int i = 0; i <= n - 2; i++) {
            if (b[i] && b[i + 1] && b[i + 2]) {
                e++;
            }
        }
        if (b[n - 2] && b[n - 1] && b[0]) e++;
        if (b[n - 1] && b[0] && b[1]) e++;
    
        cout << sum_num << " " << dgcount << " " << e << endl;
        system("pause");
        return 0;
    唯有热爱方能抵御岁月漫长。
  • 相关阅读:
    浅谈Tarjan算法及思想
    浅谈前向星
    线段树初步
    树状数组的简单运用
    字典树(trie树)的指针简单实现pascal
    排序专辑
    POJ 2155 Matrix (矩形)
    区间动态规划
    hdu-2795 Billboard---线段树
    hdu-1754 I Hate It---线段树模板题
  • 原文地址:https://www.cnblogs.com/syq816/p/12292600.html
Copyright © 2020-2023  润新知