기말 복습 노트 | PTA 데이터 구조상 문제(지속적인 업데이트)
43168 단어 복습하다.
1: 간단한 dp로 서열의 최대 자단과 dp[i]를 i로 끝나는 최대 자단으로 정의하고 전이 방정식을 열거하면 됩니다.
#include
#include
#include
using namespace std;
const int maxn = 1e5 + 9;
int a[maxn],dp[maxn];
int main()
{
int K;
scanf("%d",&K);
for(int i = 0;i < K;i++)
{
scanf("%d",&a[i]);
}
dp[0] = a[0];
for(int i = 1;i < K;i++)
{
dp[i] = max(dp[i-1] + a[i],a[i]);
}
int maxx = 0;
for(int i = 0;i < K;i++)
{
maxx = max(maxx ,dp[ i ]);
}
printf("%d
",maxx);
return 0;
}
2:1원 다항식의 덧셈과 곱셈은 정말 사유 수준이 없는 시뮬레이션 문제이다. 그러나 나는 오랫동안 (주로 debug) 썼고 자신의 코드 수준이 통과되지 않는 잔인한 사실을 다시 한 번 반영했다.그러나 이 원본 코드는 길어 보이지만 인터넷에서 천편일률적인 해법보다 공간을 더 절약할 수 있다(하고 나서 블로그 10편을 봤는데 똑같은 해법이라고 투덜대지 않을 수 없다).
뭐랄까: 시뮬레이션 문제를 쓰기 전에 모든 상황을 최대한 고려해야 한다. 그렇지 않으면 마지막에 debug가 패치를 보완하는 것처럼 코드를 읽을 수 없게 된다.이 문제는 체인 테이블로 쓰는 것이 더 간단할지 모르겠지만, 나는 내가 사용하는 더 숙련된 수조qwq를 선택했다.
#include
#include
using namespace std;
const int maxn = 1e5 + 9;
struct node
{
int xi;
int eps;
};
bool cmp(node a,node b)
{
return a.eps > b.eps;
}
node eq1[maxn];
node eq2[maxn];
node jia[maxn];
node cheng[maxn];
node ch[maxn];
int main()
{
//freopen("input.txt","r",stdin);
int num1,num2;
scanf("%d",&num1);
for(int i = 0;i < num1; i++)
{
scanf("%d%d",&eq1[i].xi,&eq1[i].eps);
}
scanf("%d",&num2);
for(int i = 0;i < num2;i++)
{
scanf("%d%d",&eq2[i].xi,&eq2[i].eps);
jia[i].xi = eq2[i].xi;
jia[i].eps = eq2[i].eps;
}
//---------------------------------------------
int ct = 0;
for(int i=0;i<num1;i++)
{
for(int j=0;j<num2;j++)
{
cheng[ct].xi = eq1[i].xi * eq2[j].xi;
cheng[ct].eps = eq1[i].eps + eq2[j].eps;
ct++;
}
}
sort(cheng,cheng+ct,cmp);
//printf("---%d
",ct);
int temp = 0;
ch[0].xi = cheng[0].xi;
ch[0].eps = cheng[0].eps;
for(int i=1;i<ct;i++)
{
while(cheng[i].eps == ch[temp].eps)
{
ch[temp].xi += cheng[i].xi;
i++;
}
temp++;
ch[temp].xi = cheng[i].xi;
ch[temp].eps = cheng[i].eps;
}
int cnt_0 = 0;
for(int i = 0 ;i <= temp;i++)
{
if(ch[i].xi == 0) cnt_0++;
}
if(cnt_0 == temp + 1)
{
printf("0 0
");
}
else
{
for(int i = 0;i <= temp;i++)
{
if(i != temp)
{
if(ch[i].xi!=0)
{
if(i!=0) printf(" ");
printf("%d %d",ch[i].xi,ch[i].eps);
}
}
else
{
if(ch[i].xi!=0)
{
if(i!=0) printf(" ");
printf("%d %d",ch[i].xi,ch[i].eps);
}
}
}
printf("
");
}
//------------------------------------------------------
int cnt_jia = num2;
int cnt = num2;
for(int j = 0;j < num1;j++)
{
int flag = 0;
for(int i = 0;i < cnt_jia;i++)
{
if(jia[i].eps == eq1[j].eps)
{
jia[i].xi = jia[i].xi + eq1[j].xi;
flag = 1;
}
}
if(flag == 0)
{
jia[cnt].xi = eq1[j].xi;
jia[cnt].eps = eq1[j].eps;
cnt++;
}
}
sort(jia,jia + cnt,cmp);
/*printf("----------
");
for(int i=0;i
// remember to take all 0 into consideration
int count = 0;
for(int i=0;i<cnt;i++)
{
if(jia[i].xi == 0)
count++;
}
if(count == cnt)
{
printf("0 0
");
return 0;
}
for(int i = 0;i < cnt ;i++)
{
if(i != cnt-1)
{
if(jia[i].xi !=0 )
{
if(i!=0) printf(" ");
printf("%d %d",jia[i].xi,jia[i].eps);
}
}
else
{
if(jia[i].xi !=0 )
{
if(i!=0) printf(" ");
printf("%d %d",jia[i].xi,jia[i].eps);
}
}
}
return 0;
}
/* :
, , bug */
7:6 도 분리 한 도론 문제 가 하나 있다. 만약에 제목 에 따라 주어진 데이터 범위 를 n <=1e3 은 전혀 플로이드 를 뛸 수 없다. 그리고 그 의 변 이 많지 않기 때문에 표지 거리 는 각 점 마다 한 번 더 뛰어 최적화된 dij 이다.그런데 문제가 생겼어요. 제가 좀 게으르기 때문에 Floyd를 하나 써서 큰 tle를 보려고 했는데 단념했어요. 결국, AC???n3이 천 개가 넘으면 광속 측정기일까 봐 하하.
#include
#include
#include
using namespace std;
const int maxn = 1e3 + 9;
int maze[maxn][maxn] = { 0 };
int n,m;
int main()
{
scanf("%d%d",&n,&m);
memset(maze,0x3f3f3f,sizeof(maze));
while(m--)
{
int a,b;
scanf("%d%d",&a,&b);
maze[a][b] = 1;
maze[b][a] = 1;
}
for(int k =1;k <= n;k++)
{
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= n;j++)
{
maze[i][j] = min(maze[i][j],maze[i][k] + maze[k][j]);
}
}
}
int cnt[maxn];
memset(cnt,0,sizeof cnt);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(maze[i][j] <= 6)
{
cnt[i]++;
cnt[j]++;
}
}
}
for(int i=1;i<=n;i++)
{
printf("%d: %.2f%
",i,100.0*cnt[i]/(2.0*n));
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
화웨이 eNSP 구성 백업 게이트웨이PC 또는 스위치에 직접 포트 구성 명령 우선 순위 값이 클수록 우선 순위가 높아지므로 백업 게이트웨이는 벌칙 값을 구성하지 않아도 됩니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.