bzoj 5369: [Pkusc2018]最大前綴和

Description

小C是一個算法競賽愛好者,有一天小C遇到了一個非常難的問題:求一個序列的最大子段和。
但是小C并不會做這個題,于是小C決定把序列隨機打亂,然后取序列的最大前綴和作為答案。
小C是一個非常有自知之明的人,他知道自己的算法完全不對,所以并不關心正確率,他只關心求出的解的期望值,
現在請你幫他解決這個問題,由于答案可能非常復雜,所以你只需要輸出答案乘上n!后對998244353取模的值,顯然這是個整數。
注:最大前綴和的定義:i∈[1,n],Sigma(aj)的最大值,其中1<=j<=i

Solution

注意到前綴和的取值只有 \(2^n\) 種.
然后可以枚舉每一個集合的元素當最大前綴和 , 那么這個集合的元素排列之后每一個后綴都必須大于 \(0\) , 且這個集合的補集排列之后必須保證每一個前綴和都小于 \(0\).
那么狀壓 \(DP\) 就行了 , 設 \(f[i]\) 表示集合 \(i\) 作為最大前綴和且排列之后每個后綴都大于 \(0\) 的方案數 , \(g[i]\) 表示集合 \(i\) 中元素排列之后每個前綴都小于 \(0\) 的方案數.
強制 \(f,g\) 必須在合法的時候才能轉移就行了.

#include<bits/stdc++.h>
using namespace std;
const int N=25,mod=998244353;
int f[1<<20],n,a[N],m,g[1<<20],sum[1<<20];
int main(){freopen("pp.in","r",stdin);freopen("pp.out","w",stdout);cin>>n,m=(1<<n)-1;for(int i=0;i<n;i++)cin>>a[i];for(int i=0;i<n;i++)for(int j=0;j<=m;j++)if(j>>i&1)sum[j]+=a[i];for(int i=0;i<n;i++)f[1<<i]=1,g[1<<i]=1;for(int i=0;i<=m;i++){if(sum[i]>0){for(int j=0;j<n;j++)if(~i>>j&1)f[i^(1<<j)]=(f[i^(1<<j)]+f[i])%mod;}else{for(int j=0;j<n;j++)if(~i>>j&1)g[i^(1<<j)]=(g[i^(1<<j)]+g[i])%mod;}}g[0]=1;int ans=0;for(int i=0;i<=m;i++)if(sum[m^i]<=0)ans=(ans+1ll*f[i]*sum[i]%mod*g[m^i])%mod;cout<<(ans+mod)%mod;return 0;
}

轉載于:https://www.cnblogs.com/Yuzao/p/9304011.html

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

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

相關文章

微軟:軟件帝王的復興之路

可以說在過去的兩個月IT界所發生的一切都非同尋常&#xff0c;喬布斯辭職了&#xff0c;Google把Motorola并購了&#xff0c;微軟炫了一下Windows 8&#xff0c;還宣布開始用ARM了&#xff0c;Google開始和英特爾合作了&#xff0c;AT&T與T-Mobile的并購也在緊密鑼鼓進行中…

jdbc和odbc區別

ODBC(Open Database Connectivity&#xff0c;開放數據庫互連)是微軟公司開放服務結構(WOSA&#xff0c;Windows Open Services Architecture)中有關數據庫的一個組成部分&#xff0c;它建立了一組規范&#xff0c;并提供了一組對數據庫訪問的標準API&#xff08;應用程序編程接…

事務相關、不可重復讀與幻讀的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 事務內嵌套事務&#xff1a; 1) 都用spring事務時&#xff0c;取決spring采用的事務的隔離級別。 這個默認隔離級別是與具體的數據…

onload事件

onload事件它只支持少量標簽<body>, <frame>, <iframe>, <img>, <input type"image">, <link>, <script>, <style> 不支持<div>,<p>標簽等 所以&#xff0c;在div使用onload事件時該怎么辦呢。。。轉載…

Eclipse GBK批量轉UTF-8插件(轉)

最近需要把Android項目轉Android Studio&#xff0c;由于之前是eclipse開發&#xff0c;而且坑爹的是編碼還是GBK的&#xff0c;轉到Android Studio中文都是亂碼&#xff0c;如果一個文件一個文件ctrlc的話&#xff0c;想想就累&#xff0c;幾經Google&#xff0c;發現一個很好…

網絡爬蟲--15.【糗事百科實戰】多線程實現

文章目錄一. Queue&#xff08;隊列對象&#xff09;二. 多線程示意圖三. 代碼示例一. Queue&#xff08;隊列對象&#xff09; Queue是python中的標準庫&#xff0c;可以直接import Queue引用;隊列是線程間最常用的交換數據的形式 python下多線程的思考 對于資源&#xff0…

淺談:國內軟件公司為何無法做大做強?

縱覽,國內比較大的軟件公司(以下統一簡稱"國軟"),清一色都是做政府項目的(他們能做大的原因我就不用說了吧),真正能做大的國軟又有幾家呢?這是為什么呢? 今天風吹就給大家簡單分析下: 1."作坊"式管理 "作坊"往往是效率最高的,國軟幾乎都是從作…

Java SE、Java EE、Java ME三者的區別

說得簡單點 Java SE 是做電腦上運行的軟件。 Java EE 是用來做網站的-&#xff08;我們常見的JSP技術&#xff09; Java ME 是做手機軟件的。 1. Java SE&#xff08;Java Platform&#xff0c;Standard Edition&#xff09;。Java SE 以前稱為 J2SE。它允許開發和部署在桌面、…

FileBeats安裝

FileBeats安裝 FileBeats官方下載鏈接&#xff1a; https://www.elastic.co/downloads/beats/filebeat 也可以直接使用以下命令下載&#xff08;文章下載目錄一概為/home/tools, 解壓后文件夾放到 /home/apps下&#xff09; wget https://artifacts.elastic.co/downloads/beats…

《程序員代碼面試指南》第三章 二叉樹問題 二叉樹節點間的最大距離問題

題目 二叉樹節點間的最大距離問題 java代碼 package com.lizhouwei.chapter3;/*** Description:二叉樹節點間的最大距離問題* Author: lizhouwei* CreateDate: 2018/4/16 19:33* Modify by:* ModifyDate:*/ public class Chapter3_20 {public int maxDistance(Node head) {int[…

MySQL中函數CONCAT及GROUP_CONCAT 對應oracle中的wm_concat

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、CONCAT&#xff08;&#xff09;函數 CONCAT&#xff08;&#xff09;函數用于將多個字符串連接成一個字符串。 使用數據表Info作為…

網絡爬蟲--16.BeautifulSoup4

文章目錄一. BeautifulSoup4二. 解析實例三. 四大對象種類1. Tag2. NavigableString3. BeautifulSoup4. Comment四. 遍歷文檔樹1.直接子節點 &#xff1a;.contents .children 屬性1). .contents2). .children2. 所有子孫節點: .descendants 屬性3. 節點內容: .string 屬性五. …

Intel MKL 多線程設置

對于多核程序&#xff0c;多線程對于程序的性能至關重要。 下面&#xff0c;我們將對Intel MKL 有關多線程方面的設置做一些介紹&#xff1a; 我們提到MKL 支持多線程&#xff0c;它包括的兩個概念&#xff1a; 1>MKL 是線程安全的&#xff1a; MKL在設計時&#xff0c;就保…

【LA3415 訓練指南】保守的老師 【二分圖最大獨立集,最小割】

題意 Frank是一個思想有些保守的高中老師。有一次&#xff0c;他需要帶一些學生出去旅行&#xff0c;但又怕其中一些學生在旅行中萌生愛意。為了降低這種事情發生的概率&#xff0c;他決定確保帶出去的任意兩個學生至少要滿足下面四條中的一條。 1.身高相差大于40厘米 2.性別相…

行車記錄儀穩定方案:TC358778XBG:RGB轉MIPI DSI芯片,M-Star標配IC

原廠&#xff1a;Toshiba型號&#xff1a;TC358778XBG功能&#xff1a;TC358778XBG是一顆將RGB信號轉換成MIPI DSI的芯片&#xff0c;最高分辨率支持到1920x1200&#xff0c;其應用圖如下&#xff1a;產品特征&#xff1a;MIPI接口&#xff1a;&#xff08;1&#xff09;、支持…

java.sql.SQLException: 無法轉換為內部表示之解決

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 這個錯是因為 數據庫中字段類型和程序中該字段類型不一致。 比如程序將某字段當做Integer類型&#xff0c; 而數據庫存儲又使用另外一…

網絡爬蟲--17.【BeautifuSoup4實戰】爬取騰訊社招

文章目錄一.要求二.代碼示例一.要求 以騰訊社招頁面來做演示&#xff1a;http://hr.tencent.com/position.php?&start10#a 使用BeautifuSoup4解析器&#xff0c;將招聘網頁上的職位名稱、職位類別、招聘人數、工作地點、發布時間&#xff0c;以及每個職位詳情的點擊鏈接…

public static void main(String[] args)的理解

public:權限修飾符&#xff0c;權限最大。static:隨著MianDemo類的加載而加載&#xff0c;消失而消失。void: 沒有返回值main: 函數名&#xff0c;jvm識別的特殊函數名(String[] args):定義了一個字符串數組參數。這個字符串數組是保存運行main函數時輸入的參數的

Miller-Rabin素數測試

Miller-Rabin素數測試 給出一個小于1e18的數&#xff0c;問它是否為質數&#xff1f;不超過50組詢問。hihocoder 我是真的菜&#xff0c;為了不誤導他人&#xff0c;本篇僅供個人使用。 首先&#xff0c;一個1e18的數&#xff0c;樸素\(O(\sqrt{n})\)素數判定肯定爆炸。怎么辦呢…

throws Exception的意思

在方法聲明部分使用&#xff0c;表示該方法可能產生此異常&#xff0c;如果在方法聲明處使用了throws聲明異常&#xff0c;則該方法產生異常也不必捕獲&#xff0c;會直接把異常拋出到調用該方法的地方。