2018/12/14周五集训队第九次测试赛补题题解

A - Paper Airplanes CodeForces - 965A (数学)

先算出每个人要用几张纸,然后再算出总共要用几张纸,然后计算用多少包纸

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ll k,n,s,p;
  cin>>k>>n>>s>>p;
  ll t;
  if(n%s==0)
  t=n/s;
  else
  t=n/s+1;
  ll jk=k*t;
  ll ans;
  if(jk%p==0)
  ans=jk/p;
  else
  ans=jk/p+1;
  cout<<ans;
}

B - Battleship CodeForces - 965B(待填坑)

待填坑

C - Petya and Origami CodeForces - 1080A(数学)

这个肯定都没问题,直接算就行

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ll n,k;
  cin>>n>>k;
  ll red=2*n;
  ll green=5*n;
  ll blue=8*n;
  ll sum=0;
  if(red%k==0)
  sum+=red/k;
  else
  sum+=red/k+1;
  if(blue%k==0)
  sum+=blue/k;
  else
  sum+=blue/k+1;
  if(green%k==0)
  sum+=green/k;
  else
  sum+=green/k+1;
  cout<<sum;
}

D - Margarite and the best present CodeForces - 1080B(数学)

数据过大枚举应该是要卡超时

应该去寻找一种直接的数学计算方法

解法

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ll q;
  cin>>q;
  while(q--)
  {
    ll l,r;
    cin>>l>>r;
    if(l==r)
    {
      if(l%2!=0)
      cout<<-l<<"\n";
      else
      cout<<l<<"\n";
    }
    else
    {
      if(l%2!=0)
      {
        ll t=r-l+1;
        if(t%2==0)
        cout<<(t/2)<<"\n";
        else
        cout<<(t/2)-r<<"\n";
      }
      else
      {
        ll t=r-l+1;
        if(t%2==0)
        cout<<-(t/2)<<"\n";
        else
        cout<<r-(t/2)<<"\n";
      }
    }
  }
}

E - Masha and two friends CodeForces - 1080C (数学+思维)

这个题实在是太有意思了,太巧妙了。。

解法








代码

#include <bits/stdc++.h>
using namespace std;
long long cdiv(long long x,long long y)
{
  return x/y+(x%y>0);
}
long long w(long long a,long long b)
{
  return cdiv(a,2)*cdiv(b,2)+(a/2)*(b/2);
}
long long W(long long x1,long long y1,long long x2,long long y2)
{
  return w(x2,y2)-w(x2,y1-1)-w(x1-1,y2)+w(x1-1,y1-1);
}
long long B(long long x1,long long y1,long long x2,long long y2)
{
  return (y2-y1+1)*(x2-x1+1)-W(x1,y1,x2,y2);
}
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t;
  cin>>t;
  while(t--)
  {
    int x1,x2,x3,x4,y1,y2,y3,y4;
    long long n,m;
    cin>>n>>m;
    cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
    long long white=W(1,1,m,n);
    long long black=B(1,1,m,n);
    white+=B(x1,y1,x2,y2);
    black-=B(x1,y1,x2,y2);
    white-=W(x3,y3,x4,y4);
    black+=W(x3,y3,x4,y4);
    if(max(x1,x3)<=min(x2,x4)&&max(y1,y3)<=min(y2,y4))
    {
      white = white - B(max(x1,x3),max(y1,y3),min(x2,x4),min(y2,y4));
      black = black + B(max(x1,x3),max(y1,y3),min(x2,x4),min(y2,y4));
    }
    cout<<white<<" "<<black<<"\n";
  }
}
posted @ 2018-12-18 16:48  baccano!  阅读(249)  评论(0编辑  收藏  举报