總結:
這一場過了a題,之前用c++各種寫,但是沒想到用py三行**就解決了問題,還是需要學習很多很多。fi
一級目錄
土撥鼠在第1個宿舍,橙子在第n個宿舍。這n個宿舍間有n-1條路並且長度都為1,土撥鼠從第1個房間去第n個宿舍,速度為1m/s;橙子從第n個宿舍追趕土撥鼠,速度為2m/s。。
二分時間 t ,然後判斷在 ts 內土撥鼠是否會被橙子追上。以橙子所在的寢室 n 為根建樹,從 1 到 n 列舉所有土撥鼠能夠到達的點,先找出t秒能走到哪個點,然後再找這個點能走到的離n最遠的點,判斷在走的過程中會不會被追上。
土撥鼠要和蘋果約會,第 i 天它的第 j 件衣服的邋遢度為 aij ,它要在n天中選擇m天和蘋果約會,要求選出的m天衣服的邋遢度的最大值和最小值的差值最小。#include.h>
using namespace std;
const int maxn =
1e5+10;
vector vv[maxn]
;int vis[maxn]
;int f[maxn]
;int dep[maxn]
;void
dfs(int x,int fa,int de)
}int ans =0;
void
dfs2
(int x,int fa,int de)
}int main()
vis[1]
=1;dfs
(n,0,1
);int k =-1
; int s = dep[1]
- m;
for(int i =
1; i <= n; i ++)}
int num = dep[k]-1
;dfs2
(k,f[k],1
);ans --
; num += ans;
int r =
(num +1)
/2; int l =0;
while
(l < r)
printf
("%d\n"
,l);
}
因為要最小化最大值和最小值的差值,所以用pair存每件衣服的邋遢度和第幾天,然後對邋遢度從小到大排序。那麼問題就轉換成了求乙個區間 [l,r] ,使得這個區間覆蓋m個不同的天,並且r的邋遢度-l的邋遢度最小。這個問題就可以用尺取解決了。對於每乙個l,求出最小的合法的r,每次更新差值最小值即可。
給出n個數(0<=a[i]<=9),由這n個數組成2個數,使得這兩個數的乘積最小。#include.h>
#define st first
#define sd second
#define ll long long
#define pii pair
using namespace std;
const int inf =
0x3f3f3f3f
;const int maxn =
2e6+10;
pii pp[maxn]
;int vis[maxn]
;int main()
}sort
(pp +
1, pp +
1+ cnt)
; int num =0;
int l =
1, r =1;
int minn = pp[1]
.st, maxx =0;
int ans = inf;
while(1
)if(num < m)
break
; ans =
min(ans, maxx - minn)
; vis[pp[l]
.sd]--;
if(vis[pp[l]
.sd]==0
) num --
; minn = pp[l +1]
.sd;
l ++;}
printf
("%d\n"
,ans)
;}
自己造幾個例子就可以看出,選擇0之外最小的數和剩下的數字組成的沒有前導0的數相乘結果最小。剩下的數字怎樣最小呢,當然是找到最小的非零的數做第一位,後邊接上所有的0,再按照有小到大的順序放剩下的數字。因為n的範圍在1e5,所以要用高精度乘法。
#include.h>
#define ll long long
using namespace std;
int a[
100100];
int main()
for(int i=
0;i<
10;i++
) ans.
push_back(0
);for(int i=
0;isize()
;i++)}
while
(!ans.
back()
) ans.
pop_back()
;for
(int i=ans.
size()
-1;i>=
0;i--
) cout<; cout<}return0;
}
2019牛客暑期多校訓練營(第九場)
d knapsack cryptosystem 折半搜尋,晚上又去看了挑戰程式設計,對於時間複雜度高的情況,可以通過犧牲空間來降低時間複雜度。先把前半部分所有可以組合的情況列舉出來,然後對於後半部分依次列舉,那麼複雜度變化為o 2 36 o 2 18 2 18log 18 顯然就可做了,折半的裸題。...
2019牛客暑期多校訓練營(第九場)
給定 p 1000000007 有兩個數x,y,其中 x leqslant y leqslant p x y equiv b mod p x times y equiv c mod p 求 x,y的值 二次剩餘 1 二次剩餘參考資料1 2 二次剩餘參考資料2 知道 x y 和 x times y 那...
牛客網暑期ACM多校訓練營(第九場)
做法 看到下標 xor 這種情況就想 fwt 可是半天沒思路,於是放棄了。其實這個 n 瘋狂暗示啊。設未知數向量為 x 列一下方程組就可以發現有 b k sum a i x j 做法就顯然了吧,把 a 和 b 分別 fwt 對應相除然後反變換即可。表示前天才學的 fwt 就不會使了。include ...