1. 程式人生 > >Codeforces Round #524 (Div. 2) ABC

Codeforces Round #524 (Div. 2) ABC

A - Petya and Origami

題意:n個客人,每個本子有m張同一顏色的紙;

每一個客人要 紅色2張 綠色5張  白色8張;

問最少需要買多少本本子

 

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long n,m;
    long long ans;
    cin>>n>>m;
        long long aa,ab,ac,d,a,b,c;
        a=2*n;b=n*5;c=n*8;
        aa=a/m;ab=b/m;ac=c/m;
        if(a%m) aa++;
        if(c%m) ac++;
        if(b%m) ab++;
        d=aa+ab+ac;
        cout<<d<<"\n";

}

B - Margarite and the best present

題意:T組測試 給區間【L,R】區間累加,其中 奇數為負數 偶數為正數;

#include<bits/stdc++.h>
using namespace std;
int main()
{
  long long n,m,t,l,r;
  long long ans;
  cin>>t;
  while(t--)
  {
    cin>>l>>r;
    long a,c;
    if(l==r)
    {
      if(r%2) ans=-r;
      else ans=r;
    }
    else
    {
      if((r-l+1)%2==0)
      {
        ans=(r-l+1)/2;
        if(r%2)  ans=(-ans);
      }
      else
      {
        ans=(r-l+1)/2;
        if(l%2)
        {
          ans=-ans;
          ans-=l;
        }
        else ans+=l;
      }
    }
    cout<<ans<<"\n";
  }

}

 

   C - Masha and two friends

 

給出 N*M 的棋盤,初始

給出兩個矩陣座標(x1,y1,x2,y2)全部染白色  ,左下 右上   (x3,y3,x4,y4)全部染黑色

輸出:白色 黑色的個數

 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
long long  cum;
ll solve(ll x1,ll x2,ll y1,ll y2)
{

    long long l=fabs(y2-y1)+1;
    ll r=fabs(x2-x1)+1;cum=l*r;
    if((l%2==0)||(r%2==0)) return l*r/2;
    if(l%2) {
        if((x1+y1)%2) return l*r/2+1;//黑
        else return l*r/2;
    }
}
int main()
{
    ll n,m,t;
    cin>>t;
    while(t--)
    {
        ll x1,x2,y1,y2,x3,x4,y3,y4;
        cin>>n>>m;
        cin>>x1>>y1>>x2>>y2;
        ll w,h;
        h=w=(n*m/2);
        if((n*m)%2) w++;// printf("k1 %d %d\n",w,h);
        ll c=solve(x1,x2,y1,y2);//多少黑變成白色
        w+=c;h-=c;//printf("k2 %d %d\n",w,h);
        cin>>x3>>y3>>x4>>y4;
        c=solve(x3,x4,y3,y4);//黑色
        c=cum-c;//多少白變成黑色
        w-=c;h+=c;//printf("k3 %d %d\n",w,h);
       ll x5=max(x1,x3),x6=min(x2,x4);
        ll y5=max(y1,y3),y6=min(y2,y4);
        if(x5<=x6&&y5<=y6) {
             c=solve(x5,x6,y5,y6);//黑色
              w-=c ;h+=c;
        }
     cout<<w<<" "<<h<<"\n";
    }
}