DEF Java题解,代码已去除冗余~~~ 好菜,都得看答案才会😐🙄😣,只有代码没有分析
import java.util.*;
public class Main{
static int mod=998244353;
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
for(int i=sc.nextInt();i!=0;i--){
int n=sc.nextInt();
boolean ok=true;
List<int[]> list=new ArrayList<>();
for(int j=1,pre=n+5;j<=n;j++){
int p=sc.nextInt();
if(p>pre){
ok=false;
}
else if(pre!=p){
list.add(new int[]{j,p});
pre=p;
}
}
list.add(new int[]{n+1,0});
if(!ok){
System.out.println(0);
}
else{
long ans=1;
for(int j=1,count=n-list.get(0)[1];j<list.size();j++){
ans=ans*A(count,list.get(j)[0]-list.get(j-1)[0]-1)%mod;
count+=list.get(j-1)[1]-list.get(j)[1]-(list.get(j)[0]-list.get(j-1)[0]);
}
System.out.println(ans);
}
}
}
static long pow(long a,long b){
long ans=1;
for(;b!=0;b>>=1,a=a*a%mod){
if(b%2==1){
ans=ans*a%mod;
}
}
return ans;
}
static long A(int a,int b){
return b>a||b<0?0:fac(a)*pow(fac(a-b),mod-2)%mod;
}
static long fac(int a){
return a==0?1:fac(a-1)*a%mod;
}
}
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(),m=sc.nextInt(),a[]=new int[n+5],b[]=new int[n+5];
for(int i=1;i<=n;i++){
a[i]=sc.nextInt();
}
for(int i=1;i<=n;i++){
b[i]=sc.nextInt();
}
long min1[]=new long[n+5],min2[]=new long[n+5],sum=0,ans=(long)1e18;
Queue<Integer> q=new PriorityQueue<>((p1,p2)->p2-p1);
for(int i=1;i<=m;i++){
q.add(a[i]);
sum+=a[i];
}
min1[m]=sum;
for(int i=m+1;i<=n;i++){
q.add(a[i]);
min1[i]=(sum+=a[i]-q.poll());
}
q.clear();
sum=0;
for(int i=n;i>n-m;i--){
q.add(b[i]);
sum+=b[i];
}
min2[n-m+1]=sum;
for(int i=n-m;i>0;i--){
q.add(b[i]);
min2[i]=(sum+=b[i]-q.poll());
}
for(int i=m;i+m<=n;i++){
ans=Math.min(ans,min1[i]+min2[i+1]);
}
System.out.println(ans);
}
}
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
List<Integer> list=new ArrayList<>();
list.add(1);
while(list.size()<n){
List<Integer> temp=new ArrayList<>();
for(int i=0;i<2;i++){
for(int a:list){
temp.add(a);
}
}
list=temp;
list.set(list.size()-1,list.get(list.size()-1)+1);
}
System.out.println(new HashSet<>(list.subList(0,n)).size());
for(int i=0;i<n;i++){
System.out.print(list.get(i)+" ");
}
}
}