1. 程式人生 > >牛客練習賽27(A,C,E題解)

牛客練習賽27(A,C,E題解)

A紙牌
最優解為
ab2=n2,ba=n2,ab=0a-\frac{b}{2}=\frac{n}{2},b-a=\frac{n}{2},a-b=0(n is even)
ab+12=n12,ba=n+12,an12=0a-\frac{b+1}{2}=\frac{n-1}{2},b-a=\frac{n+1}{2},a-\frac{n-1}{2}=0(n is odd)
最終a+b=n+12a+b=\lfloor \frac{n+1}{2}\rfloor

#include
<cstdio>
using namespace std; int main() { int n; scanf("%d", &n); printf("%d\n", (n + 1) / 2); return 0; }

C水圖
可以發現每條邊都要被走兩次(除了最後一條路徑上的邊)
於是題目轉換為求從xx出發最長的一條邊的lenmaxlen_{max}
最終答案為ans=2×wlenmaxans=2\times \sum w-len_{max}

#include <cstdio>
#include <algorithm>
#define N 50010 typedef long long LL; using namespace std; int cnt, lst[N]; LL del; struct Node{ int to, nxt; LL len; }e[N << 1]; inline void add(int u, int v, LL w) { e[++cnt].to = v; e[cnt].nxt = lst[u]; e[cnt].len = w; lst[u] = cnt; } void dfs(int x, int fa, LL sum) { del = max(del,
sum); for (int i = lst[x]; i; i = e[i].nxt) { int son = e[i].to; if (son == fa) continue; dfs(son, x, sum + e[i].len); } } int main() { int n, x; scanf("%d%d", &n, &x); LL ans = 0; for (int i = 1; i < n; ++i) { int u, v; LL w; scanf("%d%d%lld", &u, &v, &w); add(u, v, w); add(v, u, w); ans += w; } ans *= 2; dfs(x, x, 0); ans -= del; printf("%lld\n", ans); }

E尤拉
別的不多說了,直接搞式子

n=p1k1p2k2p3k3...prkr(pipj)n=p_1^{k_1}p_2^{k_2}p_3^{k_3}...p_r^{k_r}(p_i \neq p_j)
qtx(t&gt;1)μ(x)=0q^t|x(t&gt;1) \to \mu(x)=0
f(n)=dndkμ(nd)=(p1k11p2k21p3k31...prkr1)k×f(p1p2p3...pr)f(n)=\sum_{d|n}d^k \mu(\frac{n}{d})=(p_1^{k_1-1}p_2^{k_2-1}p_3^{k_3-1}...p_r^{k_r-1})^k \times f(p_1p_2p_3...p_r)
ϕ(p1p2p3...pr)=(p11)(p21)(p31)...(pr1)\because \phi (p_1p_2p_3...p_r)=(p_1-1)(p_2-1)(p_3-1)...(p_r-1)
f(p1p2p3...pn)=(p1k1)(p2k1)(p3k1)...(prk1)\therefore f(p_1p_2p_3...p_n)=(p_1^k-1)(p_2^k-1)(p_3^k-1)...(p_r^k-1)
綜上
f(n)=(p1k11p2k21p3k31...prkr1)k×(p1k1)(p2k1)(p3k1)...(prk1)f(n)=(p_1^{k_1-1}p_2^{k_2-1}p_3^{k_3-1}...p_r^{k_r-1})^k \times (p_1^k-1)(p_2^k-1)(p_3^k-1)...(p_r^k-1)
由於時間限制,預處理出了所有的質數和它們的kk次冪

#include <cstdio>
#define MOD 998244353
#define N 5000010

typedef long long LL;
using namespace std;

LL pr[N], kp[N], f[N];
int cnt;

int qui_pow(LL x, int y) {
	if (y == 1) return x;
	LL t = qui_pow(x, y / 2);
	if (y % 2 == 0) return t * t % MOD;
	else return t * t % MOD * x % MOD;
}

int main() {
	int m, k;
	scanf("%d%d", &m, &k);
	for 
            
           

相關推薦

練習賽27(A,C,E題解)

A紙牌 最優解為 a−b2=n2,b−a=n2,a−b=0a-\frac{b}{2}=\frac{n}{2},b-a=\frac{n}{2},a-b=0a−2b​=2n​,b−a=2n​,a−b=0(n

練習賽30-A/C

初賽 就是 long cout 當前 min || 麻煩 clip 鏈接:https://ac.nowcoder.com/acm/contest/216/A來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限

網Nowcoder 練習賽13 A. 幸運數字Ⅰ B.幸運數字Ⅱ(數組或者dfs) C.幸運數字Ⅲ(思維)

tps sum quest 兩個 long 練習 clas tdi return A.幸運數字Ⅰ 鏈接:https://www.nowcoder.com/acm/contest/70/A來源:牛客網 水題。 代碼: 1 #include<iost

練習賽27-----C.水圖(DFS求最長路徑)

題目描述: 小w不會離散數學,所以她van的圖論遊戲是送分的 小w有一張n個點n-1條邊的無向聯通圖,每個點編號為1~n,每條邊都有一個長度 小w現在在點x上 她想知道從點x出發經過每個點至少一次,最

練習賽12 A 圓圓 . B 迷宮

main cstring mar mem pre 所有 ble ios math 題目描述 我們定義一個圓 C 為以原點 (0, 0) 為中心的單位圓(半徑為 1 的圓)。給定在 C 圓周上相異的兩點 A, B。請問由 A 出發,沿著圓周走到 B,是順時針走比較近,還是逆時

練習賽27 水圖(思維+暴搜)

畫幾個圖就可以發現,經過每個點最少一次的最短路徑即使,總邊權*2-從x點出發走的一個最長的路徑,可以想象成這個最長的路徑對應的分支是最後走的,走到了該分支的葉子節點,就滿足要求了,就不必回到x點了, ​#include<bits/stdc++.h> using namespace

練習賽31 A

題目連結https://ac.nowcoder.com/acm/contest/218/A 先記ans=n*m即個數,然後進行遍歷,對走過的進行重置,然後ans- -,最後剩下的就是符合條件的。 #include<cstdio> #include<cstring&g

練習賽31 A

原題傳送        現在,你作為一名新星鵬洛客,找到了一塊絕佳的修煉地。這塊地方可以被描述成一個 n x m 的矩形。你已經在這塊地中的一些位置打好了標記。接下去,就該對整塊地賦予你的顏色了。一個位置能被賦予你的顏色,當且僅當滿足以下條件之一:

練習賽29-A——可持久化動態圖上樹狀陣列維護01揹包(貪心)

題目連結 題目描述 你有一個長度為 n 序列 {a}(序列下標從1開始) ,每次可以從任意位置 i 花費 ai*i 的代價來把 ai 刪除。 注意,刪除後 ai 後面的數會依次向前補上(下標 -1 ) 。 求把整個序列刪完的最小代價。 輸入描述: 第一行一個整

練習賽 27

比賽連結:點我 題目描述 小w想和你van紙牌 小w有兩張紙牌,兩張紙牌上都有相同的正整數n 每一輪一張紙牌上的數都可以減去小於等於另外一張紙牌上的數的數 每一輪只能操作和上輪不同的紙牌 小w想知道三輪之後兩紙牌上數字之和的最小值 注意,不能減為負數 輸入描述

練習賽27 B 手辦

題意 給你一個n 定義f(x)為a*b整除x的(a,b)個數 求f(1)+f(2)+…+f(n) 廢話 好久沒有更部落格了。。 其實都是寫了沒有發出來。。 你問我為什麼不發出來? 因為寫得都很簡略。。類

練習賽27 水圖(最短路 or dfs)

題目描述  小w不會離散數學,所以她van的圖論遊戲是送分的 小w有一張n個點n-1條邊的無向聯通圖,每個點編號為1~n,每條邊都有一個長度 小w現在在點x上 她想知道從點x出發經過每個點至少一

練習賽34 A little w and Soda

題目連結 兩元一瓶汽水,兩個汽水瓶可以換一瓶汽水。也就是說一個汽水瓶的價值是 1 元錢。 最後可以借一個空瓶,所以最後手裡不會剩下空瓶。那麼一開始能花掉多少錢,最後 就能夠喝到多少汽水。 所以奇數會剩下一塊錢花不出去,偶數最後不會有剩餘。答案為奇數-1,偶數直接輸 出。 #inclu

練習賽29-A-可持久化動態圖上樹狀陣列維護01揹包(思維)

題目描述  你有一個長度為 n 序列 {a}(序列下標從1開始) ,每次可以從任意位置 i 花費 ai*i 的代價來把 ai 刪除。 注意,刪除後 ai 後面的數會依次向前補上(下標 -1 )

練習賽30-A-迴文日期(構造)

題目描述  眾所周知,小K是nowcoder的暴政苟管理,所以小K很擅長踢樹,雖然本題與踢樹無關 小K喜歡將日期排列成yyyy-mm-dd的形式(位數不足添零補齊)的形式,雖然這與小K只會做迴文字串這道水題無關,但小K覺得日期組成的迴文串也是挺可愛的。作為一個涼心出題

練習賽28 A 生日宴

連結:https://www.nowcoder.com/acm/contest/200/A 來源:牛客網 題目描述 Akoasm有一群朋友,但是由於Akoasm是人贏朋友太多,當他想知道某一天誰生日時,總是很頭疼。於是,他請你來幫忙。 Akoasm會給出他所有朋友的名字與出生年月日,

網36-A,B題解

A.Rabbit的字串 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 Rabbit得到了一個字串,她的好朋友xxx可以給這個字串施加一次魔法。 魔法可以選擇字串的任一位置,並將

練習賽36 A Rabbit的字符串(字符串最小表示法)

terminal 一次 har color .com tor mes abc 長度 鏈接:https://ac.nowcoder.com/acm/contest/328/A來源:牛客網 題目描述 Rabbit得到了一個字符串,她的好朋友xxx可以給這個字符串

練習賽37 A-筱瑪的快樂

A-筱瑪的快樂 連結:https://ac.nowcoder.com/acm/contest/342/A 來源:牛客網 題目描述 筱瑪是個快樂的男孩子。 寒假終於到了,筱瑪決定請他的朋友們一起來快樂。 對於筱瑪來說,最快樂的事情莫過於翻看萬年曆上的日期了。 一個日期是“快樂”的,

練習賽27 計數

題意: n個數字一個環,每個數字只能是3或7,要求所有相鄰的m個數中,7的個數大於等於3的個數,求方案數。 題解: 由於m<=5,用一個數字表示最後m個數的狀態,轉移方程很好寫: dp[i]->dp[j](j和i都合法,並且二進位制下i的後m-1位和j