2017紀中10 31 Calculate 數論

2021-08-10 02:29:04 字數 891 閱讀 2082

題面

考慮二分答案t。問題轉化成如何高效計算s(t)。

化式子:

分開來除,加上他們的餘數和的貢獻。

發現ai最大1000,考慮把(ai,bi)按照ai分類,每一類維護cnt,sum,rst[0~ai-1],分別表示數對的個數,(-bi)/ai的和,(-bi)%ai取值的字首和,那麼對於每乙個ai都可以o(1)計算,對於每個查詢o(1000*log10^12)。

修改直接暴力修改即可,對於每個修改o(1000)。

**:

#include

#include

#include

#define ll long long

using namespace std;

const int maxn=100010;

int n,m,a[maxn],b[maxn];

ll sum[1010],cnt[1010],rst[1010][1010];

int read()

while(ch>='0'&&ch<='9')

return x*f;

}inline ll div(ll a,int b)

inline ll mod(ll a,int b)

ll cal(ll x)

return re;

}int main()

for(int i=1;i<=1000;i++)

for(int j=1;j1];

while(m--)

printf("%lld\n",l);}}

}return

0;}

2017紀中10 31 Tree 構造

加入x的子樹都已變白,x為黑的畫,把x和x的所有兒子反色一下就好了。dfs一遍即可。include include using namespace std const int maxn 500010 int n bool c maxn f maxn struct edge con maxn intr...

2017紀中11 8 購物 貪心 優先佇列

題面 這題有點像samjia2000出的三元組。考慮把物品按qi從小到大排序,那麼一定有乙個分界點,使得在這個點之前的物品要麼買pi要麼買qi,這個點之後的物品要麼買pi,要麼不買 可以想象一下如果之前有乙個x不買,之後有乙個買qy,買qx不買y一定更優 於是設s i 為使用至多k張優惠券買下1 i...

2017紀中10 22 清蘭 貪心 優先佇列

70pts 使用柯西不等式可以證明均分一定是最優的。假設兩個數的差為 d,那麼分為 k 份時對 f x 的貢獻是 分成 k 1 份時,增量為 發現隨著 k 的增大,將 k 加一的改進值 增量的相反數 會越來越小,作用越來 越弱。因此,相當於有 n 1 個遞減序列,取出不超過 m 個使得它們的和最大。...