【dp-有針對性設計方案】LOJ2538 [PKUWC2018] Slay the Spire
【題目】
原題地址
題目大意見原題
【解題思路】
首先可以發現我們一定是能用加強就先加強。然後加強和攻擊一定是從大到小打的。
我們記
張卡中強化有
張,則當
,打
張強化和
張攻擊,當
,打
張強化和
張攻擊。
我們記
為選
張強化,打出
張,所有方案翻倍的倍率和,
為選
張攻擊,所有方案造成傷害和,那麼上面的兩種情況實際上分別對應
和
(由乘法分配律可知是對的)
我們現在要求的就是這兩個陣列。
設
為用了
張強化,最後一張是第
張所有方案倍率的和,
類似,那麼:
其中
的轉移要乘上組合數是因為它會貢獻個若干個方案,而不是一個,而
的貢獻實際上就是乘上了一個數。
那麼最終我們可以得到
和
特別地,對於
,
【參考程式碼】
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=3005,mod=998244353;
int n,m,K,ans;
int lup[N],atk[N],sum[N];
int f[N][N],g[N][N],c[N][N];
int read()
{
int ret=0;char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) ret=ret*10+(c^48),c=getchar();
return ret;
}
int C(int x,int y){if(y>x)return 0;return c[x][y];}
int mul(int x,int y){return (ll)x*y%mod;}
int upm(int x){return x>=mod?x-mod:x;}
void up(int &x,int y){x+=y;if(x>=mod)x-=mod;}
void init()
{
for(int i=0;i<N;++i)
{
c[i][0]=c[i][i]=1;
for(int j=1;j<i;++j) c[i][j]=upm(c[i-1][j]+c[i-1][j-1]);
}
}
int getf(int x,int y)
{
if(x<y) return 0; if(!y) return c[n][x];
int ret=0;
for(int i=1;i<=n;++i) up(ret,mul(f[y][i],C(n-i,x-y)));
return ret;
}
int getg(int x,int y)
{
if(x<y || !y) return 0;
int ret=0;
for(int i=1;i<=n;++i) up(ret,mul(g[y][i],C(n-i,x-y)));
return ret;
}
bool cmp(int x,int y){return x>y;}
int main()
{
#ifndef ONLINE_JUDGE
freopen("LOJ2538.in","r",stdin);
freopen("LOJ2538.out","w",stdout);
#endif
init();
int T=read();
while(T--)
{
n=read();m=read();K=read();
for(int i=1;i<=n;++i) lup[i]=read();
for(int i=1;i<=n;++i) atk[i]=read();
sort(lup+1,lup+n+1,cmp);sort(atk+1,atk+n+1,cmp);
sum[0]=0;
for(int i=1;i<=n;++i)
{
if(i==1)
{
for(int j=1;j<=n;++j) f[i][j]=lup[j];
for(int j=1;j<=n;++j) sum[j]=upm(sum[j-1]+f[i][j]);
continue;
}
for
相關推薦
【dp-有針對性設計方案】LOJ2538 [PKUWC2018] Slay the Spire
【題目】 原題地址 題目大意見原題
【解題思路】 首先可以發現我們一定是能用加強就先加強。然後加強和攻擊一定是從大到小打的。 我們記
m
m
LOJ2538 PKUWC2018 Slay the Spire DP
tps strong 合數 size ont 傳送門 int 攻擊 前綴 傳送門
不想放題面了,咕咕咕咕咕
這個期望明明是用來嚇人的,其實要算的就是所有方案的最多傷害的和。
首先可以知道的是,能出強化牌就出強化牌(當然最後要留一張攻擊牌出出去),且數字盡量大
所以說在
[LOJ2538][PKUWC2018]Slay the Spire(DP)
https://blog.csdn.net/maxwei_wzj/article/details/80789619
感覺主要難在想到通過f,g來求F,G。
程式碼實現調換了題解中f,g的兩維。
1 #include<cstdio>
2 #include<cstring>
【高並發解決方案】5、如何設計一個秒殺系統
電商 進程 atom 統架構 多用戶 能力 如果能 後臺 寫鎖 https://www.cnblogs.com/wangzhongqiu/p/6557596.html
什麽是秒殺
秒殺場景一般會在電商網站舉行一些活動或者節假日在12306網站上搶票時遇到。對於電商網站中
【小程序碼 - 設計篇】菊花綻放
comm 為我 實際應用 版本 設定 解碼 能力 處理 讓我 作者:lincolnlin,endyxu,changoran
2017 年四月,微信正式推出了小程序碼。小程序碼的使命及誕生的過程, 掃碼背後藏了什麽秘密?小程序碼又為何長得像菊花? | 你問鵝答 一文已經作過
【python可視化方案】pyecharts + Django 框架
iss 處理 解決 char -a 配置 template 使用 ubun 背景:基於對於可視化的巨大需求以及成本因素,利用pyecharts + Django 的可視化方式,顯然是一種比較優的選擇 通過可視化可尋找:模式、關系和異常
環境:強迫癥患者,歷來都是用最新版本
LOJ2538. 「PKUWC2018」Slay the Spire【組合數學】
LINK
思路
首先因為式子後面把方案數乘上了
所以其實只用輸出所有方案的攻擊力總和
然後很顯然可以用強化牌就儘量用
因為每次強化至少把下面的牌翻一倍,肯定是更優的
然後就只有兩種情況
強化牌數量少於k
強化牌數量大於等於k
根據乘法原理,設\(f_{i,j}\)是選i張強化
【DP、線段樹優化】琪露諾
跟去年(2017)PJ第四題幾乎是一樣的?/吐血
DP方程可以很簡單的推出來,f[i]=max{f[k]}+a[i]
然而這樣做是O(n^2)的
看一下資料,200000的話要不nlogn 要不n
由於題解裡面單調佇列和優先佇列都有人用了,那就來一發線段樹吧
(或者實情是:單調佇列不會打?)
只要維護i-r~
【高併發簡單解決方案】redis快取佇列+mysql 批量入庫+php離線整合
需求背景:有個呼叫統計日誌儲存和統計需求,要求儲存到mysql中;儲存資料高峰能達到日均千萬,瓶頸在於直接入庫併發太高,可能會把mysql幹垮。
問題分析
思考:應用網站架構的衍化過程中,應用最新的框架和工具技術固然是最優選擇;但是,如果能在現有的框架的基礎上提
【牛客練習賽13】 A B C D【康拓展開】 E【DP or 記憶化搜尋】 F 【思維】
A 幸運數字Ⅰ
時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld
題目描述
定義一個數字為幸運數字當且僅當它的所有數位都是4或者7。
比如說
【作業系統精髓與設計原理】1. 計算機系統概述
計算的基本構成
處理器
記憶體
輸入輸出模組
系統匯流排
程式的執行
程式執行分為取指令與執行指令兩個過程,指令由操作碼與資料地址兩部分;
取指令即根據PC中的指令地址讀取指令至IR,執行就是將IR中的對應的操作與資料進行載入和執行。
指令格式與整數資料
BZOJ5298 CQOI2018 交錯序列 【DP+矩陣快速冪優化】*
BZOJ5298 CQOI2018 交錯序列 【DP+矩陣快速冪優化】
Description
我們稱一個僅由0、1構成的序列為”交錯序列”,當且僅當序列中沒有相鄰的1(可以有相鄰的0)。例如,000,001,101,都是交錯序列,而110則不是。對
【DP演算法篇之初學】LIS\LCS\二維DP\帶條件DP
最近參加2016華為軟體精英挑戰賽,題目也比較直接,就是求過定點的最短路。這題和以前練得不一樣,感覺是不是要用DP(動態規劃)。可是對於DP演算法,我還是啥都不懂,於是好好補補。
看完入門,有點
【Material Design視覺設計語言】UI元件設計(五):提示框
【Material Design視覺設計語言】章節列表
提示框(Dialog)用於提示使用者作一些決定,或者是完成某個任務時需要的一些其它額外的資訊。
一 提示框的功能
Dialog可以是用一種取消/確定的簡單應答模式,它常見的應用場景
【git 埠拒絕解決方案】ssh: connect to host github.com port 22: Connection refused
前言
前一陣兒,在公司同步github程式碼到本地的時候,爆出了這樣的一個錯誤ssh: connect to host github.com port 22: Connection refused。根據英文可以看出,ssh埠號被拒絕了,應該是被公司的網給禁掉了
【Material Design視覺設計語言】UI元件設計(四):表格
【Material Design視覺設計語言】章節列表
表格是一個用來展示原始資料集,使用者可操作的視覺化的網格結構,並且通常出現於桌面企業產品中。
一 表格的佈局
1.1 表格型別
1.1.1 基本表格
基本的表格佈局如下
【DP-最大子串和】PAT1007. Maximum Subsequence Sum
Given a sequence of K integers { N1, N2, ..., NK }. A continuous
subsequence is defined to be { Ni, Ni+1, ..., Nj } where 1 <= i <= j <= K. The
ssl2290-潛水員【dp之二維費用】
其實這是一道例題,但確實是我做過最難(其他的水到炸)的一道二維費用
Description潛水員為了潛水要使用特殊的裝備。他有一個帶2種氣體的氣缸:一個為氧氣,一個為氮氣。讓潛水員下潛的深度需要各種
51nod 1020 逆序排列【Dp+思維遞推優化】好題!好題!好題!
基準時間限制:2 秒 空間限制:131072 KB 分值: 80 難度:5級演算法題
在一個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為一個逆序。一個排列中逆序的總數就稱為這個排列的逆序數。
如2 4 3 1中,2
【flex】——application監聽Keyboard事件 【仍有疑問,待續】
程式碼:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init()"
xmlns:mx="http://www.adobe.com/2006/mx