SDNU 1013 石子合併
用優先佇列
貪心做
#include<bits/stdc++.h>
using namespace std;
int n;
int a[10001];
priority_queue<int>q;
int main(){
cin>>n;
int x;
for(int i=1;i<=n;i++){
cin>>x;
q.push(x);
}
long long cnt=0;
for(int i=1;i<n;i++){
int temp=q.top();
cnt+=q.top();
q.pop() ;
temp+=q.top();
cnt+=q.top();
q.pop();
q.push(temp);
}
long long ans=0;
ans=cnt%1000000007;
cout<<ans<<endl;
return 0;
}
相關推薦
SDNU 1013 石子合併
用優先佇列 貪心做 #include<bits/stdc++.h> using namespace std; int n; int a[10001]; priority_queue<int>q; int main(){ cin>
P1880 [NOI1995]石子合併 區間dp+拆環成鏈
思路 :一道經典的區間dp 唯一不同的時候 終點和起點相連 所以要拆環成鏈 只需要把1-n的陣列在n+1-2*n複製一遍就行了 #include<bits/stdc++.h> using namespace std; const int maxn=100
洛谷 P1880 石子合併 題解
N堆石子擺成一條線。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的代價。計算將N堆石子合併成一堆的最小代價。 例如: 1 2 3 4,有不少合併方法 1 2 3 4 => 3 3 4(3) => 6 4(9) => 10(19)
nyoj737—石子合併(一)(區間DP)
描述 有N堆石子排成一排,每堆石子有一定的數量。現要將N堆石子併成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過N-1次合併後成為一堆。求出總的代價最小值。 輸入 有多組測試資料,輸入到檔案結束
洛谷P1880 石子合併
題目描述 在一個圓形操場的四周擺放N堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。 試設計出1個演算法,計算出將N堆石子合併成1堆的最小得分和最大得分. 輸入輸出格式 輸入格式: 資料的第1行試正整數N,1
NOI1995石子合併&多種石子合併
題目描述 在一個圓形操場的四周擺放N堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。 試設計出1個演算法,計算出將N堆石子合併成1堆的最小得分和最大得分. 輸入輸出格式 輸入格式: 資料的第1行試正整數N,1≤N
51Nod 1021 石子合併 區間dp
N堆石子擺成一條線。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的代價。計算將N堆石子合併成一堆的最小代價。 例如: 1 2 3 4,有不少合併方法 1 2 3 4 => 3 3 4(3) => 6 4
動態規劃-石子合併圓形
#include<cstdio> #include<algorithm> using namespace std; const int INF=1<<30; int maxx[300][300]; int minn[300][300]; int sum[300];
[NOI1995]石子合併(區間DP)
題目連結: [NOI1995]石子合併 思路: 區間DP經典例題,可以把前n-1堆石子一個個移到第n個後面,那樣環就變成了線,即現在有2*n-1堆石子需要合併。 程式碼: #include <iostream> #include
石子合併(NOI1995)題解
題目描述 在一個圓形操場的四周擺放N堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。 試設計出1個演算法,計算出將N堆石子合併成1堆的最小得分和最大得分. 輸入輸出格式 輸入格式: 資料的第1行試正整數N,1≤N≤100,表示有
NUIST OJ 1410 石子合併 [DP]
題目 題目分析 本題的區間DP 整體程式碼與執行結果 另一種寫法 未完待續 題目 題目描述 設有N堆沙子排成一排,其編號為1,2,3,…,N(N<=1
[區間DP]石子合併極其變種問題(環形,40000堆型)P1880 [NOI1995]石子合併+[Sdoi2008]石子合併/poj1738An old Stone Game
有N堆石子,現要將石子有序的合併成一堆,規則如下: (1)每次只能移動任意相鄰的2堆石子合併,合併花費為新合成的一堆石子的數量。求將這N堆石子合併成一堆總花費,要求N<=300。 變形一:(2)每次只能移動相鄰的2堆石子合併,合併花費為新合成的一堆石子的數量。求將
【區間dp*2】洛谷 P1880 [NOI1995]石子合併 (推導過程) +尼克的任務(還沒寫)
emmmmm給自己設定了一個習慣界限。其實每次看到他們在做啥啥啥而我都大三都現在了 就會感覺很內傷-、- 不過演算法還是要寫的吧 別寫太多而已... 為了防止腦袋空空 也為了防止一天不知道幹什麼 ================================== &
P1880 【[NOI1995]石子合併】
又是一道簡單的水題 這道題沒有程式碼構思的難度,就只是一道模版題,只是連線成了一個環而已。 下面獻上本蒟蒻的程式碼。 本蒟蒻用的是遞推式和三重迴圈,時間複雜度為O(n^3) #include <cstdio> #include <iostrea
動態規劃專題之石子合併
動態規劃專題講義 專題九:合併石子問題 /* Name: 動態規劃專題之石子合併 Author: 巧若拙 Description: 在一個操場上擺放著一排N堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。 試設計一個
【動態規劃】石子合併 (ssl 2863)
石 子 合 並
【NOJ1148】【DP_動態規劃】石子合併
1148.石子合併 時限:1000ms 記憶體限制:10000K 總時限:3000ms 描述 在一個圓形(圓形!!!圓形!圓形!)操場的四周擺放著n堆石子(n<= 100),現要將石子有次序地合併成一堆。規定每次只能選取相鄰的兩堆合併成新的一堆,並將新的一堆的石
1148環形石子合併
1148.石子合併 時限:1000ms 記憶體限制:10000K 總時限:3000ms 描述 在一個圓形操場的四周擺放著n堆石子(n<= 100),現要將石子有次序地合併成一堆。規定每次只能選取相鄰的兩堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。
洛谷P1880 [NOI1995]石子合併
設f(i,j)表示第i堆到第j堆合併的總最大得分,f(i,j)=max{f(i,k)+f(k+1,j)+sum[i~j]} 由於是環形的,n的環寫成2*n的鏈,環的最優值等於n條以不同點為起點的鏈的最優值之中最優的那一個。 如123456->123456123456,然後dp就可以輕易
石子合併問題--直線版 HRBUST
一條直線上擺放著一行共n堆的石子。現要將石子有序地合併成一堆。規定每次只能選相鄰的兩堆合併成新的一堆,並將新的一堆石子數記為該次合併的得分。請編輯計算出將n堆石子合併成一堆的最小得分和將n堆石子合併成一堆的最大得分。 Input 輸入有多組測試資料。 每組第一行為n(n