【日常学习】【模拟,树形DP-非递归!和拆点最短路】10.26.2015校内测试总结

博客讲述了如何使用树形DP和非递归模拟解决树上一条链的最大权值和问题,以及面对负权值时如何避免错误。作者详细解释了从根节点到叶子节点和从叶子节点到根节点的不同处理方式,并分享了在面对递归限制时转换为非递归方法的思路。此外,还介绍了一个与引力和密度变化相关的体力消耗最少路径问题,并给出了数据范围和样例解答。

距离NOIP还有九天

昨天忙,没能写总结,今天补上。XBOI第N次校内胡测,由Archon=iostream0=隔壁TY君提供,特别鸣谢隔壁LOI seavot神犇的支持

1.stone 题目即RQNOJ100 魔法师之恋

大致意思是有很多矩形像俄罗斯方块那样落下来,规则相同,尽量使高度最低,高度相同时尽量靠左,求最小高度

实际上是模拟,但不幸地我的水平方向模拟挂啦

然而还是把代码放上吧,这个代码全WA

//stone
//copyright by ametake
//line
//copyright by ametake
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;

const int maxn=2000+10;
bool a[maxn][25];
int low=1,high=1;//可以填的最低一行,最高一行 
int n,w;

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

int main()
{
	//freopen("1.txt","r",stdin);
	freopen("stone.in","r",stdin);
	freopen("stone.out","w",stdout);
	n=read();
    w=read();
    //for (int i=1;i<=maxn;i++) a[i][0]=w;
    int x;
    for (int c=1;c<=n;c++)
    {
    	x=read();
    	int now=low-1,hav=0,en=0;//记录目前搜索的层,有几个连续空格,如果满足条件空格终点 
    	while (hav<x)
    	{
    		now++;
    		hav=0;
    		for (int i=1;i<=w;i++)
    	    {
    		    if (!a[now][i])
    		    {
    		    	hav++;
    		    	if (hav==x)
    		    	{
    			    	en=i;
    			    	break;
			     	}
			    }
			    else hav=0;
		    }
		}
		int st=en-x+1;
		for (int i=now;i<=now+x-1;i++)
		{
			for (int j=st;j<=en;j++)
			{
				a[i][j]=true;
			}
		}
	    int r=now;
	    while (r>0)
	    {
	    	if (!a[r][w]) r--;
	    	else break;
		}
		low=r+1;
		high=max(high,now+x-1)            ;
	}
    printf("%d\n",high);
    return 0;
}

事实上,正解的思路是这样的(来自t14t41t神犇):以列为单位,记录此列的高度,然后把每个矩形当成移动窗口那样,从左到右移动,每次记录窗口所覆盖的列的最大高度,然后在这些最大高度里选最小的那个放下方块即可。


2.line

求树上一条链,使这条链上各边权值和最大,有负权!有负权!有负权!!!

因为有负权,这道题目不是求树的直径。听说隔壁LOI小盆友们BFS一片80,安之若素小妹妹摸头···我们所用的DFS或BFS球直径,是从叶子到叶子,在没有负权时作为最长链的确是对的。而这里的最长链由于有负权,举个最简单的例子,一个链三条边分别是-1,1,-1,显然应该输出1,但是如果直接求直径显然就WA了

那么怎么办呢?恩···树状DP是个好主意

具体怎么做?我们随便取一个点作为根,对于树上每一个点,记录其向下(也就是通向儿子们)的最长路径和次长路径(次长路是下一步用到的),再向上计算最长路径,加和就是通过这个点的最长链。最后扫一遍取MAX即可。事先预设ans==0 如果出现负数直接输出0,相当于路径只是一个节点

注意,向上求最长路不一定是通向祖先。这里所谓向上是指通向父节点方向的最长路径,可以从父亲或爷爷或其他祖先拐到另一棵子树中去。

打个比方,就是从当前节点往左走和往右走,分别求最长路径。往左,就必定要先走到父亲节点再决定下一步;往右,就要先走到某个儿子再决定下一步。

具体过程就看代码吧!注意,不用单独求父子关系,向下找不需要父子关系,向上找传递参数即可。

//line 树形DP cheer up!
//就算是一小时一道题今天下午也能把三道题搞出来啊!!!
//copyright by  ametake 每次写这一行都是满满的自豪感和欢喜
//看来我今天废话很多一定是因为工程量很大
//先写递归版本

#include
#include
#include
#include
#include
using namespace std;

const int maxn=100000+10;
const int oo=0x3f3f3f3f;

int up[maxn],down[maxn][2];//0 && 1
int n;
int hd[maxn],t[maxn*2],nxt[maxn*2],v[maxn*2],et;
bool vis[maxn];
int gen;

stack s;

inline void add(int &x,int &y,int &z) 
{
    et++;
    t[et]=y;
    v[et]=z;
    nxt[et]=hd[x];
<think>我们正在讨论的是Kafka相关命令返回的主题名称'__confluent.support.metrics'。 根据引用内容,我们注意到: - 引用[1][2]展示了使用`--zookeeper`参数列出主题描述主题信息的命令。 - 引用[3]提到,从Kafka 2.2版本开始,`--zookeeper`参数被标记为过时,推荐使用`--bootstrap-server`参数。但用户当前使用的命令仍然是`--zookeeper`,说明可能使用的是较旧版本的Kafka,或者命令按照旧版本编写。 - 用户执行的命令是:`./kafka-topics.sh --list --zookeeper 10.26.24.62:2181`,返回了`__confluent.support.metrics`。 关于`__confluent.support.metrics`主题: 这是一个由Confluent Platform(一个基于Apache Kafka的商用平台)自动创建的系统主题。Confluent Platform为了提供额外的监控管理功能,会使用一些特定的内部主题。其中,`__confluent.support.metrics`主题用于收集存储支持相关的指标数据,这些数据可以发送到Confluent支持部门以帮助诊断问题。 具体含义: - 该主题是Confluent的Support Metrics Reporter功能的一部分。当启用该功能时,它会定期将代理的指标数据发送到这个内部主题。 - 然后,Confluent支持工具可以读取这些数据以进行分析。 - 该主题通常不会被用户直接使用,而是由Confluent的内部工具使用。 因此,当用户使用`kafka-topics.sh --list`命令列出主题时,看到这个主题,说明环境中部署的是Confluent Kafka,并且启用了Support Metrics Reporter功能。 注意:在纯Apache Kafka中,不会出现这个主题。 总结回答: 1. 该主题是Confluent Platform特有的系统主题。 2. 用于存储发送给Confluent支持部门的指标数据。 3. 它的存在表明当前Kafka集群是Confluent Platform,并且启用了Support Metrics Reporter。 相关问题: 1. 如何禁用Confluent Platform的Support Metrics Reporter功能? 2. 除了`__confluent.support.metrics`,Confluent Platform还有哪些内部主题? 3. Apache KafkaConfluent Kafka的主要区别是什么? </think>### 理解`__confluent.support.metrics`主题的含义 当您执行命令`./kafka-topics.sh --list --zookeeper 10.26.24.62:2181`返回`__confluent.support.metrics`时,这表明您的 Kafka 环境使用的是 **Confluent Platform**(而非原生 Apache Kafka)。这个主题是 Confluent Platform 特有的系统主题,具体含义如下: --- #### 1. **Confluent Platform 的监控特性** `__confluent.support.metrics` 是由 Confluent Platform 自动创建的系统主题,用于: - **指标收集**:存储 Kafka 集群的运行时指标数据(如吞吐量、延迟、副本状态等) - **监控集成**:为 Confluent Control Center 提供监控数据支持[^1] - **诊断支持**:帮助 Confluent 技术支持团队远程分析集群状态 --- #### 2. **主题名称解析** ```bash __confluent.support.metrics ├── __confluent # 标识 Confluent 专有组件 ├── support # 支持服务相关功能 └── metrics # 存储监控指标数据 ``` - **双下划线前缀**:表示这是系统内部主题(类似 Kafka 原生的`__consumer_offsets`) - **不可删除性**:该主题受保护,直接删除会导致监控功能异常 --- #### 3. **数据存储内容** 主题内存储的典型数据结构(JSON 格式示例): ```json { "timestamp": 1672531200000, "broker_id": 1, "metrics": { "bytes_in_per_sec": 45218, "bytes_out_per_sec": 87329, "request_queue_size": 12, "under_replicated_partitions": 0 } } ``` --- #### 4. **与其他系统主题的关联** 在 Confluent Platform 中常同时出现的系统主题: | 主题名称 | 用途 | |----------|------| | `__confluent.support.metrics` | 核心监控指标存储 | | `_confluent-metrics` | 监控数据二级缓存 | | `_confluent-command` | 控制中心指令通道 | | `__consumer_offsets` | 原生 Kafka 消费者位移管理[^3] | --- #### 5. **运维建议** 1. **禁止手动操作**:无需直接读写此主题,Confluent Control Center 会自动管理 2. **存储监控**:定期检查其磁盘占用(通常小于集群总存储的 1%) 3. **版本兼容**:从 Confluent Platform 5.0 开始引入此主题 4. **迁移注意**:若从 Confluent 迁移回 Apache Kafka,需提前禁用相关监控组件 > **重要提示**:该主题的存在确认您的环境是 Confluent Platform,这意味着: > 1. 应优先使用`--bootstrap-server`参数而非`--zookeeper`[^3] > 2. 需遵循 Confluent 的许可协议(社区版/企业版) > 3. 可免费使用 Control Center 基础监控功能 --- ### 相关问题 1. Confluent Platform 与 Apache Kafka 的核心区别有哪些? 2. 如何通过 Control Center 访问 `__confluent.support.metrics` 中的监控数据? 3. `__consumer_offsets` `__confluent.support.metrics` 在数据存储机制上有何不同? 4. 迁移到原生 Apache Kafka 后,如何处理遗留的 Confluent 系统主题?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值