• LibreOJ #515 贪心只能过样例


    题目链接:https://loj.ac/problem/515

    知识点:  DP、bitset类

    解题思路:

      DP部分不难想到:从 a 到 b 遍历,然后在已有的状态上加上遍历得到的数字的平方,难点在于记录状态。

      于是我学到了一个新的 C++ 类,bitset,开熏~

      S最大只能到 1000000,所以我们开一个比 1000000 稍大的 bitset 类,bitset 上面的各位代表数字 1~1000000,如果能得到一个数字,那么就在这个数字对应的位上置 1,否则置 0。那么加法运算就用移位符解决,各种情况的合并用 ‘|’ 来处理。

    AC代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <bitset>
     4 #include <algorithm>
     5 
     6 using namespace std;
     7 bitset<1000005> dp[2];
     8 int main(){
     9     int pre=0,now=1;
    10     dp[0][0]=1;
    11     int n,a,b;
    12     scanf("%d",&n);
    13     while(n--){
    14         dp[now]=0;
    15         scanf("%d%d",&a,&b);
    16         for(int i=a;i<=b;i++)
    17             dp[now]|=(dp[pre]<<(i*i));
    18         swap(now,pre);
    19     }
    20     printf("%d
    ",dp[pre].count());
    21     return 0;
    22 }
    “这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
  • 相关阅读:
    csps模拟测试70
    模拟测试66反思
    csps63总结
    csps60爆零记
    csps模拟测试57
    模拟测试52,53反思
    LOJ2542「PKUWC2018」随机游走
    LOJ6300 BZOJ5283 [CodePlus 2018 3 月赛]博弈论与概率统计
    2019暑假集训
    省队二轮集训笔记
  • 原文地址:https://www.cnblogs.com/Blogggggg/p/7719849.html
Copyright © 2020-2023  润新知