0915 反思

这场比赛还是打的很迷
A题我居然没看出来是状态压缩
B题本来是一道DP题 我脑抽 写了一发最短路..... 然后空间就超了
C题打暴力只有30分 没有想到换根操作
A
0915 反思_第1张图片
N<=16!!!
zz 一味地打表 然后居然认为这是一个求逆序对的题目...
首先一看范围 状态压缩 这很显然
\(F[I]\)表示把集合i 里面的元素合并的最小步数
考虑转移
注意到 当集合为回文串的时候 只需要多操作一步
所以 \(F[I]=MIN(F[I\)^\(S]+1,F[I])\)
预处理回文串
CODE:

//
#include
using namespace std;
#define maxnn 100000
int mark[1<<21];
int all,n;
int f[1<<21];
char s[maxnn];
int main() {
    scanf("%s",s+1);
    n=strlen(s+1);
    int all=(1<=1; k--) {
            if((1<

B
 你得到了一个龙珠雷达,它会告诉你龙珠出现的时间和地点。
   龙珠雷达的画面是一条水平的数轴,每一个窗口时间,数轴的某些点上会出现同一种龙珠,每当你获得其中一颗龙珠,其它龙珠就会消失。下一个窗口时间,数轴上又会出现另一种龙珠。总共有n个窗口时间,也就是总共有n种龙珠。
  假设你会瞬间移动,你从数轴的x点移动到y点,耗时0秒,但是需要耗费|x-y|的体力。同时,挖出一颗龙珠也需要耗费一定的体力。请问,最少耗费多少体力,就可以收集齐所有种类的龙珠。

这是一个树塔问题 我居然看成了最短路... 空间计算还出错了

状态转移比较简单

然后我们考虑打开绝对值
然后你就会发现 对于 第i 层 的第j 个龙珠
我们只需要 在左边找最小值 或者在右边找最小值
考虑维护一个单调递增的序列即可

C
【题目背景】

小奇采的矿实在太多了,它准备在喵星系建个矿石仓库。令它无语的是,喵星系的货运飞船引擎还停留在上元时代!

【问题描述】

喵星系有n个星球,星球以及星球间的航线形成一棵树。

从星球a到星球b要花费[dis(a,b) Xor M]秒。(dis(a,b)表示ab间的航线长度,Xor为位运算中的异或)

为了给仓库选址,小奇想知道,星球i(1<=i<=n)到其它所有星球花费的时间之和。


你可能感兴趣的:(0915 反思)