2019.11.02日常総括兼onecode複試合シミュレーション五AとC題
13995 ワード
【A】:
【考え方】:完全なシミュレーション問題【コード】:
【C】:
【考え方】:一段の切り取りでいい、尺取り法に似ている【コード】:
【考え方】:完全なシミュレーション問題【コード】:
#include
#include
#include
#include
using namespace std;
int a,b;
int main(){
scanf("%d%d",&a,&b);
if (b-a>1) printf("NO
");
else if (a>b&&!(a==9&&b==1)) printf("NO
");
else printf("YES
");
return 0;
}
【C】:
【考え方】:一段の切り取りでいい、尺取り法に似ている【コード】:
#include
#include
#include
#include
using namespace std;
#define gc getchar()
#define g(c) isdigit(c)
inline int read(){
char c=0;int x=0;bool f=0;
while (!g(c)) f=c=='-',c=gc;
while (g(c)) x=x*10+c-48,c=gc;
return f?-x:x;
}
const int N=1e6+100;
const int M=2e6+100;
int cnt,a[N],ans,i,d,k;
int b[M],n,test_number;
inline void push(int k){
if (a[b[k]]==0) cnt++;
a[b[k]]++;//
}
inline void dele(int k){
a[b[k]]--;//
if (a[b[k]]==0) cnt--;
}
int main(){
test_number=read();
while (test_number--){
memset(a,0,sizeof(a));cnt=0;
n=read();k=read();d=read();
for(i=1;i<=n;i++)
b[i]=read();
for(i=1;i<=d;i++)
push(i);
ans=cnt;
for(i=d+1;i<=n;i++){
dele(i-d);push(i);
ans=min(ans,cnt);
}
printf("%d
",ans);
}
return 0;
}