T1 tom

题意:

考虑一定是属于\(a\)的在一坨,属于\(b\)的在一坨,找到这条连接\(a\)和\(b\)的边,然后分别直接按\(dfs\)序染色即可

注意属于\(a\)的连通块或属于\(b\)的连通块可能在\(dfs\)树上不都体现为一棵完整的子树,所以需要都判断一下

#include<bits/stdc++.h>
#define N (200000 + 10)
using namespace std;
inline int read() {
int cnt = 0, f = 1; char c = getchar();
while (!isdigit(c)) {if (c == '-') f = -f; c = getchar();}
while (isdigit(c)) {cnt = (cnt << 3) + (cnt << 1) + (c ^ 48); c = getchar();}
return cnt * f;
}
int n, a, b, x, y, fa[N], siz[N], id[N], val;
int first[N], to[N], nxt[N], tot;
void add (int x, int y) {nxt[++tot] = first[x], first[x] = tot, to[tot] = y;}
void get_siz(int x, int father) {
siz[x] = 1; fa[x] = father;
for (register int i = first[x]; i; i = nxt[i]) {
int v = to[i];
if (v == father) continue;
get_siz(v, x), siz[x] += siz[v];
}
}
void print(int x, int fa, int d) {
for (register int i = first[x]; i; i = nxt[i]) {
int v = to[i];
if (v == fa) continue;
print(v, x, d);
}
val += d;
id[x] = val;
}
void work () {
bool ok = 0;
get_siz(1, 0);
for (register int i = 1; i <= n; ++i)
if (siz[i] == a) {
val = 0;
print(i, fa[i], 1);
val = 0;
print(fa[i], i, -1);
ok = 1;
} else if (siz[i] == b) {
val = 0;
print(i, fa[i], -1);
val = 0;
print(fa[i], i, 1);
ok = 1;
}
if (!ok) puts("-1");
else for (register int i = 1; i <= n; ++i) printf("%d ", id[i]);
putchar('\n');
}
int main() {
n = read(), a = read(), b = read();
for (register int i = 1; i <= n - 1; ++i) {
x = read(), y = read();
add(x, y), add(y, x);
}
work();
return 0;
}

T2 Jerry

首先能发现一个性质,括号结构最多嵌套两层

如果有三层的嵌套可以这样化简

( ( ( ) ) )



( ( ) ( ) )

符号反三层和反一层等价

设\(f[i][0~2]\)表示当前处理到第\(i\)位,前面有\(0/1/2\)个未配对的左括号

在当前数\(>0\)时状态转移考虑补右括号,\(<0\)时考虑先强行在“-”后补一个左括号(如果对答案不优,自然会在后面的更新中去掉:-(a) + b),再进行转移

具体方程看代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read() {
int cnt = 0, f= 1;char c = getchar();
while (!isdigit(c)) {if (c == '-') f = -f; c = getchar();}
while (isdigit(c)) {cnt = (cnt << 3) + (cnt << 1) + (c ^ 48); c = getchar();}
return cnt * f;
}
int T, n, a[500010], dp[500010][3];
signed main() {
T = read();
while (T--) {
n = read();
for (register int i = 1; i <= n; ++i) a[i] = read();
dp[0][0] = 0, dp[0][1] = dp[0][2] = -1e18;
for (register int i = 1; i <= n; ++i)
if (a[i] > 0) {
dp[i][0] = max(max(dp[i - 1][0] + a[i], dp[i - 1][1] + a[i]), dp[i - 1][2] + a[i]);
dp[i][1] = max(dp[i - 1][1] - a[i], dp[i - 1][2] - a[i]);
dp[i][2] = dp[i - 1][2] + a[i];
} else {
dp[i][0] = -1e18;
dp[i][1] = max(max(dp[i - 1][0] + a[i], dp[i - 1][1] + a[i]), dp[i - 1][2] + a[i]);
dp[i][2] = max(dp[i - 1][1] - a[i], dp[i - 1][2] - a[i]);
}
printf("%lld\n", max(max(dp[n][0], dp[n][1]), dp[n][2]));
}
return 0;
}

T3太麻烦了不想写,先咕了

2019/10/24 CSP-S 模拟的更多相关文章

  1. 2019.10.24 CSP%你赛第二场d1t3

    题目描述 Description 精灵心目中亘古永恒的能量核心崩溃的那一刻,Bzeroth 大陆的每个精灵都明白,他们的家园已经到了最后的时刻.就在这危难关头,诸神天降神谕,传下最终兵器——潘少拉魔盒 ...

  2. 2019/10/17 CSP模拟 总结

    T1 补票 Ticket 没什么好说的,不讲了 T2 删数字 Number 很后悔的是其实考场上不仅想出了正解的方程,甚至连优化都想到了,却因为码力不足只打了\(O(n^2)\)暴力,甚至还因为细节挂 ...

  3. 2019.10.26 CSP%您赛第三场

    \(CSP\)凉心模拟^_^ --题源\(lqx.lhc\)等各位蒟蒻 题目名称 比赛 传递消息 开关灯 源文件名 \(competition.cpp\) \(message.cpp\) \(ligh ...

  4. 2019.10.15 CSP初赛知识点整理

    初赛需要的知识点整理如下: (1)计算机的硬件组成与基本常识 (2)单位/进制的转换 (3)进制/逻辑运算相关 (4)概率与期望 (5)排序的各种性质 (6)简单数据结构的使用(栈.队列.链表等) ( ...

  5. 2019.10.28 CSP%您赛第四场t3

    我写不动前两个了. 原谅一下. ____________________________________________________________________________________ ...

  6. 2019.10.29 CSP%您赛第四场t2

    我太菜了我竟然不会分层图最短路 ____________________________________________________________________________________ ...

  7. Alpha冲刺(1/10)——2019.4.24

    所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(1/10)--2019.4.24 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...

  8. 2019.11.9 csp-s 考前模拟

    2019.11.9 csp-s 考前模拟 是自闭少女lz /lb(泪奔 T1 我可能(呸,一定是唯一一个把这个题写炸了的人 题外话: 我可能是一个面向数据编程选手 作为一个唯一一个写炸T1的人,成功通 ...

  9. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

随机推荐

  1. Spring Cloud Feign设计原理

    什么是Feign? Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直 ...

  2. python生成当前时间的时间戳

    有时会用到时间戳,查了相关资料,在这里记一下 主要有两种方案: import datetime time_stamp = '{0:%Y-%m-%d-%H-%M}'.format(datetime.da ...

  3. angularJS ng-model与wdatapicker问题记录

    代码: <input type="text" placeholder="开始日期" ng-model="data_start" onF ...

  4. 在Linux(centos)下,安装Apache和PHP环境

    1001  ll /opt/lampp/modules/ 1002  history | grep httpd 1003  vim /etc/httpd/conf/httpd.conf 1004  v ...

  5. DEV的GridControl控件的选中列属性设置高光

    设置Run Designer=>Views=> OptionsSelection下面的: EnableAppearanceFocusedCell = False,//鼠标移开,失去焦点,仍 ...

  6. vc枚举本机端口信息

    关于查看本机端口信息,可能大多数人都知道在cmd下的netstat 命令,殊不知该命令在底层也是调用相关api来实现的,相关函数有:GetTcpTableGetExtendedTcpTableGetU ...

  7. sleep()与wait()的区别

    ①sleep()实现线程阻塞的方法,我们称之为“线程睡眠”,方式是超时等待,怎么理解?就是sleep()通过传入“睡眠时间”作为方法的参数,时间一到就从“睡眠”中“醒来”: ②wait()方法实现线程 ...

  8. python -m引发的对模块的认识

    python -m <pythonfile>: 以模块的方式运行 在文件内部,我们一般通过下面的代码来区分当前脚本,是作为模块导入,还是作为脚本直接运行. if __name__ == ' ...

  9. css---flex布局--容器

    http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool 容器设置 新版的为display为flex    ...

  10. csp-s模拟100,101T1,T2题解

    题面:https://www.cnblogs.com/Juve/articles/11799325.html 我太蒻了只会T1T2 组合: 欧拉路板子?不会呀... 然后打了个优化,防止暴栈 #inc ...