贪心/poj 2231 Moo Volume

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long a[10010];
int main()
{
    int n;
    scanf("%d",&n);
    for (int i=1;i<=n;i++) scanf("%lld",&a[i]);
    sort(a+1,a+n+1);
    long long ans=0;
    for (int i=1;i<=n;i++) ans+=a[i]*(2*i-n-1);
    printf("%lld\n",ans*2);
    return 0;
}
时间: 2024-10-08 08:17:43

贪心/poj 2231 Moo Volume的相关文章

POJ 2231 Moo Volume

这题用的是贪心算法来算的,贪心策略如下: dist数组表示各个牛的位置距第一个牛的距离,当然之前要对牛的位置进行升序排序. 设a为第一头牛距各头牛的距离的总和,然后从第二头牛开始遍历,假设遍历到第i头牛时,那么标准为: t=t-(n-i)*d+i*d, 各变量的含义为:t一开始为a,然后每次就是该表达式运算之后的值: n为牛的总数: d为第i头牛和第i-1头牛之间的距离.这个公式画图其实很好理解的. 把所有的t值加起来就是最后的结果. #include<cstdio> #include<

poj 杂题 - 2231 Moo Volume

一开始以为是long long输入,后来发现用int就行,,,反正也是一个挺简单的题目,直接贴代码了. #include<stdio.h> #include<math.h> int cows[10005]={0}; int main(){ int n,i,j; long long res = 0,temp; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&cows[i]);

POJ 2231 贪心吗?怎么感觉像是数学。。。。

过了两次用了两种不同方法,其实也差不多,如果真的暴力去求得话铁定超时,(好像优化减去一些不可能的情况也能过,但是我没尝试)所以找一下规律咯,没学过算法的渣只能靠思维做题了... #include<stdio.h> int a[10009]; int main() { int n,m,t,i,j; long long sum; while(scanf("%d",&n)!=EOF) { sum=0; for(i=1;i<=n;i++) scanf("%d

POJ 2010 Moo University - Financial Aid( 优先队列+二分查找)

POJ 2010 Moo University - Financial Aid 题目大意,从C头申请读书的牛中选出N头,这N头牛的需要的额外学费之和不能超过F,并且要使得这N头牛的中位数最大.若不存在,则输出-1(一开始因为没看见这个,wa了几次). 这个题的第一种做法就是用两个优先队列+贪心. /* * Created: 2016年03月27日 14时41分47秒 星期日 * Author: Akrusher * */ #include <cstdio> #include <cstdl

贪心/POJ 3069 Saruman&#39;s Army

1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int n,r,ans; 6 int a[1010]; 7 int cmax(int x,int y){return x>y?x:y;} 8 int main() 9 { 10 scanf("%d%d",&r,&n); 11 while (n!=-1 &

[BZOJ1679][Usaco2005 Jan]Moo Volume 牛的呼声

1679: [Usaco2005 Jan]Moo Volume 牛的呼声 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1097  Solved: 571 [Submit][Status][Discuss] Description Farmer John has received a noise complaint from his neighbor, Farmer Bob, stating that his cows are making too

poj 2010 Moo University - Financial Aid(优先队列(最小堆)+ 贪心 + 枚举)

Description Bessie noted that although humans have many universities they can attend, cows have none. To remedy this problem, she and her fellow cows formed a new university called The University of Wisconsin-Farmside,"Moo U" for short. Not wish

POJ - 2010 Moo University - Financial Aid 贪心+优先队列

题目大意:有C头牛,每头牛都有相应的分数和需求,要求在这C头牛中选出N头,使得这N头牛中的分数的中位数达到最大,且需求之和小于等于F 解题思路:先按成绩排序 再用两个数组保留最小需求之和 left数组保留第i个位置左边的 N/2个最小需求之和 right数组保留第i个位置右边的 N/2个最小需求之和 如何保留最小的需求之和呢,扫描两遍(左右),用优先队列保留N / 2个最小需求 最后只需要判断一下 left[i] + right[i] + 第i头牛的需求 <= F就可以了 #include<c

HDU 3466 Moo Volume

Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Description Farmer John has received a noise complaint from his neighbor, Farmer Bob, stating that his cows are making too much noise. FJ's N cows (1 <= N <= 10,000) all