PAT 甲级 1046 PAT Ranking 个人错误总结

    技术2025-08-22  17

    每天都在刷简单题。 遇到的问题: 1.一开始想到用sum记录回环了,但是没想到直接记录宿命的的数值,最后一个点过不去。 2.改了之后边界点问题没处理好,因为如果数组从0开始记录的话,出现从1开始的数,就没法用两点减法了,0位必须为0。。。

    #include<stdio.h> #include<iostream> #include<algorithm> using namespace std; int D[100100]={}; int C[100100]={}; int main(){ int N,M,sum=0,dis; int a[2]; scanf("%d",&N); for(int i=1;i<=N;i++){ scanf("%d",C+i); sum+=C[i]; D[i]=sum; } scanf("%d",&M); for(int i=1;i<=M;i++){ scanf("%d %d",a,a+1); if(a[0]>a[1]) swap(a[0],a[1]); dis=D[a[1]-1]-D[a[0]-1]; printf("%d\n",dis<sum-dis ? dis:sum-dis); } return 0; }
    Processed: 0.018, SQL: 9