站外题求助,玄关
  • 板块灌水区
  • 楼主jzm_2024
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/30 21:17
  • 上次更新2024/8/31 08:47:08
查看原帖
站外题求助,玄关
1384623
jzm_2024楼主2024/8/30 21:17

有C个人去晒太阳(1≤C≤2500),每个人各自能够忍受的阳光强度有一个最小值和一个最大值,太大就晒伤了,太小没感觉。 刚开始的阳光的强度非常大,所有人都承受不住,然后人就得涂抹防晒霜,防晒霜的作用是让阳光照在身上的阳光强度固定为某个值。 那么为了不让人烫伤,又不会没有效果。 给出了L(1≤L≤2500)种防晒霜。每种的数量和固定的阳光强度也给出来了,每个人只能抹一瓶防晒霜,请你求出最后能够享受晒太阳的人有几个。

输入:

第一行两个整数C L,表示人数和防晒霜的种类数。 接下来C行,每行两个整数,表示每个人能够忍受的阳光强度范围。两个整数均在1到1000范围内。 接下来L行,每行两个整数,表示每种防晒霜的固定的阳光强度和数量。两个整数均在1到1000范围内。

输出:

一个整数,表示最后能够享受晒太阳的人有几个。

蒟蒻代码:

#include"bits/stdc++.h"
using namespace std;
struct T{
   int a, b;
}t[2505];
struct F{
   int s, num;
}f[2505];
int c,l,cnt,p;
bool cmp1(T x,T y){
   if(x.b==y.b)
       return (x.a<y.a);
   return (x.b<y.b);
}bool cmp2(F x,F y){
   return (x.s<y.s);
}int main(){
   cin>>c>>l;
   for(int i=1;i<=c;i++)
       cin>>t[i].a>>t[i].b;
   sort(t+1,t+c+1,cmp1);
   for (int i=1;i<=l;i++)
       cin>>f[i].s>>f[i].num;
   sort(f+1,f+l+1,cmp2);
   for(int i=1;i<=c;i++){
   	for(int j=1;j<=l;j++){
   	    if(f[j].num>0&&f[j].s>=t[i].a&&f[j].s<=t[i].b)f[j].num--;cnt++;break;
   	}
   }cout<<cnt;
   return 0;
}

看正解就是这样,样例也过了,但就是WA。

2024/8/30 21:17
加载中...