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

      歡迎訪問(wèn) 生活随笔!

      生活随笔

      當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

      编程问答

      【题解】洛谷P2114 [NOI2014]起床困难综合症

      發(fā)布時(shí)間:2024/1/18 编程问答 30 豆豆
      生活随笔 收集整理的這篇文章主要介紹了 【题解】洛谷P2114 [NOI2014]起床困难综合症 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

      前往:我自己搭建的博客

      題目

      洛谷P2114 [NOI2014]起床困難綜合癥

      題解

      題意簡(jiǎn)化為:在0~m之間找一個(gè)數(shù),使得這個(gè)數(shù)在一系列操作后最大。

      由于原數(shù)有大小限制,又要使得到的數(shù)盡量大,為了充分地利用限制,就需要按位從高到低貪心,確定原數(shù)是選0還是選1。如果可以使得到的數(shù)為1,則盡量選,同時(shí)要考慮原數(shù)限制,還要使原數(shù)盡量小。

      需要記錄每一位為0或1時(shí),在經(jīng)過(guò)操作后會(huì)變成什么。只要用一個(gè)全0數(shù)和一個(gè)全1數(shù)整體操作即可,最后一位位取出來(lái)。

      代碼

      #include <bits/stdc++.h> using namespace std; typedef long long ll; int n,m,a0,a1,t,ans,st; char ch[5]; inline void get_ans() {for(int i=30;i>=1;i--) //st是原數(shù) {int cur=1<<(i-1); //cur只有第i位為1 if(a0&cur) ans+=cur; //優(yōu)先考慮原數(shù)為0 else if(a1&cur&&st+cur<=m) ans+=cur,st+=cur;} //若得到的數(shù)必為0,則原數(shù)默認(rèn)為0 } int main() {scanf("%d%d",&n,&m);a0=0; a1=(1<<30)-1;for(int i=1;i<=n;i++){scanf("%s%d",ch,&t);if(ch[0]=='A') a0&=t,a1&=t;else if(ch[0]=='O') a0|=t,a1|=t;else a0^=t,a1^=t;}get_ans();printf("%d\n",ans);return 0; }

      總結(jié)

      以上是生活随笔為你收集整理的【题解】洛谷P2114 [NOI2014]起床困难综合症的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

      如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。