# Codeforces Round 665 赛后解题报告

## A. Distance and Axis

$\mid(n-x)-x\mid=k$
$\mid n-2\cdot x \mid=k$

//Don't act like a loser.
//You can only use the code for studying or finding mistakes
//Or,you'll be punished by Sakyamuni!!!
#include<bits/stdc++.h>
#define int long long
using namespace std;

char ch=getchar();
int f=1,x=0;
while(ch<'0'||ch>'9') {
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') {
x=x*10+ch-'0';
ch=getchar();
}
return f*x;
}

int n,k;

signed main() {

while(T--) {

if(n<k) {
cout<<k-n<<endl;
}
else {
cout<<(n-k)%2<<endl;
}
}
return 0;
}



## B. Ternary Sequence

//Don't act like a loser.
//You can only use the code for studying or finding mistakes
//Or,you'll be punished by Sakyamuni!!!
#include<bits/stdc++.h>
#define int long long
using namespace std;

char ch=getchar();
int f=1,x=0;
while(ch<'0'||ch>'9') {
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') {
x=x*10+ch-'0';
ch=getchar();
}
return f*x;
}

int x[2],y[2],z[2];

signed main() {
while(T--) {
for(int i=0;i<=1;i++) {
}

int ans=0;

int tmp=min(z[1],x[0]);
z[1]-=tmp;
x[0]-=tmp;
if(z[1]) {
int t1=min(z[1],z[0]);
z[1]-=t1;
z[0]-=t1;
if(z[1]) {
ans-=z[1]*2;
y[0]-=z[1];
}
}

ans+=min(z[0],y[1])*2;

cout<<ans<<endl;
}
return 0;
}



## C. Mere Array

In one operation, you can choose two different indices $$i$$ and $$j$$ ($$1\leq i$$,$$j\leq n$$). If $$\gcd(a_i,a_j)$$ is equal to the minimum element of the whole array a, you can swap $$a_i$$ and $$a_j$$

//Don't act like a loser.
//You can only use the code for studying or finding mistakes
//Or,you'll be punished by Sakyamuni!!!
#include<bits/stdc++.h>
#define int long long
using namespace std;

char ch=getchar();
int f=1,x=0;
while(ch<'0'||ch>'9') {
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') {
x=x*10+ch-'0';
ch=getchar();
}
return f*x;
}

const int maxn=1e5+10;

int n,a[maxn],divi,b[maxn];

signed main() {

while(T--) {
divi=1e9+10;
for(int i=1;i<=n;i++) {
b[i]=a[i];
divi=min(divi,a[i]);
}

sort(b+1,b+n+1);//排序

bool flag=1;
int pos=0;
for(int i=1;i<=n;i++) {
if(a[i]%divi!=0) {
pos=upper_bound(b+1,b+i+1,a[i])-b;
if(!(pos-1==i&&b[pos-1]==a[i])) {//如果 $a_i$=$a_{i-1}$，我们的要特殊处理
printf("NO\n");
flag=0;
break;
}
}
}
if(flag) {
printf("YES\n");
}
}
return 0;
}



## D. Maximum Distributed Tree

$\sum\limits_{i=1}^{n-1}\sum\limits_{j=i+1}^{n} f(i,j)=\sum\limits_{(u,v\in E)}con_{(u,v)}\times w_{(u,v)}$

• 如果 $$m<n-1$$ 那么一定会有边权为 $$1$$ 的边出现。那么为了让 $$1$$ 最少（题目要求），我们只有唯一解
• 否则我们可以让一些质因子合并，构造出 $$n-1$$ 个边权。那么我们为了让答案最大，一定是把最大的 $$m-n+2$$ 个边权堆在一起。证明很简单，就是因为如果我们有 $$a>b,k>0$$，那么 $$k\cdot a>k\cdot b$$。最后给 $$w,con$$ 数组排个序即可。

//Don't act like a loser.
//You can only use the code for studying or finding mistakes
//Or,you'll be punished by Sakyamuni!!!
#include<bits/stdc++.h>
#define int long long
using namespace std;

char ch=getchar();
int f=1,x=0;
while(ch<'0'||ch>'9') {
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') {
x=x*10+ch-'0';
ch=getchar();
}
return f*x;
}

const int maxn=1e5+10,mod=1e9+7;

int n,m;
int p[maxn],a[maxn],h[maxn],cnt,w[maxn],sz[maxn],con[maxn],tot;

struct edge {
int v,next;
}e[maxn<<1];

e[++cnt].v=v;
e[cnt].next=h[u];
h[u]=cnt;
}
void insert(int u,int v) {
}

void dfs(int u,int fa) {
sz[u]=1;
for(int i=h[u];i;i=e[i].next) {
int v=e[i].v;

if(v!=fa) {
dfs(v,u);
sz[u]+=sz[v];
}
}
if(fa!=0) {
con[++tot]=sz[u]*(n-sz[u]);//不着急取模
}
}

signed main() {
while(T--) {
fill(h+1,h+n+1,0);
cnt=0;
for(int i=1;i<n;i++) {
}
fill(w,w+n+1,0);
for(int i=1;i<=m;i++) {
}
sort(p+1,p+m+1);//这里要先排序

if(n-1<m) {//第一种
for(int i=1;i<n-1;i++) {
w[i]=p[i];
}
w[n-1]=p[n-1];
for(int i=n;i<=m;i++) {
w[n-1]=w[n-1]*p[i]%mod;
}
}
else {//第二种
for(int i=1;i<=m;i++) {
w[i]=p[i];
}
for(int i=m+1;i<n;i++) {
w[i]=1;
}
sort(w+1,w+n);
}

tot=0;
dfs(1,0);//维护con

int ans=0;

sort(con+1,con+n);
for(int i=1;i<n;i++) {
ans+=con[i]%mod*w[i]%mod;//贪心
ans%=mod;
}
cout<<ans<<endl;
}
return 0;
}



## Codeforces Round 665 赛后解题报告（暂A-D）的更多相关文章

1. Codeforces Round 662 赛后解题报告（A-E2）

Codeforces Round 662 赛后解题报告 梦幻开局到1400+的悲惨故事 A. Rainbow Dash, Fluttershy and Chess Coloring 这个题很简单,我们 ...

2. Codeforces Educational Round 92 赛后解题报告（A-G）

Codeforces Educational Round 92 赛后解题报告 惨 huayucaiji 惨 A. LCM Problem 赛前:A题嘛,总归简单的咯 赛后:A题这种**题居然想了20m ...

3. Codeforces Round#320 Div2 解题报告

Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

4. Codeforces Round #277.5 解题报告

又熬夜刷了cf,今天比正常多一题.比赛还没完但我知道F过不了了,一个半小时贡献给F还是没过--应该也没人Hack.写写解题报告吧= =. 解题报告例如以下: A题:选择排序直接搞,由于不要求最优交换次 ...

5. Codeforces Round #299 Div2 解题报告

这场比赛并没有打现场,昨天晚上做了ABCD四道题,今天做掉了E题 以前还没有过切完一场比赛的所有题呢~爽~ A. Tavas and Nafas   Today Tavas got his test ...

6. Codeforces Round #665 (Div. 2)

Codeforces Round #665 (Div. 2)  A. Distance and Axis 如果$$B$$在$$O$$左边,那么只能是定值$$OA$$ 如果$$B$$在$$OA$$中间 ...

7. codeforces 581C. Developing Skills 解题报告

题目链接:http://codeforces.com/problemset/problem/581/C 题目意思:给出 n 个数:a1, a2, ..., an (0 ≤ ai ≤ 100).给出值 ...

8. codeforces B. Simple Molecules 解题报告

题目链接:http://codeforces.com/problemset/problem/344/B 题目意思:这句话是解题的关键: The number of bonds of an atom i ...

9. codeforces 469B Chat Online 解题报告

题目链接:http://codeforces.com/problemset/problem/469/B 题目意思:给出 Little Z 的上线时间段,分别是[a1, b1], [a2, b2],.. ...

## 随机推荐

1. OPENSSL编程入门学习

2. [设计模式]&lt;&lt;设计模式之禅&gt;&gt;抽象工厂模式

1 女娲的失误 上一篇讲了女娲造人的故事.人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱.仇恨.喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍 脑袋,忘记给人类定义性别了 ...

3. ECSHOP info: Can&#39;t Connect MySQL Server(localhost:3306)!

4. FFT模板(BZOJ2179)

实现了两个长度为n的大数相乘. #include <cstdio> #include <cmath> #include <complex> using namesp ...

5. CentOS7中搭建cobbler自动装机服务

一.实验环境 一台centos7 epel源网址 https://fedoraproject.org/wiki/EPEL?rd=Epel 使用nat模式 二.实验步骤 1.下载epel源后进行文件夹挂 ...

6. JAVAEE 第八周

equals():反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用,也可能是值类型的值. hashCode():计算出对象实例的哈希码,并返回哈希码,又称为散列函数.根类Obje ...

7. phprpc的使用示例以及报错Fatal error: Cannot redeclare gzdecode() in D:\wamp\www\immoc\phprpc\compat.php 处理

今天看书,发现了PHPRPC这个好东东,故在此写下来以作笔记. PHPRPC 是一个轻型的.安全的.跨网际的.跨语言的.跨平台的.跨环境的.跨域的.支持复杂对象传输的.支持引用参数传递的.支持内容输出 ...

8. python 中@ 的用法【转】

这只是我的个人理解: 在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰,当解释器读到@的这样的修饰符之后,会先解析@后的内容,直接就把@下一行的函数或者类作为@后边的 ...

9. Cantor表(NOIP1999)

题目链接:Cantor表 这道题很水,但有的人没看懂题意,这不怪大家,怪题目没说清楚. 给张图: 看到这,你应该明白题目意思了. 先看看有什么规律. 我把这个数列写出来: 1/1,1/2,2/1,3/ ...

10. uvm_config_db在UVM验证环境中的应用

如何在有效的使用uvm_config_db来搭建uvm验证环境对于许多验证团队来说仍然是一个挑战.一些验证团队完全避免使用它,这样就不能够有效利用它带来的好处:另一些验证团队却过多的使用它,这让验证环 ...