路逢剑客须呈剑
不是诗人莫献诗
       

Codeforces Round #528 (Div. 2) 题解记录

Codeforces Round #528 (Div. 2) 题解记录

本次比赛有幸rating暴涨,由1500->1661,rank 140

但是….5c23aef931cea

Problem A.

分字串奇偶长度讨论,对于奇数长度的起始点则位于最中间,偶数长度则位于中点左侧。

然后向左一位,向右两位,向左三位….. 显而易见(水题)

nowt = len / 2 + len % 2;
printf("%c", str[nowt - 1]);
for (int i = 1; i 

Problem B.

结论题目,由$2 \leq k\le1000 $可以想到枚举 $ x\mod k$ 的值,然后由$\lfloor x/k \rfloor = n / (x\mod k) $可以计算出对应$x=n / (x\mod k) * k + (x\mod k)$。最终,取枚举得出的min_ans (简单的数学题)

scanf("%I64d%I64d",&n,&k);

for(int i=1;i

Problem C.

一道模拟题,可能稍微有点结论。距离最短即找到一点 $O$,令$A,B,C$三点到该点的曼哈顿距离最短。将距离分解为水平水平距离$x$和垂直距离$y$。$O$的坐标则取$A,B,C$ 的第二高的$y_2$ ,第二大的$x_2$ 。得到目标点。然后垂直扩展或水平扩展,模拟。对于$\forall y_x \ne y2$,存在$\sum{i=1}^{i\le3}|y_i-yx| \gt \sum{i=1}^{i\le3}|y_i-y_2|$,同理 可证$x_2$为最优

#include
using namespace std;

struct node{
    int x,y;
} adds[5];
int ans;

bool cmp_1(node a,node b){

    return a.yspx;i--)
        printf("%d %d\n",adds[2].x,i);

    return 0;
}

Problem D.

一道有一点难度的结论(贪心)题目,将所有边权都放到叶子节点所连的边上,然后$s/edges*2$ 就是结果。但是对于$n=2$时,$ans=s$。

证明:若有一边的值$v_i$被置于非叶子结点所连接的边,则对于所有途径该边的点,权重增加了$v_i$,则$ans$ 变大。非最优

#include 
using namespace std;

int n, s, tpx, tpy, cnt;
vector pt[100500];
int sizes[100500];

void dfs(int nowx, int lstx)
{
    if (sizes[nowx] == 1 && nowx != 1){

        cnt++;
        return;
    }
    for (int i = 0; i 

Problem E.

爆搜

代码待续

Problem F.

观察结论+线段树or树状数组。

代码待续

赞(0)
未经允许请勿转载:Makira的咸鱼小站 » Codeforces Round #528 (Div. 2) 题解记录

相关推荐

  • 暂无文章

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址