[codeforces 1303C] Perfect Keyboard 일일이 쓰기 f[x]=y, g[y]=x
2384 단어 codeforces
총목록 상세 정보https://blog.csdn.net/mrcrack/article/details/103564004
온라인 평가 주소https://codeforces.com/contest/1303/problem/C
Problem
Lang
Verdict
Time
Memory
C - Perfect Keyboard
GNU C++11
Accepted
31 ms
0 KB
f[x]=y, g[y]=x를 일일이 비추기
처음에는 흐리멍덩하고 쓰기에 적합하지 않은 알고리즘을 생각한 후에 컴퓨터 처리 각도에서 주동적으로 생각하고 입력이 왼쪽에서 오른쪽으로 한 자모 한 자모의 처리에 대해 사고방식이 자연스러워진다.
하나의 공간을 펼치고 입력 중의 첫 번째 자모를 개설 공간의 중간 위치에 넣고
두 번째 자모는 첫 번째 자모의 오른쪽에 넣고
세 번째 자모는 앞의 자모와 동일한지 확인하고, 만약, 처리하지 않는다면...쓸데없는 말을 한 것 같으니, 그래도 예를 들어 시뮬레이션을 해라, 이렇게 하면 똑똑히 볼 수 있다.
예제 YES 데이터 시뮬레이션은 다음과 같습니다.
1
codedoca
YES
edocabfghijklmnpqrstuvwxyz
c c
o co
d cod
e code
d code
o code
c code
a acode
acodebfghijklmnpqrstuvwxyz
예제 NO 데이터 시뮬레이션은 다음과 같습니다.
1
abcda
NO
a a
b ab
b abc
d abcd
a ,
NO
회의에 참가하여 편찬하고 싶은지 어느 정도 차이가 있는지 비경기 시기에 두어야 한다. 이런 문제는 빨리 편찬해야 하기 때문에 어쩔 수 없이 경기이기 때문에 여러 가지 상황이 쉽게 발생한다.
프로그램이 짜여진 후에 샘플을 보다가 갑자기 데이터 세트가 맞지 않는 것을 발견했다. 어떻게 된 일인지 AC를 제출한다.
사후에 다시 보면 샘플 중의 입력 줄과 출력 줄이 위치를 잘못 보았기 때문에 시합할 때 상황이 너무 쉽게 나타난다.
#include
#include
char s[210];
int pos[30],b,a[100],d;
int min(int a,int b){
return ab?a:b;
}
int main(){
int t,l,r,len,flag,i;
scanf("%d",&t);
while(t--){
scanf("%s",s+1);
memset(a,0,sizeof(a)),memset(pos,0,sizeof(pos));
l=r=50;
pos[s[1]-'a']=50,a[50]=s[1],l=r=50;
len=strlen(s+1);
flag=0;
for(i=2;i<=len;i++){
b=pos[s[i-1]-'a'],d=pos[s[i]-'a'];
if(d){
if(d==b+1||b==d+1)continue;
else{
flag=1;
break;
}
}
if(a[b+1]==0)a[b+1]=s[i],pos[s[i]-'a']=b+1,r=max(r,b+1);
else if(a[b-1]==0)a[b-1]=s[i],pos[s[i]-'a']=b-1,l=min(l,b-1);
else{
flag=1;
break;
}
}
if(flag)printf("NO
");
else{
printf("YES
");
for(i=l;i<=r;i++)printf("%c",a[i]);
for(i=0;i<26;i++)
if(pos[i]==0)
printf("%c",'a'+i);
printf("
");
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Codeforces Round #715 Div. 2C The Sports Festival: 구간 DP전형구간 DP의 초전형. 이하, 0-indexed. 입력을 정렬하여 어디서나 시작하고 최적으로 좌우로 계속 유지하면 좋다는 것을 알 수 있습니다. {2000})$의 주문이 된다. 우선, 입력을 소트하여 n개의 요소를 $...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.