統計每個點連線邊的邊權和以及最大邊權,然後進行如下貪心:
ll find(ll x)//將邊權存到了multisets[x]
這樣找到的ans是比答案大1倍的,因為每一條邊連向了兩個點,那麼每一條邊都被統計了2次答案,所以ans最後還要/=2
也可以理解成以每個點為出發點,要往其他點連多少條邊
寫了詳細注釋:
#includeusing namespace std;
#define ll long long
#define fastio ios::sync_with_stdio(false),cin.tie(null),cout.tie(null)
const int maxn = 1e5 + 10;
const ll inf = 1e17;
ll mod = 998244353;
multisets[maxn];
ll a[maxn], b[maxn], w[maxn], sum[maxn];
ll find(ll x)
int main()
ll ans = 0;
for (int i = 1; i <= n; i++)
cout << ans / 2 << endl;//每個邊被統計了2次,所以/=2
while (q--)
return 0;
}
2019牛客第十場題解 C F
題意 第i天在原來字串的基礎上在字串的前面或者後面新增乙個字元。問新增完字元後有多少種不同長度的迴圈節。定義迴圈節為能把原字串分割成長度為k的乙個或多個部分。並且後面可以有或者沒有迴圈節的開頭部分。也就是說 s 1 s n x s x 1 s n 則說明迴圈節為x 1.明顯,對於長度為len的字串,...
2019牛客多校第十場
對於s n s n s n 考慮某個字母是從s n 1 s n 1 s n 1 轉移還是從s n 2 s n 2 s n 2 轉移 include define fo i,a,b for i a i b i define n 10005 using namespace std int t,n,q,p...
2020牛客多校第十場 A
x 是乘法 以任意點為起點,一直以 2 x now p 第一類 做的話 或者3 x now p 第二類 會形成乙個或者多個環。環上有什麼特點。對於 某個數z,它所對應的後一位是y,當 2 x z p 3 x z p 相等的時候,這兩類的環在z後面的數y時一樣的。但是 上式化簡 2 x z n x p...