首页 > 其他 > 详细

hdu 5273 Dylans loves sequence

时间:2015-06-20 21:59:31      阅读:334      评论:0      收藏:0      [点我收藏+]

题目链接:

  http://acm.hdu.edu.cn/showproblem.php?pid=5273

bestcoder round#45 1002

题目大意:

  给出一个有n个数的任意序列,问[r,l]区间内一共有多少对倒置数?

解题思路:

  由于1<=n<=1000,所以想怎么做怎么做,当时不知道怎么了,思路不错,但是就是代码wa。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 #define maxn 1010
 5 int dp[maxn][maxn],a[maxn];
 6 int main ()
 7 {
 8     int n, q;
 9     while (scanf ("%d %d", &n, &q) != EOF)
10     {
11         for (int i=1; i<=n; i++)
12             scanf ("%d", &a[i]);
13         memset (dp, 0, sizeof(dp));
14         for (int i=1; i<=n; i++)
15         {//dp[i][j]是[i,j]区间里i为起始位置的倒置数对
16             for (int j=i+1; j<=n; j++)
17                 if (a[i] > a[j])
18                     dp[i][j] ++;
19             for (int j=i+1; j<=n; j++)
20                 dp[i][j] += dp[i][j-1];
21         }
22         for (int i=n-1; i>0; i--)//再枚举[i,j]这个区间里面任意一个数为起始位置,含有的倒置数对
23             for (int j=i+1; j<=n; j++)
24                 dp[i][j] += dp[i+1][j];
25         while (q--)
26         {//最后输出结果
27             int l, r;
28             scanf ("%d %d", &l, &r);
29             printf ("%d\n", dp[l][r]);
30         }
31     }
32     return 0;
33 }

 

hdu 5273 Dylans loves sequence

原文:http://www.cnblogs.com/alihenaixiao/p/4591088.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!