Codeforces Round #524 (Div. 2) ABC
阿新 • • 發佈:2018-12-02
題意: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"; } }
給出 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"; } }