• 10.10T2 贪心去重


    万事先排序,然后找规律

    思路我还是要学习,先普通的一个点,然后我们再扩张到两个的形式,然后就出来了

    code:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<queue>
     5 #define N 100005
     6 using namespace std;
     7 const long long mod=998244353;
     8 struct node {
     9     long long l,r;
    10     bool operator<(const node&a)const{
    11         return r>a.r;
    12     }
    13 } e[N];
    14 bool cmp(const node&a,const node &b){
    15     return a.l<b.l;
    16 }
    17 long long read(){
    18     long long x=0,f=1;
    19     char c=getchar();
    20     while(!isdigit(c)){
    21         if(c=='-')f=-1;
    22         c=getchar();
    23     }
    24     while(isdigit(c)){
    25         x=(x<<3)+(x<<1)+c-'0';
    26         c=getchar();
    27     }
    28     return x*f;
    29 }
    30 long long ksm(long long a,long long b){
    31     long long ans=1;
    32     for(;b;b>>=1){
    33         if(b&1){
    34             ans*=a;
    35             ans%=mod;
    36         }
    37         a*=a;
    38         a%=mod;
    39     }
    40     return ans;
    41 }
    42 long long a[N];
    43 priority_queue<long long,vector<long long>,greater<long long> >q;
    44 int main() {
    45     long long n,m;
    46     n=read(),m=read();
    47     for(long long i=1; i<=n; i++){
    48         e[i].l=read();
    49         e[i].r=read();
    50     }
    51     sort(e+1,e+n+1,cmp);
    52 //    for(long long i=1;i<=n;i++)cout<<e[i].l<<" "<<e[i].r<<'
    ';
    53     for(long long i=1; i<=m; i++) {
    54         a[i]=read();
    55     }
    56     sort(a+1,a+m+1);
    57     long long ans=0;
    58     long long head=1;
    59     for(long long i=1;i<=m;i++){
    60         while(!q.empty()&&q.top()<a[i])q.pop();
    61         long long chong=q.size();chong=ksm(2,chong);
    62         while(head<=n&&e[head].l<=a[i]){
    63             if(e[head].r<a[i]){
    64                 head++;
    65                 continue;
    66             }
    67             q.push(e[head].r);
    68             head++;
    69         }
    70         long long now=q.size();now=ksm(2,now);
    71         ans+=now-chong;
    72         ans+=mod;
    73         ans%=mod;
    74     }
    75     cout<<ans;
    76     return 0;
    77 }

    over

  • 相关阅读:
    学习PetShop3.0(9)工厂的资料
    net程序架构开发
    《解剖PetShop》系列之一
    与数据库相关的名词解释
    asp 导出Excel
    《解剖PetShop》系列之二
    业务模块的设计原则
    《解剖PetShop》系列之三
    JAVA之BigInteger(转)【转】【很好用啊】
    php_mcrypt.dll无法加载解决方法
  • 原文地址:https://www.cnblogs.com/saionjisekai/p/9766849.html
Copyright © 2020-2023  润新知