但是n=12,420n=12,420时1t(t+1)21t(t+1)2还可以跟前面的继续合并,因此要特判。 code // Problem: C - Harmonic Mean // Contest: AtCoder - AtCoder Regular Contest 163 // URL: https://atcoder.jp/contests/arc163/tasks/arc163_c // Memory Limit: 1024 MB // Time Limit: 2000 ms //...
AtCoder Beginner Contest 163(D,E(区间dp),F(树上路径问题)),题目链接今天的题都很不错D-SumofLargeNumbers题意:求至少选k个数和的种类数。做法:刚开始感觉很难,涉及大数和、方案数。考虑k=2由于n+1个数是连续的,那我选最小的k个数求和:mi和最大的k个数求和:mx
AtCoder Beginner Contest 163 题目链接D: 看样例+分析得知,假设现在要选ii个,那么能达到的最大的值就是sumi1=∑nx=n−i+1xsumi1=∑x=n−i+1nx, 最小值就是sumi2=∑i−1x=0xsumi2=∑x=0i−1x,那么每次可选择的数量就是sum1−sum2+1sum1−sum2+1,那么答案就为∑n+1i=k(sumi1...
AtCoder Beginner Contest 163 (6/6) Here AB水题, C - management 题意:给一棵\(N(2\le N\le2e5)\) 个节点的有根树,求每个节点的儿子数。 思路:由于输入直接给的是每个节点的父节点,直接计数即可。 const int N = 2e5 + 10; int a[N]; int main() { ios::sync_with_stdio(false), ...
代码 #include<iostream>#include<math.h>#include<algorithm>usingnamespacestd;typedeflonglongLL;constintmod =1e9+7;LLadd(LL s,LL e, LL n)//这里需要写成long long,不然会炸{return(s+e)*n/2;//等差数列求和公式}intmain(){intn,k;
AtCoder Beginner Contest 163 比赛链接:https://atcoder.jp/contests/abc163/tasksA - Circle Pond题意由半径输出圆周长。代码#include <bits/stdc++.h> using namespace std; int main() { double r; cin >> r; cout << 2 * 3.14 * r; }B...
AtCoder Beginner Contest 163 D - Sum of Large Numbers(递推&找规律) 题目传送门 思路: AC代码: #include<bits/stdc++.h> using namespace std; const double pi=atan(1.0)*4; typedef long long ll; const ll mod=1e9+7; int main(){ ...
[AtCoder Beginner Contest 163] F path pass i (树型dfs,容斥定律) 链接:https://atcoder.jp/contests/abc163/tasks/abc163_f Problem Statement We have a tree with N
Atcoder beginner contest 163 f path pass i 传送门:https://atcoder.jp/contests/abc163/tasks/abc163_f 题目大意:一颗n个节点的树,每个节点有一个颜色。求对每一个颜色,至少经过一个该颜色节点的简单路径数量。 分析:虽然有O(n)的做法,但是这里还是贴一下虚树的做法。虚树的做法大概是:对每一种颜色建立...
定义dp[i][j]dp[i][j]代表当前放了i+ji+j个物品,其中ii个物品放在紧靠着左边,jj个物品放在紧靠着右边时产生的最大价值。 然后转移即可。 代码: #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<stack>#include#include<set>#include<vector>#...