求调。
  • 板块题目总版
  • 楼主lcfollower
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/27 19:05
  • 上次更新2024/8/27 19:08:14
查看原帖
求调。
1296826
lcfollower楼主2024/8/27 19:05

rt,下题代码 WA 测试点几乎比答案大一倍。

姑且当弱化版,1≤n≤50001\le n\le 5000。

# include <bits/stdc++.h>

# define int long long
# define rint register int
# define ME ; 
# define AK 0
# define SX2022 return

inline int read();
inline void write(int x);
inline void writesp(int x);
inline void wrietln(int x);

//---------------------------------

using namespace std;

const int N = 1e4 + 10;
int n ,m ,ans ,a[N] ,f[N];

inline void fre(){
  freopen("beautiful.in" ,"r" ,stdin);
  freopen("beautiful.out" ,"w" ,stdout);
} 

signed main(){
  n = read() ,m = read();
  for(rint i = 1 ;i <= n; i ++)
    a[i] = read() ,a[i] %= m;
  f[1] = 1;
  ans = 1;
  for(rint i = 2 ; i <= n ;i ++){
        f[i] = 1;
  	for(rint j = 1; j < i ;j ++)
  	  if((a[i] + a[j]) % m == 0) f[i] = max(f[i] ,f[j] + 1);
  	ans = max(ans ,f[i]);
  } 
  printf("%lld\n" ,n - ans);
  SX2022 AK ME
}


inline int read(){
  int s = 0 ,w = 0;
  char c = getchar();
  while(!isdigit(c)){
  	w |= (c == '-');
	c = getchar();
  } while(isdigit(c)){
  	s = (s << 1ll) + (s << 3ll) + (c ^ 48);
  	c = getchar();
  } return w ? -s : s;
} inline void write(int x){
  if(x < 0) putchar('-') ,x = -x;
  if(x >= 10) write(x / 10);
  putchar (x % 10 | 48);
} inline void writesp(int x){
  write(x) ,putchar(' ');
} inline void writeln(int x){
  write(x) ,putchar('\n');
} 

请问是转移有问题还是思路有问题?

fif_i 表示强制以第 ii 个数为序列末尾能够保存的最多数。

2024/8/27 19:05
加载中...