UVA - 12874 Blanket

UVA - 12874 Blanket

题意:
    给你n个毯子,m个人,并给你每条毯子厚的部分的长度和该厚的部分出现的周期;
    求盖了0--n 个毯子的人数。
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<vector>
#include<stack>
#include<cstdlib>
#pragma comment(linker, "/STACK:1024000000")
#define root 1, n, 1
#define lson l, mid, rt<<1
#define rson mid+1, r, rt<<1|1
#define intxt  freopen("in.txt","r",stdin);
#define outtxt freopen("out.txt","w",stdout);
#define _LL __int64
#define LL long long
#define pi acos(-1.0)
#define PB push_back()
#define MP make_pair()
#define BG begin()
#define ED end()
#define clr(a,b)  memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define Mod  1e9+7
using namespace std;
 const int MAX=1000005;
int A[MAX];
int arr[17][17];
int result[MAX];
int ans[MAX/10+10];

 int main(){
     #ifndef ONLINE_JUDGE
     intxt;
     outtxt;
     #endif // ONLINE_JUDGE
      int T;
      cin>>T;
      while(T--)
      {
          int n,m,a,b;
          clr(arr,0);
          clr(ans,0);
          scanf("%d%d",&n,&m);
          for(int i=0;i<=m;i++)
            result[i]=0;
          for(int i=0;i<n;i++){
            scanf("%d%d",&a,&b);
            arr[a][b]++;
          }
          //   a>=1&&a<=16   b>=1&&b<=16  
          //   处理这道题Key: 每次找到铺开的开始位置和结束位置 用1 -1处理。
         for(int i=1; i<=16; i++)
           for(int j=1; j<=16; j++){
             if(!arr[i][j])  continue;
            for(int k=0; k<m; k+=j){
                result[k]+=arr[i][j];
                result[k+i]-=arr[i][j];
            }
         }
         ans[result[0]]++;
         for(int i=1; i<m; i++){
            result[i]+=result[i-1];
            ans[ result[i] ]++;
         }
         for(int i=0; i<=n ; i++)
            printf("%d\n",ans[i]);
      }
     return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值