CSAcademy Or Problem

傳送門

一口大鍋(

斜率的確是有單調性 并且可以進行凸優化的 明明是證出來的 為什么自己就不相信呢(


我們發現對于當前點作為擴展的右端點 那么他前面至多有20個點會影響到這一段區間的或值 我們可以預處理記錄出來這些節點的位置 很明顯 答案隨著右端點越向右是非嚴格遞增的 所以直接取最右端的節點即可

我們列出方程?f[i][k]= max(f[j][k-1]+ x ,f[i][k])狀態是nk轉移log 顯然可以進行凸優化

因為答案隨著段數增加非嚴格遞增 分析一波段數少的可以記錄答案就結束啦

?

有關于單調性的證明如下。

我們可以將原始的問題轉化成 我們每次選擇兩個位置進行合并 代價為這兩段的&

我們需要進行n-k次合并 并且要最小化&

這個顯然是有單調性的 因為 我們少合并一次就可以減少代價 并且這個代價必定是單調的 因為 最開始的&只是小段的& 隨著合并的段數長度增加 這一段的或值顯然是非嚴格遞增的 那么&的值顯然也是非嚴格遞增的

這樣的話就證完了。

?

一個小問題 : log運算非常慢( 會因為這玩意T掉 所以那nlg個區間或值預處理出來比較好

附代碼。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define inf 2002122500
#define ll long long
using namespace std;int a[100010],p[100010][21],fr[21],l[21],lg[100010];
ll f[100010],tot;int qaq[100010][21];int g[100010];
int n,k;
struct ST
{int f[100010][18];void build(){for(int i=1;i<=n;i++)	f[i][0]=a[i];for(int i=1;i<18;i++)for(int j=1;j+(1<<i-1)<=n;j++)f[j][i]=f[j][i-1]|f[j+(1<<i-1)][i-1];}int query(int l,int r){int k=lg[r-l+1];return f[l][k]|f[r-(1<<k)+1][k];}
}st;void find(int x)
{p[x][0]=x;qaq[x][0]=a[x];int cnt=0;for(int i=0;i<=20;i++)if((!(a[x]&(1<<i)))&&fr[i])	p[x][++cnt]=fr[i],qaq[x][cnt]=st.query(fr[i],x);p[x][++cnt]=1;qaq[x][cnt]=st.query(1,x);
}
bool check(int mid)
{for(int i=1;i<=n;i++)	f[i]=-inf,g[i]=inf;for(int i=1;i<=n;i++){for(int j=0;j<=20&&p[i][j];j++){//printf("%d %d %d\n",i,j,p[i][j]);ll tmp=qaq[i][j]+mid+f[p[i][j]-1];if(tmp>f[i]||(tmp==f[i] && g[p[i][j]-1] +1 <g[i]))g[i]=g[p[i][j]-1]+1,f[i]=tmp;}}//printf("%d %d %d\n",f[n],g[n],mid);return g[n]<=k;
}
int main()
{//freopen("orSimple.in","r",stdin);scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)	scanf("%d",&a[i]),tot+=a[i];st.build();l[0]=1;int i;for(i=1;i<18;i++){l[i]=(1<<i);//printf("%d %d\n",i,l[i]);if(l[i]>=n)	break;for(int j=l[i-1];j<l[i];j++)	lg[j]=i-1;}for(int j=l[i-1];j<=n;j++)	lg[j]=i-1;int l,r;for(int i=1;i<=n;i++){find(i);for(int j=0;j<=20;j++)if(a[i]&(1<<j))	fr[j]=i;}l=-inf;r=0;ll ans;while(l<=r){int mid=(l+r)>>1;if(check(mid))	l=mid+1,ans=f[n]-(ll)mid*k;else	r=mid-1;}printf("%lld\n",ans);return 0;
}
/**
21 9
3 4 1 4 8 10 9 38 83 3 28 4 2 1 14 41 31 41 39 5 2
*/

?

轉載于:https://www.cnblogs.com/hanyuweining/p/10321914.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276624.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276624.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276624.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

apache的rewrite模塊實例操作

原文鏈接&#xff1a;http://blog.5ilinux.com/archives/2006/01/apacherewrite.html 我們的目標是把http://www.bulknews.cn/show.php?id1014700通過rewrite的url重寫&#xff0c;使可以直接http://www.bulknews.cn/1014700.html訪問 1.首先配置apache的httpd.conf&#xf…

哈佛圖書館的二十條訓言

1.此刻打盹&#xff0c;你將做夢;而此刻學習&#xff0c;你將圓夢。 2.我荒廢的今日&#xff0c;正是昨日殞身之人祈求的明日。 3.覺得為時已晚的時候&#xff0c;恰恰是最早的時候。 4.勿將今日之事拖到明日。 5.學習時的苦痛是暫時的&#xff0c;未學到的痛苦是終生的。 6.學…

python截取關鍵字后的字符串_使用正則表達式獲取python中特定字符串之后的所有內容...

如果要使用正則表達式&#xff0c;請使用re.findall&#xff1a;re.findall((?<com/).*$, "www.example.com/thedubaimall") # [thedubaimall] 一些速度測試有DeepSpace的建議&#xff1a;%timeit re.findall((?<com/).*$, "www.example.com/thedubaima…

vue起手式

許久未曾更新文章&#xff0c;雖然不是程序員但還是忘懷不了擼碼的覺悟.1.VUE環境搭建安裝node.js (項目開發前準備) Node.js官網&#xff1a;https://nodejs.org/en/ 進入Node.js官網&#xff0c;選擇下載并安裝Node.js。安裝過程只需要點擊“下一步”即可&#xff0c;非常簡單…

C#編程盡量使用接口(轉)

.NET框架包括類和接口&#xff0c;在編寫程序的時候&#xff0c;你可能知道正在用.NET的哪個類。然而&#xff0c;在這種情況下如果你用.NET支持的接口而不是它的類來編程時&#xff0c;代碼會變得更加穩定、可用性會更高。請分析下面的代碼&#xff1a; private void LoadLi…

Apache 重寫規則的常見應用 (rewrite)

本文出自:http://www.linuxforum.net 作者:吳阿亭 Jephe wu (2001-09-05 08:00:00) 一:目的 本文旨在提供如何用Apache重寫規則來解決一些常見的URL重寫方法的問題&#xff0c;通過常見的 實例給用戶一些使用重寫規則的基本方法和線索。 二:為什么需要用重寫規則&#xff1…

python怎么模擬瀏覽器交互_干貨分享:python爬蟲模擬瀏覽器的兩種方法實例分析(趕緊收藏)...

今天為大家帶來的內容是&#xff1a;干貨分享&#xff1a;python爬蟲模擬瀏覽器的兩種方法實例分析&#xff08;趕緊收藏&#xff09; 文章主要介紹了python爬蟲模擬瀏覽器的兩種方法,結合實例形式分析了Python爬蟲模擬瀏覽器的兩種常見操作技巧與使用注意事項,需要的朋友可以參…

vue-cli3

github&#xff1a;https://github.com/vuejs/vue-cli org&#xff1a;https://cli.vuejs.org/ guide&#xff1a;https://cli.vuejs.org/guide/ config&#xff1a;https://cli.vuejs.org/config/ 轉載于:https://www.cnblogs.com/veritas-sj/p/10147789.html

Indy中判斷郵件來源

首先從TidMessage中獲得郵件的頭信息&#xff1a; strHeader:aIdMessage.Headers.text; 然后&#xff0c;用正則表達式取出Received: vReceiveIP:GetNeedStrByPerlReg(strHeader,(Received:)(.)(])); 再取出X-Originating-IP&#xff1a; vOriIP:GetNeedStrByPerlReg(strHea…

用jQuery實現彈出窗口/彈出div層

原文鏈接&#xff1a;http://hi.baidu.com/awz_tiger/item/863cfc10c4bb0f6171d5e8d9 http://blog.163.com/qiuxinke2006126/blog/static/24885580201131763139536/ http://hi.baidu.com/kilwin/blog/item/f4cfaf2695375920c9955947.html 用div層代替傳統的彈出窗口已經變得很…

模塊定義文件導出類_濃縮的就是精華——ES6模塊精煉講解

概述在 ES6 前&#xff0c; 實現模塊化使用的是 RequireJS 或者 seaJS(分別是基于 AMD 規范的模塊化庫&#xff0c; 和基于 CMD 規范的模塊化庫)。ES6 引入了模塊化&#xff0c;其設計思想是在編譯時就能確定模塊的依賴關系&#xff0c;以及輸入和輸出的變量。ES6 的模塊化分為…

關于快速開發和設計應用系統的一些個人的意見

作為程序員&#xff0c;經常會為我們的客戶去開發和設計各種應用系統&#xff0c;比如OA /CRM/物流調度/客戶服務/電子政務。。。及各種管理信息系統&#xff0c;我們經常會去開發和實現這樣的一些系統&#xff0c;每周、每月、每年經常都要去做這樣的一些開發工作&#xff0c;…

Jquery1.6版本后attr的變化

原文鏈接&#xff1a;http://www.cnblogs.com/-run/archive/2011/11/16/2251569.html Jquery1.6版本后attr的變化 Jquery1.6版本后 attr 改動后的效果&#xff1a; jquery1.6版本&#xff1a; 下文來自www.jquery.com The difference betweenattributes and properties can b…

idea main scanner 輸入_哇曬,你竟然不知道idea的 Live Templates

最近公司新近來一名程序猿&#xff0c;在寫代碼時&#xff0c;美美寫到System.out.println的時候&#xff0c;都要一母不差的用鍵盤敲上去&#xff0c;我問他你之前有用過eclipse中的快捷方法syso嗎&#xff1f;于是&#xff0c;我給他介紹了一下&#xff0c;在idea中如何自定義…

Android開發需要了解的 IM 知識

引言即便在通訊如此發達的今天&#xff0c;IM 也依然是諸多場景下非常重要的基礎能力。因此做為 一名 Android 開發&#xff0c;不可避免的會遇到一些IM 相關的需求或問題。本文以一個Android開發的角度來講述IM 開發相關的基礎知識。想要閱讀更多技術干貨、行業洞察&#xff0…

偷梁換柱做自己的封裝系統

偷梁換柱做自己的封裝系統&#xff01;菜鳥一開始都想把自己的信息加到系統里&#xff0c;但封裝系統只會一點&#xff01;但我們可“拿來”&#xff0c;我們可以用偷梁換柱的方法來修改別人的系統&#xff0c;本文以雨林的GHOST5.0系統為例。一、準備工作1、當然是下載一個自己…

JQuery 1.6+ checkbox 狀態選擇

示例&#xff1a; HTML: <form><table><tr><td><input type"checkbox" id"select_all"/></td></tr><tr><td><input type"checkbox" name"select[]"/></td></…

臺電u盤量產工具_簡單幾步,讓U盤起死回生

如今&#xff0c;雖說云存儲風靡&#xff0c;但U盤仍存在價值&#xff0c;畢竟在很多場合并不方便上網&#xff0c;即便如此網上存儲有時也并不方便&#xff0c;也不安全。與此同時&#xff0c;如果是大文件存儲&#xff0c;云盤上傳和下載速度非常慢&#xff0c;并不適合海量數…

PXC集群常見錯誤(一)

歡迎關注MySQL 8.0必知必會系列課程。MySQL8.0必知必會-自動化部署 https://edu.51cto.com/course/16368.htmlMySQL8.0必知必會之參數標準化配置 https://edu.51cto.com/course/16358.html1.Cant start server: Bind on TCP/IP port: Address already in use…

獲取GridView中RowCommand的當前選中行的索引或主鍵Id

獲取GridView中RowCommand的當前索引行 前臺添加一模版列,里面添加一個LinkButton前臺 (如果在后臺代碼中用e.CommandArgument取值的話前臺代碼就必須在按鈕中設置CommandArgument的值&#xff0c;值為綁定的數據庫字段<asp:TemplateField HeaderText"操作"> …