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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【bzoj 2460 [BeiJing2011]元素】

發布時間:2025/4/16 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【bzoj 2460 [BeiJing2011]元素】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:
?相傳,在遠古時期,位于西方大陸的 Magic Land 上,人們已經掌握了用魔
法礦石煉制法杖的技術。那時人們就認識到,一個法杖的法力取決于使用的礦石。
一般地,礦石越多則法力越強,但物極必反:有時,人們為了獲取更強的法力而
使用了很多礦石,卻在煉制過程中發現魔法礦石全部消失了,從而無法煉制
出法杖,這個現象被稱為“魔法抵消” 。特別地,如果在煉制過程中使用超過
一塊同一種礦石,那么一定會發生“魔法抵消”。
后來,隨著人們認知水平的提高,這個現象得到了很好的解釋。經過了大量
的實驗后,著名法師 Dmitri 發現:如果給現在發現的每一種礦石進行合理的編
號(編號為正整數,稱為該礦石的元素序號),那么,一個礦石組合會產生“魔
法抵消”當且僅當存在一個非空子集,那些礦石的元素序號按位異或起來
為零。 (如果你不清楚什么是異或,請參見下一頁的名詞解釋。 )例如,使用兩
個同樣的礦石必將發生“魔法抵消”,因為這兩種礦石的元素序號相同,異或起
來為零。
并且人們有了測定魔力的有效途徑,已經知道了:合成出來的法杖的魔力
等于每一種礦石的法力之和。人們已經測定了現今發現的所有礦石的法力值,
并且通過實驗推算出每一種礦石的元素序號。
現在,給定你以上的礦石信息,請你來計算一下當時可以煉制出的法杖最多
有多大的魔力。

3
1 10
2 20
3 30
輸出

50

題意懂了就好了,用到了線性基的一個性質,線性基中的每兩個數xor都不會等于0,
然后在貪心的對獲取的能量進行求和,最終就是可以得到的最大值。
?

#include<bits/stdc++.h> #include <iostream> #include <cmath> #include <cstdio> #include <stdlib.h> #include <ctime> using namespace std; typedef long long ll; typedef pair<int,int> PII; const int inf = 0x3f3f3f3f; const int mod = 1e9 + 7; const int maxn = 1e6 + 5; ll a[maxn]; struct Point{ll num,val;}point[maxn]; bool operator <(Point a,Point b){return a.val>b.val;} int Build(ll p) {for(int x=63;x>=0;--x){if(p&(ll(1ll<<x))){if(!a[x]){a[x]=p;break;}p^=a[x];}}if(p) return 1;return 0; }int main() {int n;cin>>n;memset(a,0,sizeof(a));for(int i=0;i<n;++i) cin>>point[i].num>>point[i].val;sort(point,point+n);ll ans=0;for(int i=0;i<n;++i)if(Build(point[i].num))ans+=point[i].val;cout<<ans<<endl;return 0; }

?

總結

以上是生活随笔為你收集整理的【bzoj 2460 [BeiJing2011]元素】的全部內容,希望文章能夠幫你解決所遇到的問題。

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