您当前的位置: 首页 > 

先求一个导

暂无认证

  • 3浏览

    0关注

    291博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

codeforces 753-div3 D(现在只会做水题了呜呜呜)

先求一个导 发布时间:2021-11-03 23:00:07 ,浏览量:3

题目

题意: 给定n个数,每个数具有B或者R属性之一。B表示该数可以执行任意次-1,R表示该数可以执行任意次+1。判断这n个数能否凑出一个permutation。

思路: 我直接线段树维护,发现没过样例,确实越来越菜了。 冷静分析,可以把b和r属性的数分别维护,进行排序。 之后按照数值now从小到大,如果b中的数值 < now,而他只能下降,根据鸽巢原理,不能凑出。 如果r中的数值 > now,而他只能上升,根据鸽巢原理,也不能凑出。 看代码就会了。

代码:

// Problem: D. Blue-Red Permutation
// Contest: Codeforces - Codeforces Round #753 (Div. 3)
// URL: https://codeforces.com/contest/1607/problem/D
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define OldTomato ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
#define fir(i,a,b) for(int i=a;i>n;
    vector a(n);
    vector b;
    vector r;
    for(int i=0;i>a[i];
    }
    for(int i=0;i>ch;
    	if(ch == 'B') b.push_back(a[i]);
    	else r.push_back(a[i]);
    }
    bool flag = true;
    sort(b.begin(),b.end()); //只能下降,取他们为小的数
    sort(r.begin(),r.end()); //只能上升
    int now = 1;
    for(int i=0;iT;
   // read(T);
   while(T--)
   {
   	 solve();
   }
   return 0;
}
关注
打赏
1662037414
查看更多评论
立即登录/注册

微信扫码登录

0.0438s