读数据优化 绝对值函数优化 加速 示范程序 洛谷P2345奶牛集会
生活随笔
收集整理的這篇文章主要介紹了
读数据优化 绝对值函数优化 加速 示范程序 洛谷P2345奶牛集会
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# pragma G++ optimize "O3"//一號加速
#include<cstdio>
#include<cctype>
#include<algorithm>
#define MAXN 20000
using namespace std;
struct Cow{int v,x;inline bool operator < (Cow tar){//強制內聯return v<tar.v;}
}cow[MAXN+1];
inline char get_char(){//超級快讀static char buf[1000001],*p1=buf,*p2=buf;return p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++;
}
inline int read(){int num=0;char c;while(isspace(c=get_char()));while(num=num*10+c-48,isdigit(c=get_char()));return num;
}
inline int Abs(int a){//絕對值優化int b=a>>31;return (a+b)^b;
}
int main(){//盡量使用局部變量int n=read();long long ans=0;for(int i=1;i<=n;++i) cow[i].v=read(),cow[i].x=read();sort(cow+1,cow+n+1);//先排序,然后就可以省去求maxfor(int i=1;i<=n;++i)for(int j=1;j<i;++j)//n^2的復雜度ans+=cow[i].v*Abs(cow[i].x-cow[j].x);printf("%lld",ans);//long long 速度比 int 慢return 0;
}
?以上方法是枚舉,樸素O(N2),在本題的數據規模下可以在規定時間限制內解決,如果奶牛數目不是20000,而是200000,怎么辦?試一試下面兩種方法:
類似于歸并排序的二分O(N logN)
樹狀數組O(N logN)
(可參考https://www.luogu.org/blog/user31021/solution-p2657)
總結
以上是生活随笔為你收集整理的读数据优化 绝对值函数优化 加速 示范程序 洛谷P2345奶牛集会的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大学医学院有计算机专业吗,上大学时辛苦一
- 下一篇: 当你迷茫时,请努力做好现在的工作