Thanos Sort

题目链接:http://codeforces.com/contest/1145/problem/A

 

愚人节题目,求最长不下降连续序列,序列还得是去一半,去一半得到的。

 

递归

 1 import java.util.Scanner;
 2 
 3 public class pro1145A {
 4 
 5     public static int rise(int[] R,int ind,int len){
 6         if(len==1) return 1;
 7         boolean flag = true;
 8         for(int i=ind;i<ind+len-1;++i){
 9             if(R[i]>R[i+1]){
10                 flag = false;
11                 break;
12             }
13         }
14         if(flag)
15             return len;
16         else{
17             return Math.max(rise(R,ind,len/2),rise(R,ind+len/2,len/2));
18         }
19     }
20 
21     public static void main(String[] args){
22         Scanner input = new Scanner(System.in);
23 
24         int N;
25         N = input.nextInt();
26 
27         int[] raw = new int[N];
28         for(int i=0;i<N;++i){
29             raw[i] = input.nextInt();
30         }
31 
32         int ans = rise(raw,0,N);
33         System.out.println(ans);
34     }
35 }
View Code

 

分治

 1 package com.jetbrains;
 2 
 3 import java.util.Scanner;
 4 
 5 public class pro1145A {
 6 
 7     public static int rise(int[] arr,int L,int R){
 8         if(L + 1 == R) return 1;
 9 
10         int mid = L+(R-L)/2;
11         int Lans = rise(arr,L,mid),
12             Rans = rise(arr,mid,R);
13 
14         if(arr[mid-1] <= arr[mid]&& Lans == mid-L
15                 && Rans == R-mid)
16             return  Lans+Rans;
17         else
18             return Math.max(Lans,Rans);
19     }
20 
21     public static void main(String[] args){
22         Scanner input = new Scanner(System.in);
23 
24         int N;
25         N = input.nextInt();
26 
27         int[] raw = new int[N];
28         for(int i=0;i<N;++i){
29             raw[i] = input.nextInt();
30         }
31 
32         int ans = rise(raw,0,N);
33         System.out.println(ans);
34     }
35 }
View Code

 

转载于:https://www.cnblogs.com/Kiritsugu/p/11075015.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值