virtual ABBYY2.0 Eazy

今天做virtual ABBYY2.0 Eazy,D題死活沒搞出來,自己出的數據都過了但就是WA在第4個點上。題不難,難在是否能把情況都考慮到,是否處理了所有情況,區間有重疊什麼的。處理邊界還有瑣細的情況是我的弱項,常常自己覺得好像都考慮到了,又沒有很大的把握。

賽後看xianxingwuguan和fubao的代碼,感覺他們的處理方式簡單而巧妙。利用普遍的性質來覆蓋掉瑣細的細節,就是可以不用考慮多種情況,反正都可以用哪個性質。

我覺得這是我需要加強的地方。

題目link:http://codeforces.com/contest/177/problem/D1



fubao的code:

int find(int i,int j)
{
  if(i<0)
  return num2[j];
  return num2[j]-num2[i];
}
int main()
{
    cin>>n>>m>>c;
    for(int i=0;i<n;i++)
    scanf("%d",num1+i);
    for(int i=0;i<m;i++)
    scanf("%d",num2+i);
    for(int i=m;i<n;i++)
    num2[i]=0;
    for(int i=1;i<n;i++)
    num2[i]+=num2[i-1];
    for(int i=0;i<n;i++)
    {
      num1[i]+=find(i-(n-m+1),i);
      num1[i]%=c;
    }
    for(int i=0;i<n;i++)
    {
       cout<<num1[i]<<" ";
    }
    cout<<"\n";
    return 0;
}

xianxingwuguan 的code:

int main()
{
    scanf("%d %d %d",&n,&m,&c);
    for(int i=0;i<n;i++)
        scanf("%d",a+i);
    for(int i=0;i<m;i++)
        scanf("%d",b+i);
    for(int i=0;i<n;i++)
    {
        if(i<m)
            t+=b[i];
        if(i>n-m)
            t-=b[i-n+m-1];
        printf("%d ",(a[i]+t)%c);
    }
    return 0;
}


發佈了52 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章