zoukankan      html  css  js  c++  java
  • #3 Debug日志

    luogu P5016 龙虎斗

    模拟题,就没啥思路,模拟就是了。所以出一个DeBug日志。

    最初代码:

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    using namespace std;;
    long long m,n,s1,s2,p1,p2;
    long long c[100099];
    long long str1,str2;
    long long abs_(long long a){
        return a > 0? a : -a;
    }
    int main(){
        cin >> n;
        for(long long i = 1;i <= n; i++){
            cin >> c[i];
        }
        cin >> m >> p1 >> s1 >> s2;
        for(long long i = 1;i <= n; i++){
            if(i < m){
                str1 += c[i] * (m - i);
            }else if(i > m){
                str2 += c[i] * (i - m);
            }
        }
        if(p1 > m){
            str2 += s1 * (p1 - m);
        }
        if(p1 < m){
            str1 += s1 * (m - p1);
        }
        // cout << str1 << ' ' << str2 << endl;
        long long ans = 1000000099;
        for(long long i = 1;i <= n; i++){
            long long k;// ①
            if(i < m){
                str1 += s2 * (m - i);
                k = abs_(str1 - str2);
                str1 -= s2 * (m - i);
            }else if(i > m){
                str2 += s2 * (i - m);
                k = abs_(str1 - str2);
                str2 -= s2 * (i - m);
            }
            if(ans > k){
                ans = k;
                p2 = i;
            }
        }
        // cout << ans << ' '  << endl;
        cout << p2 << endl;
        return 0;
    }
    

    ①处的代码一开始有问题,因为没有考虑到这个s2在m时,他不属于任何阵营,实际上就是自己原本的值。我们需要把这个自己的值放进去进行计算,实际上只需要每次生命k的时候,就把k的值赋值成原本的力量之差。然后再进行序号的更新就可以。

    更改后的代码

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    long long m,n,s1,s2,p1,p2;
    long long c[100099];
    long long str1,str2;
    long long abs_(long long a){
        return a > 0? a : -a;
    }
    int main(){
        cin >> n;
        for(long long i = 1;i <= n; i++){
            cin >> c[i];
        }
        cin >> m >> p1 >> s1 >> s2;
        for(long long i = 1;i <= n; i++){
            if(i < m){
                str1 += c[i] * (m - i);
            }else if(i > m){
                str2 += c[i] * (i - m);
            }
        }
        if(p1 > m){
            str2 += s1 * (p1 - m);
        }
        if(p1 < m){
            str1 += s1 * (m - p1);
        }
        // cout << str1 << ' ' << str2 << endl;
        long long ans = 1000000099;
        for(long long i = 1;i <= n; i++){
            long long k = abs(str1 - str2);
            if(i < m){
                str1 += s2 * (m - i);
                k = abs_(str1 - str2);
                str1 -= s2 * (m - i);
            }else if(i > m){
                str2 += s2 * (i - m);
                k = abs_(str1 - str2);
                str2 -= s2 * (i - m);
            }
            if(ans > k){
                ans = k;
                p2 = i;
            }
        }
        // cout << ans << ' '  << endl;
        cout << p2 << endl;
        return 0;
    }
    
  • 相关阅读:
    HashSet集合保证元素唯一性的原理 底层代码 ---有用
    集合(下) ---有用
    集合(上) Colection方法 并发修改异常
    Hive -- Hive面试题及答案sql语句 ---阿善有时间看
    hive面试题总结(2020最新版) hive优化方面 ---阿善重要
    hive面试题总结(2020最新版)
    Hive常见面试题1.0
    Hive面试题收集 ---阿善重要
    promise的三个缺点
    js中常见的高阶函数
  • 原文地址:https://www.cnblogs.com/Cao-Yucong/p/12722314.html
Copyright © 2011-2022 走看看