2019牛客暑期多校訓練營(第一場)A B F J

2021-09-25 09:56:14 字數 2132 閱讀 2884

problem a

題意:詢問1~n最長區間使得1~n任意子區間詢問都有數列的最小值在同一位置。

被隊友教會了。

假設p為所求的答案,檢查當前p是否合法,由於p具有當前不合法,p+1~n都不可能合法的性質,所以可以使用二分,若當前p合法,那麼二分左指標右移,否則右指標左移。

o(n*logn)st表維護兩個陣列各自的區間最小下標,這樣每次都可以做到o(1)查詢

然後判斷當前p是否合法的方法是首先判斷1~p兩個數的最小值下標是否相同。

如果相同,假設這個下標為m,我們可以得知分別處於m兩邊的l,r的最小值下標一定是m,所以我們只需判斷【1,m-1】,【m+1,p】是否合法即可,於是就遞迴著做就可以,一旦出現乙個乙個不合法就返回false,二分找下乙個可行的p

#include#include#includeusing namespace std;

#define ll long long

#define for1(i,a,b) for (int i=a;i<=b;i++)

#define for0(i,a,b) for (int i=a;ir) return true;

else if ( query(l,r) )

return false;

}int main()

printf("%d\n",r);

}return 0;

}

problem b數理完蛋。

從這題得出的結論是:

①積分內的常數可以直接移到外面

②積分n項的積不能先各自積分再求積,累加的話是可以的。

③④累乘變累加:

之後就是求逆元,累加就完事了

#include#include#includeusing namespace std;

#define ll long long

#define for1(i,a,b) for (int i=a;i<=b;i++)

#define for0(i,a,b) for (int i=a;i>= 1;

a = a*a%mod;

}return ans;

}ll geta(int idx)///求得當前下標對應的分母一坨值

sum = sum*a[idx]%mod*2%mod;

return (sum+mod)%mod; ///上面涉及減法,最後記得加個這個

}int main()

return 0;

}

problem f向量叉積求三角形:假設兩條邊的向量為那麼面積 = (順便說一下三維的兩條邊叉乘可以求體積v =

網上盜圖:

然後期望到底是面積的幾分之幾直接爆交猜,emm

等於三角形面積的11/18,就當結論記住吧。

#include#include#includeusing namespace std;

#define ll long long

#define for1(i,a,b) for (int i=a;i<=b;i++)

#define for0(i,a,b) for (int i=a;iproblem j

除法變乘法,涉及到大數的操作

把1e18的拆成1e9的大位,1e9的小位即可。

#include#include#include#includeusing namespace std;

#define ll long long

#define for1(i,a,b) for (int i=a;i<=b;i++)

#define for0(i,a,b) for (int i=a;i");

else printf("%s\n",(x1");

}return 0;

}

之後隨緣補遼,有太多的東西不會了o(╥﹏╥)o

牛客暑期多校訓練營B Boundary

給定n個點,然後確定乙個過原點的圓,要使這n個點盡可能多的存在與圓上,最後輸出最多的存在於圓上的點的個數 三點確定乙個圓,我們已知這個圓必定經過原點,所以再依次利用三點求圓心的公式列舉每兩個點與原點 三點不共線 確定的圓心,最後選擇確定次數最多的圓心構成的圓 include include incl...

2019牛客暑期多校訓練營(第一場)

題意 題解 c 版本一 題意 題解 c 版本一 題意 題解 c 版本一 題意 題解 c 版本一 題意 題解 c 版本一 題意 題解 數學 計算幾何 邏輯推理 c 版本一 題解 特例 正三角形 取重心 中點 頂點,則期望為 公式 author stzg language c include inclu...

2019牛客暑期多校訓練營(第九場)

d knapsack cryptosystem 折半搜尋,晚上又去看了挑戰程式設計,對於時間複雜度高的情況,可以通過犧牲空間來降低時間複雜度。先把前半部分所有可以組合的情況列舉出來,然後對於後半部分依次列舉,那麼複雜度變化為o 2 36 o 2 18 2 18log 18 顯然就可做了,折半的裸題。...