發現,一定有乙個點作為起點,所有的路徑都不經過這個起點。
接著貪心求答案,
如果\(c_i>1\),將其中\(c_i-1\)個錢往後「鋪」。
易證\(x^2+y^2<=(x+y)^2\)
那麼維護乙個佇列,先進先出,就能保證最小。
#include #include #include #include #include #include #include const int maxlongint=2147483647;
const int mo=1000000007;
const int n=150005;
using namespace std;
int d[n],c[n*2],n,m,tot,mak[n];
long long ans;
int main()
for(int i=1;i<=n;i++)
mak[j]++;
ans+=(j-d[head])*(j-d[head]);
head++;
} if(ans>=0) }}
NOIP2016提高A組8 11 錢倉
發現,一定有乙個點作為起點,所有的路徑都不經過這個起點。接著貪心求答案,如果c i 1 將其中ci 1個錢往後 鋪 易證x 2 y2 x y 2 那麼維護乙個佇列,先進先出,就能保證最小。include include include include include include include ...
NOIP2016提高A組8 11 自然數
n 求出mex 1,i 1 i n 雖然0 ai 10 9,但只有n個數,所以mex一定小於等於n for long long j 1 j n j 顯然mex是單調不下降的,接著用線段樹維護mex。如果刪掉a i 從下乙個mex比a i 大的位置到下乙個a i 的位置之前的mex都會改變,都會變成a...
NOIP2016提高A組8 11 自然數
第一行n 第二行n個數 答案3 0 1 3 n 200000 a i 109 50分暴力明顯,用標記陣列隨便yy 但是你可能在想要離散化,其實凡是大於n的都直接等於n就行了,mex最大就是n 想 如果知道 1,n 的mex,能不能求到 2,n 顯然mex 1,i 是單調遞增的,當第乙個數被刪掉時,如...