◇例题·III◇ 木と整数 / Integers on a Tree 只需要一个美妙的转换,这道题就会变得无比美妙…… 来源:+AtCoder 2148(ARC-063 E)+ ◆ 题目大意 给定一棵n个节点(节点被编号为1~n)的树,有K (1≤K≤n) 个节点已经被填上一个数字,现在你需要把剩余的节点填上数字,使得被同一条边相连的两个节点数值相差恰好为1. 若可以实现,先输出一行"Yes",接下来n行,每行输出一个整数,第i+1行表示节点i的数值:否则输出"No"…
◆例题·6◆ 电压机制 周六日常模拟赛……已经不知道该说什么了(感觉做不出来的都是好题) ▷ 题目 (终于不用自己翻译英文题了╮(╯-╰)╭) [问题描述] 科学家在“无限神机”(Infinity Machine)找到一个奇怪的机制,这个机制有N个元件,有M条电线连接这些元件,所有元件都是连通的.两个元件之间可能有多条电线连接. 科学家对这些元件可以任意地设置为“高电压”和“低电压”两种模式,如果一条电线的一端为高电压,另一端为低电压,这条电线就会产生电流. 为了安全的研究“无限神机”,科学家需…
◇例题·V◇ Gap 搜索训练开始了……POJ的数据比ZOJ强多了!!看来不得不写正解了 +传送门+ ◇ 题目 <简要翻译> 有一个四行九列的矩阵——在第1~4行.2~8列上填上数字 11~17,21~27,31~37,41~47(不一定有序).例子如下: 现在我们将数字11移动在第一行第一列,21移动在第二行第一列,31移动在第三行第一列,41移动在第四行第一列,上面的例子移动后如下: 若一个数x(不是最右边的一列)的右边位置是空位,设x十位为a,个位为b,若b≠7,我们可以把数(10*a+…
◇例题·II◇ Berland and the Shortest Paths 题目来源:Codeforce 1005F +传送门+ ◆ 简单题意 给定一个n个点.m条边的无向图.保证图是连通的,且m≥n-1. 以首都(1节点)为根节点生成最小树.树的值定义为每个节点的深度和(根节点深度0).举个例子: 而我们知道,可能有多种情况使树的权值最小,题目给出了一个整数k,如果最小树的生成方案数为ans,当 ans≤k 时,将 ans 种方案全部输出:当 ans>k 时,任意输出 k 种不同生成方案即可…
◇例题·IV◇ Wooden Sticks 借鉴了一下 Candy? 大佬的思路 +传送门+ (=^-ω-^=) 来源:+POJ 1065+ ◆ 题目大意 有n个木棍以及一台处理木棍的机器.第i个木棍用二元组 (li,wi) 表示,li 为它的长度,wi 为它的重量. 机器可以连续处理木棍{a[1],a[2]...a[m]}当且仅当对于每一个i(1≤i<m) la[i]<la[i+1] 且 wa[i]<wa[i+1] .机器连续处理木棍的时间是1单位.你需要将这些木棍按一定顺序在机器中处…
◇例题·I◇ Snuke's Subway Trip 题目来源:Atcoder Regular 061 E题(beta版) +传送门+ 一.解析 (1)最短路实现 由于在同一家公司的铁路上移动是不花费的,只有在换乘时会花费1日元.我们可以视换乘的花费为点权——当换乘到不同公司时花费1,同一家公司时花费0. 对于这种点权因情况而变化的题,最常见的做法便是拆点.设节点 u 相连的铁路由 c1,c2,...,cp p个公司修建,则将节点u拆分为节点 uc1~ucp,点uci表示到达点u的铁路是由公司c…
http://acm.hdu.edu.cn/showproblem.php?pid=1028 dp[i][j]表示数值为i,然后最小拆分的那个数是j的时候的总和. 1 = 1 2 = 1 + 1 .  2 = 2 3 = 1 + 1 + 1. 3 = 2 + 1. 3 = 3 那么可以分两类, 1.最小拆分数是j,这个时候dp[i][j] = dp[i - j][j].加一个数j,使得它变成i 2.最小拆分数严格大于j,这个时候就没得加上j了.就是dp[i][j + 1] 所以dp[i][j]…
虽然有点难,但是这套题都挂了一个月了啊喂…… 网上模板好多……最后还是抄了kuangbin聚聚的,毕竟好多模板都是抄他的,比较习惯…… POJ 3468 题意:给n个数,两种操作,区间整体加一个数,或者区间求和. 题解:把区间的前一个数挪到根,区间后一个数挪到根的右子树,根的右子树的左子树就是要处理的区间... SplayTree是一个二叉排序树,它所保存的顺序是数字的编号,所以无论怎样旋转,编号的顺序都不会变... 在首尾各插入一个结点,这样求整个区间的时候也可以找到前一个数和后一个数...…
Description 给定一棵\(n\)个点的树,其中若干个点的权值已经给出.现在请为剩余点填入一个值,使得相邻两个点的差的绝对值恰好为1.请判断能否实现,如果能,请将方案一并输出. Solution 卡了一会,终于想出来了. 首先从深度奇偶性和权值奇偶性这一方面考虑:如果所有已知点的权值与深度的奇偶性关系不全一样,则一定无解. 然后考虑怎么构造.如果用已填点将树分成若干块,显然每一块是独立的,现在考虑单独一块. 直接想有一点困难,所以我们先尝试考虑每一个空点\(u\)能填什么数:考虑这一个块…
传送门 先考虑什么时候不合法. 第一是考虑任意两个特殊点的权值的奇偶性是否满足条件. 第二是考虑每个点的取值范围是否合法. 如果上述条件都满足的话就可以随便构造出一组解. 代码: #include<bits/stdc++.h> #define N 100005 #define inf 0x3f3f3f3f using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=get…