【链表】2017多校训练三 HDU 6058 Kanade's sum
2017-08-02 14:33
459 查看
acm.hdu.edu.cn/showproblem.php?pid=6058
【题意】
给定一个排列,计算
链表
【题意】
给定一个排列,计算
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<cmath> 6 #include<algorithm> 7 #include<queue> 8 #include<stack> 9 #include<map> 10 using namespace std; 11 const int maxn=5e5+3; 12 typedef long long ll; 13 int a[maxn]; 14 int p[maxn]; 15 int pre[maxn]; 16 int nxt[maxn]; 17 int b[maxn]; 18 int c[maxn]; 19 int n,k; 20 int main() 21 { 22 int T; 23 scanf("%d",&T); 24 while(T--) 25 { 26 scanf("%d%d",&n,&k); 27 for(int i=1;i<=n;i++) 28 { 29 scanf("%d",&a[i]); 30 p[a[i]]=i; 31 pre[i]=i-1; 32 nxt[i]=i+1; 33 } 34 ll ans=0; 35 for(int i=1;i<=n;i++) 36 { 37 ll num=0; 38 int pos=p[i]; 39 int cntr=0,cntl=0; 40 for(int j=pos;j<=n&&cntr<k;j=nxt[j]) 41 { 42 b[cntr++]=nxt[j]-j; 43 } 44 for(int j=pos;j>=1&&cntl<k;j=pre[j]) 45 { 46 if(k-1-cntl>=cntr) 47 { 48 cntl++; 49 continue; 50 } 51 else 52 { 53 c[cntl]=j-pre[j]; 54 num+=b[k-1-cntl]*c[cntl]; 55 cntl++; 56 } 57 58 } 59 ans+=num*i; 60 nxt[pre[pos]]=nxt[pos]; 61 pre[nxt[pos]]=pre[pos]; 62 } 63 printf("%lld\n",ans); 64 } 65 return 0; 66 }
链表
相关文章推荐
- 2017多校第3场 HDU 6058 Kanade's sum 双链表,思维
- 2017多校联合第三场 1003题 hdu 6058 Kanade's sum 链表
- (2017多校训练第三场)HDU - 6058 Kanade's sum 链表
- HDU 6058 Kanade's sum(链表)
- HDU 6058 Kanade's sum 二分,链表
- hdu 6058 Kanade's sum(模拟链表)
- hdu 6058 Kanade's sum(链表)
- hdu 6058 Kanade's sum(链表)(2017 Multi-University Training Contest - Team 3 )
- HDU 6058 Kanade's sum(链表)
- HDU 6058 Kanade's sum [链表]
- hdu 6058 Kanade's sum(链表)(2017 Multi-University Training Contest - Team 3 )
- 2017 多校训练第三场 HDU 6058 Kanade's sum
- hdu 6058 Kanade's sum(链表)(2017 Multi-University Training Contest - Team 3 )
- hdu 6058 Kanade's sum(链表)(2017 Multi-University Training Contest - Team 3 )
- HDU 6058 Kanade's sum(链表)
- HDU 6058 Kanade's sum (链表, 2017 Multi-Univ Training Contest 3)
- 2017 Multi-University Training Contest - Team 3 1003(hdu 6058) Kanade's sum(链表)(set)
- hdu 6058 Kanade's sum(链表)(2017 Multi-University Training Contest - Team 3 )
- HDU 6058 Kanade's sum (链表)
- 【多校训练】hdu 6058 Kanade's sum