這道題目考察的主要是貪心的構造方法,唯一的難點就在於奇數的特殊處理
所以可以得到期望數量為
直接求個4的逆元一乘就做出來了
這道題目其實是樹上差分很常見的乙個思路——拆邊
想要快速的計算一些邊的和,我們把題目中的幸運邊在兩個點上+v,在兩點之間的路徑-v即可
然後就運用樹上差分實現求點權和邊權的和
**
#includeusing namespace std;
const int maxn=3e5+5;
typedef long long ll;
int n,m,q;
struct eedge
e[maxn<<1];
int head[maxn],cnt;
void add(int x,int y)
int lowbit(int x)
struct qzh
} ll query(ll x)
return res;
}}point,edge;
int f[maxn][20],dep[maxn],dfs_time,in[maxn],out[maxn];
void dfs(int u,int fa)
out[u]=dfs_time;
}void init_lca()
int lca(int x,int y)
ll sump[maxn],sume[maxn];
void calc(int u)
}int main()
mk[now]=1;
}void build()
else tr[u][i]=tr[fail[u]][i]; }}
int f[2][maxn][2];
void dp()
} for(int i=1;i<=cnt;i++)
if(!mk[i])
(((ans+=f[m&1][i][0])%=mod)+=f[m&1][i][1])%=mod;
}int main()
build();
dp();
printf("%d\n",ans);
return 0;
}
計蒜客 5月入門賽 A B C D
計蒜客資訊學5月入門賽 題目要求不再敘述了 a 注意 資料型別 long long include includeusing namespace std define ll long long const int maxa 1e3 10 ll a,b,c,d int main b include i...
F csgo(計蒜客 聯盟周賽)
題目描述 著名第一人稱射擊遊戲 csgo 因其優秀的平衡性,爽快的射擊感和科學的戰術配比贏得了世界廣大玩家的好評。在一局遊戲中,分為兩個陣營,他們的目標就是消滅全部的對方敵人。現在你是其中的一名玩家,不幸的是,你突然遭遇了許多個站成一橫排,身高不同的敵人。這種時候,用 瞄準對方的頭部進行 爆頭 一擊...
分為互質組 計蒜客 1216
題目鏈結 這是一道搜尋題 分為互質組。題目 蒜頭君給定 n 個正整數,將它們分組,使得每組中任意兩個數互質。至少要分成多少個組?輸入格式 第一行是乙個正整數 n。1 n 10。第二行是 n 個不大於 10000 的正整數。輸出格式 乙個正整數,即最少需要的組數。sample input 614 20...