fzu 2019 排列
2012-04-28 22:04
288 查看
wrong了好多吧,注意边界
#include<iostream> #include<cstring> #include <cstdio> #include<string> #include<queue> #include<vector> #include<map> #include <set> #include<ctime> #include<cmath> #include <cstdlib> #include<algorithm> #include <iomanip> using namespace std; #define LL __int64 #define N 200100 #define mid 100000 int ar ,dp ,hah ; int main(){ int T,n,m; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); int id; for(int i=1;i<=n;i++){ scanf("%d",&ar[i]); if(m==ar[i]) id=i; } memset(dp,0,sizeof(dp)); for(int i=id-1;i>0;i--){ dp[i]=dp[i+1]; if(ar[i]<m) dp[i]++; } for(int i=id+1;i<=n;i++){ dp[i]=dp[i-1]; if(ar[i]<m) dp[i]++; } int ans=0; memset(hah,0,sizeof(hah)); int x=((id-1)&1 ? id+1:id); for(int i=x ;i<=n;i+=2){ hah[ dp[i]-(i-x)/2 +mid]++; } for(int i=1;i<=id;i+=2){ ans+=hah[ (x-i)/2-dp[i] +mid]; } memset(hah,0,sizeof(hah)); x=((id-2)&1 ? id+1:id); for(int i=x ;i<=n;i+=2) { hah[ dp[i]-(i-x)/2 +mid]++; } for(int i=2;i<=id;i+=2){ ans+=hah[ (x-i)/2-dp[i] + mid]; } printf("%d\n",ans); } }
相关文章推荐
- FZU 2019 排列
- FZU 1571 排列的字典序问题
- FZU 2019 Mountain Number
- uva fzu2019(数位dp)
- FZU 2103 Bin & Jing in wonderland 排列求概率
- fzu 2120 数字排列
- fzu 2282(错位排列+逆元+快速幂函数)
- FZU 2103 排列组合
- 数字数据fzu 2120 数字排列
- FOJ (FZU) 1476 矩形的个数 排列组合。
- FOJ (FZU) 1476 矩形的个数 排列组合。
- FZU 2120-数字排列(状压DP)
- FZU_2019_Mountain Number题解
- fzu_2120_數字排列(狀態壓縮DP)
- FZU April 排列
- hdu 2019 排列有序
- Fzu 2120 数字排列【状压dp】
- 排列问题
- 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可
- 排列组合算法总结(含Java实现)