bzoj1150: [CTSC2007]資料備份Backup(堆+貪心)
題目傳送門
。
解法:
跟上一題差不多一個思想。
bzoj2151
只不過這題多了一個比較噁心的邊界而已。
那麼相對於邊界值。就拿他前面沒有點來舉例。
假設現在前面沒有點了。那麼肯定選他之後不用反悔啊。
因為你後面那個肯定比你小啊要不然幹嘛選你呢。
所以說選完之後把自己和後面的點刪除就行了。
維護一下即可。
跟2151唯一的不同也就這個點了。
如果後面沒有點也是一樣的道理。。
程式碼實現:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<iostream>
using namespace std;
struct node {
int w,c;node() {w=c=0;}
friend bool operator <(node n1,node n2){return n1.c>n2.c;}
};priority_queue<node> a;
int q[110000],h[110000],n,m,s[110000];bool v[110000];
int main() {
scanf("%d%d",&n,&m);
scanf("%d",&s[1]);
for(int i=2;i<=n;i++) {
scanf("%d",&s[i]);q[i]=i-1;h[i]=i+1;
node ss;ss.c=s[i]-s[i-1];ss.w=i;a.push(ss);
}h[n]=-1;q[2]=-1;
for(int i=n;i>=2;i--)s[i]-=s[i-1];s[1]=0;
memset(v,false,sizeof(v));int ans=0;
for(int i=1;i<=m;i++) {
while(v[a.top().w]==true)a.pop();
node t=a.top();a.pop();ans+=t.c;int l=q[t.w],r=h[t.w];
node p;p.w=t.w;
if(l!=-1&&r!=-1) {
v[l]=true;p.c+=s[l];v[r]=true;p.c+=s[r];p.c-=t.c;
s[t.w]=p.c;q[t.w]=q[l],h[q[l]]=t.w;h[t.w]=h[r],q[h[r]]=t.w;a.push(p);
}
else if(l==-1) {v[t.w]=true;v[h[t.w]]=true;q[h[h[t.w]]]=-1;}
else {v[t.w]=true;v[q[t.w]]=true;h[q[q[t.w]]]=-1;}
}printf("%d\n",ans);
return 0;
}
相關文章
- 如何恢復Hyper Backup備份的資料
- 資料備份軟體:EaseUS Todo Backup for MacMac
- 使用Handy Backup 6.2進行資料備份方法
- 如何使用Hyper Backup備份資料至異地
- bzoj2151: 種樹(貪心+堆)
- Tri-BACKUP Pro 9 for Mac(磁碟資料備份軟體)Mac
- Mac Backup Guru for Mac(備份工具)Mac
- 【ybtoj】【貪心】【堆】【例題1】奶牛曬衣服
- 部落格備份工具:Blog_Backup
- MySQL Backup--Xtrabackup備份限速問題MySql
- Easeus todo backup home 2022,系統備份
- Ashampoo Backup Pro 16,檔案備份工具
- db2備份恢復(backup restore)DB2REST
- SqlServer 備份集和備份片以及mirror的backup_set_idSQLServer
- Laravel 資料庫及專案檔案自動備份指北 (spatie/Laravel-backup)Laravel資料庫
- Mac備份軟體——Get Backup Pro 3 for MacMac
- 貪心
- EaseUS Todo Backup for Mac(資料備份軟體) v3.6.0 (1525)註冊啟用版Mac
- 雲伺服器備份(Cloud Server Backup Service,CSBS)伺服器CloudServer
- 初探MySQL資料備份及備份原理MySql
- MySQL資料備份MySql
- 資料庫備份資料庫
- Rsync 資料備份
- 備份onetab資料
- mongo資料備份Go
- 如何從Active Backup for Business備份中恢復檔案
- 反悔貪心
- Supermarket(貪心)
- oracle資料庫備份之exp增量備份Oracle資料庫
- 磁碟資料備份軟體:Tri-BACKUP Pro 9 for Mac v9.1.8註冊啟用版Mac
- 資料同步和資料備份
- 8.13(優先佇列貪心維護+打表找規律+對頂堆優先佇列+DFS減枝+貪心dp)佇列
- win10 windows server backup備份方法_windows10怎麼備份作業系統Win10WindowsServer作業系統
- 寫了一個七牛備份下載工具: Qiniu Backup
- mysql 資料庫 備份MySql資料庫
- Mysql資料安全備份MySql
- 資料庫備份策略資料庫
- MongoDB資料庫備份MongoDB資料庫