자 취 + 2 점 찾기
이것 은 비교적 재 미 있 는 방법 으로 아들 을 먹고 싶 은 것 처럼 문 제 를 해결 하 는 것 이다.이제 나 는 단지 수조 로 자 를 모 의 할 수 있다 는 것 을 알 았 을 뿐이다.힘 내 서 공부 해!
방법: 배열 시 뮬 레이 션 + 2 분 찾기
데이터 의 뜻 을 말 해 보 세 요. 10 개의 수 를 그 중에서 15 의 가장 짧 은 문자열 을 찾 아 보 세 요.
10
5 1 3 5 10 7 4 9 2 8
15
#include
using namespace std;
int main()
{
freopen("in.txt","r",stdin);
int n;
scanf("%d",&n);
int a[100];
int sum[100];
memset(sum,0,sizeof(sum));
for(int i = 0;i < n; i++) {
scanf("%d",&a[i]);
}
for(int i = 0;i < n; i++) {
sum[i+1] = sum[i] + a[i];
}
int S;
scanf("%d",&S);
if(sum[n] < S)
printf("NO
");
int res = n;
for(int s = 0;sum[s] + S <= sum[n]; s++) {
int t = lower_bound(sum+s,sum+n,sum[s] + S) - sum;
res = min(res,t-s);
}
printf("%d
",res);
return 0;
}
고급 표기 법: 진정한 '자'
#include
using namespace std;
int n;
int S;
int a[100];
void solve()
{
int res = n + 1;
int s = 0,t = 0,sum = 0;
for(;;) {
while(t < n && sum < S) {
sum += a[t++];
}
if(sum < S) break;
res = min(res,t-s);
sum -= a[s++];
}
if(res > n) {
printf("No
");
}
printf("Yes:%d
",res);
}
int main()
{
freopen("in.txt","r",stdin);
scanf("%d",&n);
for(int i = 0;i < n; i++) {
scanf("%d",&a[i]);
}
scanf("%d",&S);
solve();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
POJ3071: Football(확률 DP)Consider a single-elimination football tournament involving 2n teams, denoted 1, 2, …, 2n. After n rounds, only one team...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.