杭州集訓Day5

下面是Day5的題目!(其實都咕了好幾天了

100+70+40=210.


?

T1 皇后 XY 的疑難?(1s 512MB)

1.1 題目描述
有一個n*n的王國城堡地圖上,皇后XY喜歡看騎士之間的戰斗,于是他準備布置m個騎士,其中
每一個騎士都可以向8個方向,上、下、左、右、左上、左下、右上、右下移動若干距離。且每一個騎士都可以攻擊他八個方向上離它最近的騎士。
皇后XY等不及看騎士之間的對決,但他又擔心騎士的安危,她想提前知道每一個騎士會被從幾個方向攻擊到,設為 s。很顯然 s 屬于[0,8] 。最后要求出來 num[0],num[1] ……num[8] 九個數,表示有多少騎士被攻擊到0次,1次……8次。 數據保證m個騎士中任意兩個不在同一個位置。
1.2 輸入格式
第一行兩個正整數 n,m(n,m≤105),然后接下來m行,每一行x[i],y[i] 分別表示第i個騎士的
橫坐標和縱坐標。1≤x[i],y[i]≤n。
1.3 輸出格式
一行9個整數,分別為 num[0],num[1]……num[8] ,兩個數中間用空格隔開。
1.4 樣例輸入
8 4
4 3
4 8
6 5
1 6
1.5 樣例輸出
0 3 0 1 0 0 0 0 0
1.6 數據約定
對于 30%的數據,n,m≤1000。
對于 60%的數據, n≤100000,m≤1000。
對于 100%的數據, n,m<=100000,1≤x[i],y[i]≤n?。
這不就是皇后的攻擊方式嗎
所以我們很容易想到“八皇后”那題的寫法
就是用四個數組分別存每行,每列,每個左斜線(x-y),每個右斜線(x+y)的騎士個數
但是這題要求每個騎士八個方向上有沒有別的騎士
就不能只用四個數組了
要用八個數組存八個方向的最大值
比如說第i列的最上面的騎士和最下面的騎士的縱坐標
這樣的話在這一列的騎士的縱坐標如果大于最下面的就說明他不是最下面的
說明他下面還有人
如果其縱坐標小于最上面的就說明他不是最上面的
也就說明他上面還有人
然后注意下左斜線的x-y不能為負數,所以統一加個N即可(還要注意下數組大小
很簡單的一題,時間復雜度為O(n)

T2 快來 pick sxk(1s 512MB)

2.1 題目描述
千古神犇邵徐坤 sxk,他現在利用自己猴子的屬相變成了n個會打籃球的分身,每個會打籃球的分身都
有一個雞兒你真美值,這些分身是亂序的。
你需要將其按雞兒你真美值從小到大排序,每次你可以將一個分身揪到任意一個位置(某兩個分身中
間),代價是你要掉該分身的雞兒你真美值的毛。
為了不變成sxk這樣的聰明"絕頂"的大猴子,你要以盡量少的代價完成這個任務,你需要回答每一次
分身后你會掉的最少毛數。
2.2 輸入格式
從文件pick.in中讀入數據。
數據的第1行包含一個非負整數t表示sxk分身的次數。
對于每一組數據
第1行包含一個非負整數n表示分身的個數
第2行包含n個數,ai表示第i個分身的雞兒你真美值
2.3 輸出格式
輸出到文件pick.out中。
對于每一個詢問輸出一個整數,表示你最少會掉的毛數
2.4 樣例輸入
2
5
9?5 7 2 8
5
7?6 5 4 3?
2.5 樣例輸出
11
18
2.6 數據約定
對于30%的數據滿足 Σn≤1000.
對于另外30%的數據滿足 ai>ai+1.
對于100%的數據滿足 Σn≤200000,ai≤107.

很顯然每個數要移的話一次就夠了
這樣的話問題就被轉化成了
“刪除一些數,使得剩下的數剛好成不下降序列,要刪除的數總和盡量小”
即“求最大權值不下降子序列”
前30%的數據O(n2)dp就可以了(f[i]=max{f[j]}+a[i],j<i,a[j]<=a[i])
ai>ai+1的30%數據很顯然答案就是a2+a3+...+an
接下來考慮100分做法
其實也不難,就是把dp優化成O(nlog n)的就行了,
把f[i]用權值線段樹維護一下,
查a[j]<=a[i]中f[j]的最大值還是很好求的
下面是代碼:
#include<bits/stdc++.h>
#define Lowbit(i) (i&(-i))
#define ll long long
using namespace std;
const int N=2e5+1e4;
int n,a[N],b[N],p[N*50]; ll w[N];
ll Max(ll x,ll y){return x>y?x:y;
}
int rd(){int s=0,ff=1;char w=getchar();while(w<'0'||w>'9'){if(w=='-') ff=-1;w=getchar();}while(w>='0'&&w<='9'){s=s*10+(w-'0');w=getchar();}return s*ff;
}
ll Query(int x){ ll maxn=0;for(int i=x;i;i-=Lowbit(i))maxn=Max(maxn,w[i]);return maxn;
}
void Add(int x,ll y){for(int i=x;i<=n;i+=Lowbit(i))w[i]=Max(w[i],y);
}
int main(){
//    freopen("pick.in","r",stdin);
//    freopen("pick.out","w",stdout);int t=rd();while(t--){ n=rd(); int fla=0; ll tot=0;for(int i=1;i<=n;i++)a[i]=rd(),b[i]=a[i],tot+=a[i];sort(b+1,b+1+n); int ct=0;for(int i=1;i<=n;i++){if(i==1||b[i]!=b[i-1]) ct++;p[b[i]]=ct;}ll maxn=-1e17;for(int i=1;i<=n;i++){ll f=Query(p[a[i]]); Add(p[a[i]],f+a[i]);
//            for(int j=1;j<i;j++)
//                if(a[j]<=a[i])
//                    f[i]=Max(f[i],f[j]+a[i]);maxn=Max(maxn,f+a[i]);}for(int i=1;i<=n;i++) p[a[i]]=0,w[i]=0;printf("%lld\n",tot-maxn); continue;}return 0;
}

對了,我訂正的時候用的是樹狀數組,

因為是求前綴的最大值,所以樹狀數組是可以的,

記住區間求最大值千萬不能用樹狀數組。


T3 一道另類的前綴和(1s 512MB)

3.1 題目描述
已知常數 n,k ,p 和函數

?

你需要計算該函數的前綴和S(n)對p取模的結果

?

3.2 輸入格式
從文件prefix.in中讀入數據。
數據的第1行包含三個非負整數 n,k ,意義如題目描述。
3.3 輸出格式
輸出到文件prefix.out中。輸出一行一個正整數,S(n)可能為分數,所以輸出S(n)對p取模的結
果。
即S(n)=a/b輸出a*b-1.
3.4 樣例輸入
5 2 998244353
3.5 樣例輸出
465847367
3.6 數據約定
對于100%的數據n≤107,k≤107,k≤n.

?

一道數論題,先推式子:

?

現在求出即可

?

前20%的n≤2000,預處理下,直接這樣模擬就行了

再來看k=0,由二項式定理得:

S(n)就可以算出來了

到這里你就可以獲得40分的好成績,當然還不夠,

要繼續的話,我得先引出一個推論:

?

證明如下:

k=1就可以了

很簡單對吧,我們繼續

先模擬下k=2的情況

以此類推就可以得出最終答案:

?

就是

發現用到的只有k個,把它和2i滾動地處理出來,但需要求n!

所以時間復雜度為O(n)。

拜拜~

轉載于:https://www.cnblogs.com/manmanjiangQwQ/p/11173847.html

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

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

相關文章

安卓開發面試書籍,每個程序員都必須掌握的8種數據結構!面試必會

前言 本篇文章主要記錄分享我的面試準備過程。 很多朋友問我為什么離職 關于離職原因&#xff0c;馬云有一句經典的話“要么錢沒給到位&#xff0c;要么心委屈了”&#xff0c;想必大家耳熟能詳了&#xff0c;我這里再細說一下我個人離職原因&#xff1a; 工資倒掛&#xf…

使用thinkPHP做注冊程序的實例

登錄界面&#xff1a; 數據庫和數據表的結構 具體的操作步驟如下&#xff1a; 第一步&#xff1a;入口文件index.php內容 (此文件基本是屬于固定的格式&#xff09; <?phpdefine(THINK_PATH,./ThinkPHP/);define(APP_NAME,MyApp);define(APP_PAHT,./MyApp/);require_once T…

安卓開發面試技能介紹,來一份全面的面試寶典練練手,不吃透都對不起自己

前言 網上有很多對程序員簡歷的一些指導&#xff0c;這里就不重述&#xff0c;大家可以搜下網上其他大神的總結&#xff0c;結合自身情況修改下。我有幾點建議&#xff1a; 1.盡量不要花哨&#xff0c;程序員和設計師或者產品運營還不一樣&#xff0c;我們的簡歷成功與否決定…

上交所行情文件導入數據庫

事情的起因很簡單&#xff0c;需要將股票收盤行情導入數據庫&#xff0c;因為科創板交易時間延長&#xff0c;需要將原有的程序進行改造&#xff0c;眾所周知&#xff0c;程序員永遠是不夠用的&#xff0c;只能自己解決這個問題。 方式是用定時器調用shell腳本。 上交所的mktdt…

安卓開發面試題及答案,一次嗶哩嗶哩面試經歷,年薪50W

沒有穩定的工作&#xff0c;只有穩定的能力。 又到了萬物復蘇的季節&#xff0c;在程序猿這個行當里&#xff0c;作為 Android 開發出生的&#xff0c;在經歷了八年的脫發生涯后&#xff0c;有了越來越多的想法和感觸 趨勢 隨著各類移動跨平臺的興起&#xff0c;在 ReactNati…

Intent 簡單用法

1.Intent有什么用&#xff1f; Android設計理念是鼓勵減少組件間的耦合&#xff0c;因此Android提供了Intent (意圖) &#xff0c;Intent是一種消息傳遞機制&#xff0c;可以在程序內使用&#xff0c;也可以在程序間使用&#xff0c;主要用于啟動“Activity”“Service”和“廣…

安卓開發面試題!帶著問題深入學習Handler,進階學習資料!

進大廠本來就很難了&#xff0c;不過做足了準備&#xff0c;你會發現很多問題都迎刃而解了&#xff0c;當然有時候運氣也占了一部分&#xff0c;除了運氣以外&#xff0c;當然與我自身的努力也是分不開的。運氣也是實力的一部分&#xff0c;畢竟天助自助者~ 每次到年底做總結的…

VueJS教程3

目錄 13、Vue實例 13.1 動態組件&#xff08;Tab切換、簡化版留言板&#xff09;13.2 使用Vue開發TodoList14、Vue CLI14.1 使用vue-cli開發TodoList接著VueJS教程2。 13、Vue實例 13.1 動態組件&#xff08;Tab切換、簡化版留言板&#xff09; 參考&#xff1a;https://vuejs.…

春招我借這份PDF的復習思路,論程序員成長的正確姿勢

一. 開發背景 想要成為一名優秀的Android開發&#xff0c;你需要一份完備的知識體系&#xff0c;在這里&#xff0c;讓我們一起成長為自己所想的那樣。 面試總結 面試大廠一定要做好充分的準備&#xff0c;沒有準備就去面試完全是去當炮灰的&#xff0c;更是對自己的不負責。再…

T-SQL語句學習(三)

這部分介紹下視圖、索引技術。 1、視圖&#xff1a;是從一個或幾個基本表&#xff08;或視圖&#xff09;導出表。視圖與基本表不同&#xff0c;是一個虛表。 當基本表中的數據發生變化時&#xff0c;從視圖中查詢出來的數據也會隨之改變。 1.1 定義視圖 a、創建視圖的語法要求…

普通二本的辛酸Android面試之路,滿滿干貨指導

一、自我介紹 應該算是起點比較高吧&#xff01;985大學畢業后面一直在國外讀研。之前準備面試微軟但是可能經驗不夠&#xff0c;沒有通過。經過朋友介紹我準備回國&#xff0c;積累一些開發經驗。于是我面試了國內大廠BATJ&#xff0c;還有一些其他比較知名的公司&#xff0c…

python-3.8.0 新特性之賦值表達式

【python-3.8.0 新特性之賦值表達式】 賦值表達式的語法是這樣的“ name : expression ”&#xff0c;形式上看和賦值語句 “ ” 差不多&#xff0c;就作用上來看也雷同。也就是說 “:” 不是必不可少的&#xff0c;它只是一個錦上添花的新語法。 【1、例子】 假設我們要對列表…

普通二本的辛酸Android面試之路,算法太TM重要了

前言 編程是一個江湖&#xff0c;江湖之大&#xff0c;魚龍混雜&#xff0c;一部分江湖人士乃蝦兵蟹將&#xff0c;一不小心就被一箭射死&#xff0c;我們稱之為“碼農”&#xff0c;這些人事江湖的重要組成部分&#xff0c;他們承擔著堆砌代碼&#xff0c;實現功能設計的使命…

SQL常用日期處理函數(轉)

/**datepart()函數的使用 * datepart()函數可以方便的取到時期中的各個部分*如日期&#xff1a;2006-07--02 18&#xff1a;15&#xff1a;36.513* yy:取年 2006* mm:取月 7* dd:取月中的天 2* dy:取年中的天 183* wk:取…

最全的BAT大廠面試題整理,系列篇

前言 看到一篇文章中提到“最近幾年國內的初級Android程序員已經很多了&#xff0c;但是中高級的Android技術人才仍然稀缺“&#xff0c;這的確不假&#xff0c;從我在百度所進行的一些面試來看&#xff0c;找一個適合的高級Android工程師的確不容易&#xff0c;一般需要進行大…

記錄資料,

C#(1)面向對象的分析與設計(uml 2.0)版(2)C#字符串和正則表達式參考手冊.pdf (3)C#應用程序開發全程演練——從靈感到實現.pdf 中文版外加兩章 英文的,從出版社網站下. (4)C#大學教程 清華大學譯,少好幾章.英文版不錯.我讀的是第一版 .現在有第二版 . (5)C# WINDOWS程序設計 沒…

最全面試考點與面試技巧,大廠面經合集

前言 對于字節跳動的二面三面而言&#xff0c;FrameworkMVP架構HashMap原理性能優化Flutter源碼分析等問題都成高頻問點&#xff01;然而很多的朋友在面試時卻答不上或者答不全&#xff01;今天在這分享下這些問點的視頻解析給大家&#xff0c;希望對有需要的朋友有所幫助&…

阿里云sql監控配置-druid

今天我們說說數據源和數據庫連接池&#xff0c;熟悉java開發的同仁應該都了解C3PO&#xff0c;在這里不做過多的贅述了&#xff0c;今天我們說的是阿里DRUID&#xff0c;druid是后起之秀&#xff0c;因為它的優秀很快占領了使用市場&#xff0c;下邊我們一起來看看druid數據源的…

最全面試考點與面試技巧,真香!

寫在前面 身邊有不少去大廠面試的朋友&#xff0c;其中小金面試字節跳動的經歷很有意義&#xff0c;在這里分享給大家。小金是末流211計算機專業大三本科生&#xff0c;前幾天面試了字節跳動的廣州Android開發實習生。下面是他的面試經歷&#xff0c;還有一些他自己的經驗。 …

最強Android教程!2021年Android面經分享,大廠面經合集

前言 找工作還是需要大家不要緊張&#xff0c;有我們干這一行的接觸人本來就不多 難免看到面試官會緊張&#xff0c;主要是因為怕面試官問的問題到不上來&#xff0c;那時候不要著急 &#xff0c;答不上了的千萬不然胡扯一些&#xff0c;直接就給面試官說這塊我還沒接觸到&…