日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客网 【每日一题】5月20日题目 简单瞎搞题

發布時間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网 【每日一题】5月20日题目 简单瞎搞题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

比賽鏈接

文章目錄

    • 題目描述
    • 題解:
    • 代碼:

題目描述


輸入描述:

第一行一個數 n。 然后 n 行,每行兩個數表示 li,ri。

輸出描述:

輸出一行一個數表示答案。

示例1
輸入

5 1 2 2 3 3 4 4 5 5 6

輸出

26

備注:
1 ≤ n , li , ri ≤ 100

題解:

xi的是在 [li , ri]中任選一個,然后構成值,所以可以用分組背包來做
dp[i][j]前i個數字能否構成j
那么dp [ i -1 ] [ j - x[ i ]* x [ i ] ] = = 1則說明加上第i個數則可以構成,x [ i ] 的取值范圍 是題目所給 l[i]和r[i]
這樣做肯定不行,哪那么簡單
復雜度過高,我們需要壓縮下
先注意dp的值無疑是0或1,所以可以用bitset.
bitset 在 bitset 頭文件中,它是一種類似數組的結構,它的每一個元素只能是0或1,每個元素僅用1bit空間。
這樣,我們用dp [ i ]表示第i行的01串
dp [ i ]= dp [ i ] | ( d p [ i - 1 ] < < ( x [ j ] 2 ) )
bitset還有自帶的求1的個數的count,這樣就更方便了

代碼:

#include<bits/stdc++.h> #include<bitset> using namespace std; typedef long long ll; int num1,num2; const int maxn=130; int a[maxn]; bitset<1000009>dp[130]; int n; int main(){ cin>>n;dp[0][0]=1;for(int i=1;i<=n;i++){int l,r;cin>>l>>r;for(int j=l;j<=r;j++)dp[i]|=(dp[i-1]<<(j*j));}cout<<dp[n].count();return 0; }

總結

以上是生活随笔為你收集整理的牛客网 【每日一题】5月20日题目 简单瞎搞题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。