0
点赞
收藏
分享

微信扫一扫

牛客网 - 2018年湘潭大学程序设计竞赛 - H 统计颜色


题目链接:​​点击打开链接​​

题目大意:

解题思路:区间交叉判定技巧

AC 代码

#include<bits/stdc++.h>
#include<cmath>

#define mem(a,b) memset(a,b,sizeof a);

using namespace std;

typedef long long ll;

struct T
{
vector<int> l,r;
}t[70];

int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
for(int i=0;i<65;i++)
{
t[i].l.clear();
t[i].r.clear();
}

int op,l,r,c;
while(m--)
{
scanf("%d",&op);
if(op==1)
{
scanf("%d%d%d",&l,&r,&c);
t[c].l.push_back(l); // 将属于c颜色的桶编号区间保存下来
t[c].r.push_back(r);
}
else
{
int sum=0;
scanf("%d%d",&l,&r);
for(int i=0;i<65;i++)
for(int j=0;j<t[i].l.size();j++)
if(t[i].r[j]>=l && t[i].l[j]<=r) // 交叉写法,只要有交叉(包括边界),则定存在一种颜色
{
sum++; break;
}
printf("%d\n",sum);
}
}
}

return 0;
}


举报

相关推荐

0 条评论