題目描述:
小z有乙個長度為
的數列。他有
次令人窒息的操作,每次操作可以使某個數字
或。他當然是希望這些數字的乘積盡量小了。為了簡化題目,你只需輸出操作完成後的數列即可。
————————————————我是分割線————————————————
這道題目,我們可以先自己手動模擬一遍,就能發現,首先我們需要盡量讓乘積最小,那麼首先我們希望乘積為負數,
所以假設一開始的時候乘積為整數,我們先拿出絕對值最小的那個數,如果是正數就-x,如果是負數就+x直到乘積變為負數。
在乘積變為負數之後,我們來看乙個問題:
3 4 6 3個數中,在任意乙個數上+1,問加在哪個數的時候,使他們的乘積增加最大?顯然是3。所以在乘積為負的時候,我們每次取絕對值最小的數讓他的絕對值變大即可
下面貼**
#include#include#include
using
namespace
std;
long
long aqs(long
long a)
struct
number
}qaq[
200005
];int zheng=1
,n,k,x;
priority_queue
q;bool
cmp(number a,number b)
intmain()
for(int i=1;i<=k;i++)
else
else tmp.num-=x,q.push(tmp);}}
for(int i=1;i<=n;i++)
sort(qaq+1,qaq+n+1
,cmp);
for(int i=1;i"
%lld
",qaq[i].num);
printf(
"%lld\n
",qaq[n].num);
return0;
}
noip模擬賽 水題
題目描述 lyk出了道水題。這個水題是這樣的 有兩副牌,每副牌都有n張。對於第一副牌的每張牌長和寬分別是xi和yi。對於第二副牌的每張牌長和寬分別是aj和bj。第一副牌的第i張牌能覆蓋第二副牌的第j張牌當且僅當xi aj並且yi bj。注意牌不能翻轉 當然一張牌只能去覆蓋最多一張牌,而不能覆蓋好多張...
YYH的王國(NOIP模擬賽Round 6)
yyh擁有乙個有n個城市的國家,編號為1 n。其中城市i到城市j的路徑長度為i和j的最小公倍數。現在yyh想建一些高速公路,使得任意兩座城市都能通過高速公路直接或間接到達。建造一條高速公路的代價為這條高速公路的長度,他想知道最小代價是多少?輸入格式 第一行輸入乙個整數,t,表示有t組資料。接下來t行...
俄羅斯方塊(NOIP模擬賽)(水 模擬)
真是一道神奇的題目233 原題傳送門 迫不得已貼了個題解的鏈結。好吧,這道題就是分情況討論,純模擬,沒有什麼難的。腦洞要大,四面都要考慮,不能漏 include include using namespace std intc,p,ans int l 101 int absq int a,int b...