(seal.pas/c/cpp)
題目描述
輸入格式
第一行乙個整數 n。
接下來 n 行每行兩個整數 ai、bi,第 i+1 行表示第 i 種元素的封印區間。
輸出格式
兩個用空格隔開的整數,第乙個數是能夠獲得最多總能量的封印力度 e,第二個數是獲
得的總能量大小。當存在多個 e 能夠獲得最多總能量時,輸出最小的 e。
樣例輸入
2樣例輸出5 10
20 25
10 30資料範圍與約定
對於 50% 的資料,1<=n<=1000,1<=ai<=bi<=10000。
對於 100% 的資料,1<=n<=10^5,1<=ai<=bi<=10^9。
思路想對了,沒敢寫,暴力50分,果然是做題太少了。
正解思路:
很容易想到,最優解的e肯定是某個區間的端點!
所以我們把所有區間的左右端點取出,從小到大排序,掃瞄一遍。
維護乙個變數sa,表示掃瞄到的值為p時,左端點大於p的所有區間的左端點之和;
維護乙個變數sp,表示掃瞄到的值為p時,p在左右端點之間的區間個數。那麼此時可以封印一擊得到的能量就是sa+sp*p。
#include
#include
#include
#include
using
namespace
std;
struct nodec[200010];
int a[100010],b[100010],n,i,p;
long
long sa,sp,ans;
bool cmp(const node & a,const node & b)
int main()
sort(c+1,c+2*n+1,cmp);
for(i=1;i<=2*n;i++)
if(c[i].y==1)
Jzoj 3426 封印一擊
nes cafe nescafe nescaf e 由 n nn 種元素組成 編號為 1 n 1 n1 n 第 i ii 種元素有乙個封印區 ai bi a i,b i ai b i 當封印力度 e ee 小於 a ia i ai 時,該元素獲得 a ia i ai 的封印能量 當封印力度 e ee...
JZOJ3426 封印一擊
接下來n行每行兩個整數ai bi,第i 1行表示第i種元素的封印區間。output 兩個用空格隔開的證書,第乙個數十能夠獲得最多總能量的封印力度e,第二個數是獲得的總能量大小。當存在多個e能夠獲得最多總能量時,輸出最小的e。sample input 5 10 20 25 sample output ...
1 5 致死一擊
kunkun最近熱愛rpg闖關遊戲,經常帶著他的舍友打各種boss。但是隨著舍友裝備的逐漸公升級,kunkun發現他給予boss最後一擊的機會越來越少 給boss最後一擊的玩家稀有裝備爆率會大幅度提公升 所以kunkun聯絡到了乙個神秘人,他可以利用時停來讓boss躲過舍友的攻擊,每次時停只能躲避一...