当前位置: 代码迷 >> 综合 >> Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) ABCD
  详细解决方案

Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) ABCD

热度:77   发布时间:2023-12-12 17:24:14.0
A

Right-Left Cipher

standard input/output

1 s, 256 MB
   x5307
B

Div Times Mod

standard input/output

1 s, 256 MB
   x4423
C

Connect Three

standard input/output

1 s, 256 MB
   x2468
D

Minimum Diameter Tree

standard input/output

1 s, 256 MB
   x1987

 

A:开个双端队列模拟

B: 解方程

     ,已经n,k,求x最小值,注意这个div是整除,所以可以化简一下,先设y = x % k,

∴ (x - y) / k * y = n,x = n / y * k + y,注意。。。。这里要先除k,因为这个除法也是整除,你n * k  / y != n / y * k ,自己傻逼在这儿debug了半个小时多 没发现,枚举y就可以了

C:给三个点,求覆盖的最小块数

强行判断确实很麻烦,可以考虑排序,按x,在按y,所以直接放pair里,sor一下,对于最远的距离,构造一条边,然后从这个边,往另外两个点连线构造就可以了

D: 一颗树,一个权值s,你可以对这棵树赋值边权,但是要所有边权和等于s,求任意两个点之间的权值的最大值的最小值,任意两点的距离最大值,要求最小,我们就要尽量的把s分出去,但是你会发现无论你怎么分边权,如果不在叶子节点上增加权值,那这个最小值就会越来越大,均分叶子节点的边后,就会发现,无论怎么增加减少,都会使得这个值变大,所以在叶子边权上才是最优的,直接求叶子节点个数,平分 * 2 就可以了。

代码:

int main()
{ios;while(cin >> n >> k) {ll ans = 1e18;for(ll i = 1; i <= k - 1; i++) {if(n % i == 0){ans = min(ans,n / i * (k) + i);}}wt(ans);}return 0;
}

P p[30];
int main() {for(int i=1; i<= 3; i++)cin>> p[i].fi >> p[i].se;sort(1 + p,p + 4);set<P>s;s.insert(p[1]);s.insert(p[2]);s.insert(p[3]);int Min1 = min(min(p[1].se,p[2].se),p[3].se);int Min2 = max(max(p[1].se,p[2].se),p[3].se);
//    cout << Min1 << "  " << Min2 << endl;for(int i = Min1;i <= Min2;i++){
//        if(i == p[1].fi) continue;s.insert(P(p[2].fi,i));}
//    cout << s.size() << endl;for(int i = p[1].fi;i <= p[2].fi;i++){
//        s.insert(P(p[1].fi,i));s.insert(P(i,p[1].se));}for(int i = p[2].fi;i <= p[3].fi;i++){s.insert(P(i,p[3].se));
//        s.insert(P(p[3].fi,i));}cout << s.size() << endl;for(auto d:s){cout << d.fi << " " << d.se << endl;}}

vector<int>v[maxn];
void dfs(int x,int fa){if(v[x].size() == 1) ans++;for(auto d:v[x]){if(d == fa) continue;dfs(d,x);}
}
int main()
{ios;double s ;while(cin >> n >> s){ans = 0;for(int i = 1;i < n;i++){int x,y;cin >> x >> y;v[x].pb(y);v[y].pb(x);}dfs(1,0);
//        wt(ans);s /= ans;wt(s * 2,6);}return 0;
}

 

  相关解决方案