P4889 kls與flag
阿新 • • 發佈:2018-12-11
題目大意:
有nn個OI選手,每個人插了一個flag。有一天因為某種原因,flag都被觸發了,所以地上有一排nn根竹竿,竹竿的間距均為一個單位長度,高度在1\sim m1∼m之間。
kls看到這些竹竿,感覺不好看,於是準備把它們全部放倒。
在這之前,kls想到了一個數學問題。每根竹竿可以往左倒或者往右倒。如果兩根竹竿在選擇方向放倒之後,它們的頂端可以重合,那麼稱它們是優秀的。現在kls想要知道,有多少對竹竿是優秀的。
思路:
很簡單了,雜湊,map,排序都可以寫,因為是為了寫一題map來豐富一下我的分類,所以就這麼簡單了。
程式:
#include<map> #include<string.h> #include<cstdio> #include<cstdlib> #define LL long long using namespace std; map<int,int> a; int n,m,x; LL ans; int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) { scanf("%d",&x); ans+=a[i+x]+a[i-x]; a[i+x]++; a[i-x]++; } printf("%lld",ans); }