UVALive 5990 Array Diversity
来源:互联网 发布:潘石屹三段婚姻知乎 编辑:程序博客网 时间:2024/06/06 14:01
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26408
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>using namespace std;typedef unsigned long long ll;const int N=100010;const int mod=1000000007;ll p[N];int a[N];int n;void init() { p[0]=1; for(int i=1; i<N; i++)p[i]=p[i-1]*2%mod;}int main() { int t; init(); cin>>t; while(t--) { scanf("%d",&n); int mi=1001000,ma=-1; for(int i=1; i<=n; i++) { scanf("%d",&a[i]); mi=min(mi,a[i]); ma=max(ma,a[i]); } if(mi==ma) { printf("%lld %lld\n",(ll)n*(n+1)/2%mod,(ll)(p[n]-1+mod)%mod); continue; } int l=-1,r=-1,k=0; bool fa=0,fi=0; ll ans=0; for(int i=1; i<=n; i++) { ///连续的 if(a[i]==mi||a[i]==ma) { if(l==-1)l=i; else if(a[l]==a[i])l=i; else r=i; if(a[i]==mi)fi=1; else fa=1; } if(fa&&fi) { ans=(ans+(ll)(n-r)*(l-1-k)%mod+1+(n-r)+(l-1-k))%mod; if(a[l]==mi)fi=0; else fa=0; k=l; l=r; continue; } } sort(a+1,a+n+1); ll res=0; int i=2,ii=1; while(i<n&&a[i]==a[1])i++,ii++; int j=n-1,jj=1; while(a[j]==a[n]&&j>=1)j--,jj++; res=(p[ii]-1)*(p[jj]-1)%mod*(p[n-jj-ii])%mod;///不连续的 printf("%lld %lld\n",ans,res); } return 0;}
0 0
- UVALive 5990 Array Diversity
- bnu 12872 Array Diversity
- diversity
- diversity score
- Codeforces 844 A Diversity
- codeforces 844A Diversity
- Codeforces 844A Diversity
- Codeforces 844A Diversity
- codeforces 844A Diversity
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- OJ学习笔记2
- [九度OnlineJudge][剑指Offer]题目1387:斐波那契数列
- oracle交流趣事--主机名变更在跑某报告信息时变更的小细节
- 获取当前程序可执行文件的所在路径
- Hbase用户权限
- UVALive 5990 Array Diversity
- 读《 江西59岁老人用鼠药结束了妻子性命》有感
- 【转载,万人坑】const char*, char const*, char*const的区别
- UVALive 5984 Save the Students!(几何)
- 将循环链表插在单链表头部
- Service的理解和用法
- #1 LeetCode——Two Sum
- spring 事务笔记
- swift中出现Optional("xxx")