Practice.
A. Everybody Likes Good Arrays!
题意
给定一个数组
思路
显然,奇偶性相同的两个数相乘后奇偶性是不变的,那么我们只需统计有多少组相邻元素的奇偶性相同即可。
时间复杂度:
对应AC代码
import java.math.BigInteger;
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
while(t -- > 0){
int n = scanner.nextInt();
int cur = scanner.nextInt() % 2;
int cnt = 0;
for(int i=1;i<n;i++){
int a = scanner.nextInt();
if(a % 2 == cur) cnt ++;
else cur = a % 2;
}
System.out.println(cnt);
}
}
}
还是挺简单的思维题
B. Emordnilap
题意
给定一个整数
思路
可以证明,对于任意一个排列,所有大于
显然,对于
时间复杂度:
对应AC代码
import java.math.BigInteger;
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
while(t -- > 0){
long n = scanner.nextInt();
long fact = 1L, mod = 1000000007;
for(long i=2;i<=n;i++) fact = (fact * (i % mod)) % mod;
System.out.println((((fact * (n % mod)) % mod) * ((n - 1) % mod)) % mod);
}
}
}
难得B题想的这么快
C. Quiz Master
题意
给定数组
思路
双指针,类似于滑动窗口的解法。
我们考虑用双指针维护一个
更具体地说,我们可以开一个数组
时间复杂度:
对应AC代码
import java.math.BigInteger;
import java.util.*;
public class Main{
static int N = 100010;
private static List<List<Integer>> init(){
List<List<Integer>> res = new ArrayList<>();
for(int i=0;i<=N;i++) res.add(new ArrayList<>());
for(int i=1;i<=N;i++)
for(int j=i;j<=N;j+=i){
res.get(j).add(i);
}
return res;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<List<Integer>> f = init();
int t = scanner.nextInt();
nxt:
while(t -- > 0){
int n = scanner.nextInt(), m = scanner.nextInt();
int[] a = new int[n];
for(int i=0;i<n;i++) a[i] = scanner.nextInt();
Arrays.sort(a);
int l = 0, r = 0, best = Integer.MAX_VALUE, now = 0;
int[] cnt = new int[N];
while(r < n){
for(int each : f.get(a[r])){
if(each > m) break;
if(cnt[each] == 0) now ++;
cnt[each] ++;
}
while(now == m){
best = Math.min(a[r] - a[l], best);
for(int each : f.get(a[l])){
if(each > m) break;
if(cnt[each] == 1) now --;
cnt[each] --;
}
l ++;
}
r ++;
}
System.out.println(best == Integer.MAX_VALUE ? -1 : best);
}
}
}
妙啊.jpg
- 本文链接 https://floating-ocean.github.io/blog_old/posts/1008203407/
- 版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!