[关闭]
@994495jj 2017-09-26T13:24:04.000000Z 字数 694 阅读 666

hiho 1579(给出sa数组,求符合的字符串个数)

(ACM)字符串----后缀数组 (ACM)数学----组合数学


参考题解

  1. import java.math.BigInteger;
  2. import java.util.Scanner;
  3. public class Main {
  4. static final int N=100005;
  5. static int a[] = new int[N];
  6. static int b[] = new int[N];
  7. public static void main(String[] args) {
  8. Scanner cin = new Scanner(System.in);
  9. int T=cin.nextInt();
  10. for(int ca=1;ca<=T;++ca) {
  11. int n=cin.nextInt();
  12. for(int i=1;i<=n;++i) a[i]=cin.nextInt();
  13. for(int i=1;i<=n;++i) b[a[i]]=i;
  14. int m=0;
  15. for(int i=1;i<n;++i) {
  16. if(b[a[i]+1]>b[a[i+1]+1]) ++m;
  17. }
  18. if(m>25) {
  19. System.out.println("0");
  20. continue;
  21. }
  22. n=n+25-m;m=25-m;
  23. BigInteger ans=BigInteger.ONE;
  24. for(int i=1;i<=m;++i) {
  25. ans=ans.multiply(BigInteger.valueOf(n+1-i));
  26. }
  27. for(int i=1;i<=m;++i) {
  28. ans=ans.divide(BigInteger.valueOf(i));
  29. }
  30. System.out.println(ans);
  31. }
  32. }
  33. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注