zoukankan      html  css  js  c++  java
  • 集训队日常训练20181201 C 1003 : 种类数

    时间限制(普通/Java):2000MS/6000MS     内存限制:65536KByte
    总提交: 8            测试通过:5

    描述

    一共有 n个数,第 i 个数是 xi ,其中xi 可以取 [li , ri] 中任意的一个值。

    设 ,求 S 种类数。

    输入

    第一行一个数n,接下来有n行,每行两个整数li,ri

    1<=n,li,ri<=100,数据保证li<=ri

    输出

    输出一行一个数表示答案。

    样例输入

    5
    1 2
    2 3
    3 4
    4 5
    5 6

    样例输出

    26

    解析:用bitset优化,dp,每输入一个范围,就是在前面已经计算的基础上加上这次范围内的数,每一次都加上l 到 r的范围的值,用|代替加法,<<i*i把答案加入到数组中。状态转移方程是a[i]|=a[i-1]<<(i*i);

     1 #include "bits/stdc++.h"
     2 #define ll long long
     3 using namespace std;
     4 inline void read(int &x)
     5 {
     6     x=0;char c=getchar();
     7     while(c<'0' || c>'9')c=getchar();
     8     while(c>='0' && c<='9'){
     9         x=x*10+c-'0';
    10         c=getchar();
    11     }
    12 }
    13 inline void write(int x)
    14 {
    15     int y=10,len=1;
    16     while(y<=x) {y*=10;len++;}
    17     while(len--){y/=10;putchar(x/y+48);x%=y;}
    18 }
    19 bitset<1000010>a,b;
    20 int main()
    21 {
    22     int n,l,r;
    23     read(n);
    24     b[0]=1;
    25     while(n--)
    26     {
    27         read(l);read(r);
    28         a.reset();
    29         //b.reset();
    30         //b[0]=1;
    31         for(int i=l;i<=r;++i)
    32         {
    33             a|=b<<(i*i);
    34         }
    35         b=a;
    36     }
    37     printf("%d
    ",b.count());
    38 }
    View Code
  • 相关阅读:
    Linux下的CPU使用率与服务器负载的关系与区别
    zabbix修改Template OS Linux模版使已使用内存(Used memory)更准确
    mysql查询时间戳和日期的转换
    python logging模块
    网络编程(TCP)
    网络编程(UDP)
    计算机网络
    IO流(字符流)
    IO流(字节流)
    算法
  • 原文地址:https://www.cnblogs.com/htmrc1/p/10051506.html
Copyright © 2011-2022 走看看