zoukankan      html  css  js  c++  java
  • 2021年YACS1月月赛丙组T1《分割队伍》 题解

    反思

    这道题考场上因为USACO一道很相似的题,就突然认为这道题是动态规划,后来突然发现这道题用一个简单的循环就能解决。

    思路

    输入(n)(a_i),求所有(a_i)的和;循环遍历(a)数组,计算目前遍历到的所有(a_i)的和,再计算总和减去目前遍历的和(模拟分割,以得出两个队列分别的等待时间),求出两个队列等待时间的差的绝对值,使用打擂台求最小值,最后输出最小值即可

    代码

    /*
    ID: zhangbe5
    TASK: test
    LANG: C++
    */
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn=1e5+10;
    ll n,a[maxn];
    ll sum,t,t1,ans=INT_MAX;
    int main(){
    	scanf("%lld",&n);
    	for(ll i=1;i<=n;i++){
    		scanf("%lld",&a[i]);
    		sum+=a[i];//求和 
    	}
    	for(int i=1;i<=n;i++){
    		t+=a[i];//通过循环加和,实现分割 
    		t1=sum-t;
    		ans=min(abs(t-t1),ans);//求最小差值 
    	}
    	printf("%lld",ans);//输出 
    	return 0;
    }
    
    她透过我的血,看到了另一抹殷红
  • 相关阅读:
    图的理论基础
    哈夫曼树(三)之 Java详解
    哈夫曼树(二)之 C++详解
    哈夫曼树(一)之 C语言详解
    基数排序
    桶排序
    归并排序
    堆排序
    选择排序
    希尔排序
  • 原文地址:https://www.cnblogs.com/zhangbeini/p/14409228.html
Copyright © 2011-2022 走看看