String of CCPC ZOJ - 3985【思维 + 规律】

本文探讨了一种针对特定字符串模式的优化策略,旨在通过插入最少的字符以最大化CCPC模式的数量,同时考虑了插入操作的成本。文章分析了不同字符串特征,并提出了一套高效的算法来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3985

 

题意:T组     n 和 一个n长度只含C、P的字符串    其中可以买 C 或 P 插入  买的代价是:第i次买 代价是(i - 1)   
然后最后有多少CCPC   设有k个     ans = k - 代价和   求ans的最大值

 

不限买数   随便插位置   是不是很没思路
可以发现
第 i 次   1   2    3    4    5
代价      0   1    2    3    4

CCPC
(C)CPC       C(C)PC       CC(P)C     CCP(C)
有CPC      CCC    CCP  这三种特征 可以插 从而   可以构成CCPC

 

可以得出结论:最多只需 插一个字符

因为你插一个字符   理想结果就 构成多了一个CCPC
不会存在 只插一个字符  能构成  一个以上  CCPC      CCP(C)CPC   比如插入括号C  本身就有一个CCPC
又因为代价  可以猜到一些出题思路:插一个 最好构成多一个CCPC   第1次 代价0  我肯定是赚的   
而第2次买  字符  就没得赚 还亏

现在问题就是:先看有多少个CCPC  设cnt个  然后再看有没有上面的三个特征  有则cnt + 1
然而并没有那么简单:这种插入字符什么的   要想想插入后会不会影响原来的

CPC  非CCPC  就+1
CCC  注意 插在了中间CC(P)C    所以如果CCCPC   就破坏了一个CCPC  所以如果这样就不要插了  否则+1   
CCP  非CCPC  否则+1

 

#include <iostream>
#include <string>
#include <cstdio>

using namespace std;

int main() {
	int t;
	scanf("%d", &t);
	while (t--) {
		int n, cnt = 0;
		int done = 0;
		string str;
		cin >> n >> str;
		for (int i = 0; i < str.size(); ++i) {
			if (str.substr(i, 4) == "CCPC") {
				cnt++;
				i += 2;
				continue;//i加了2调到P  然后for的自增去到i 下次就从那个C开始 
			} 
			if (!done) {
				string tmp = str.substr(i, 3);
				if (tmp == "CCC" || tmp == "CPC" || tmp == "CCP") {
					if (tmp == "CCC" && str.substr(i + 1, 4) == "CCPC") {//CCCPC这种 
						continue;
					}
					cnt++;
					done = 1;
				}
			}
		}
		printf("%d\n", cnt);
	}
	return 0;
}

 

内容概要:本文探讨了在MATLAB/SimuLink环境中进行三相STATCOM(静态同步补偿器)无功补偿的技术方法及其仿真过程。首先介绍了STATCOM作为无功功率补偿装置的工作原理,即通过调节交流电压的幅值和相位来实现对无功功率的有效管理。接着详细描述了在MATLAB/SimuLink平台下构建三相STATCOM仿真模型的具体步骤,包括创建新模型、添加电源和负载、搭建主电路、加入控制模块以及完成整个电路的连接。然后阐述了如何通过对STATCOM输出电压和电流的精确调控达到无功补偿的目的,并展示了具体的仿真结果分析方法,如读取仿真数据、提取关键参数、绘制无功功率变化曲线等。最后指出,这种技术可以显著提升电力系统的稳定性与电能质量,展望了STATCOM在未来的发展潜力。 适合人群:电气工程专业学生、从事电力系统相关工作的技术人员、希望深入了解无功补偿技术的研究人员。 使用场景及目标:适用于想要掌握MATLAB/SimuLink软件操作技能的人群,特别是那些专注于电力电子领域的从业者;旨在帮助他们学会建立复杂的电力系统仿真模型,以便更好地理解STATCOM的工作机制,进而优化实际项目中的无功补偿方案。 其他说明:文中提供的实例代码可以帮助读者直观地了解如何从零开始构建一个完整的三相STATCOM仿真环境,并通过图形化的方式展示无功补偿的效果,便于进一步的学习与研究。
### CCPC 2023 H题 解析 关于CCPC 2023 H题的具体题目描述尚未公开,但从以往的比赛惯例以及类似的题目解析可以推测其可能涉及的内容和技术要点。以下是基于已有参考资料和专业知识对该类问题的解答框架。 #### 1. **问题背景** CCPC(Chinese Collegiate Programming Contest)作为国内重要的编程竞赛之一,通常会设计具有挑战性的算法问题来测试参赛者的逻辑思维能力和编码技巧。H题通常是比赛中的难点之一,往往涉及到复杂的算法模型或数据结构的应用[^2]。 #### 2. **潜在的技术方向** 根据过往的经验,H题可能会覆盖以下几个方面: - 动态规划 (Dynamic Programming)[^1] - 构造性问题 (Construction Problems)[^4] - 数学优化 (Mathematical Optimization) 假设该题属于动态规划类别,则需关注状态转移方程的设计;如果是构造性问题,则重点在于如何通过有限操作达到目标条件。 #### 3. **通用解题策略** 无论具体主题为何种类型,在面对高难度赛题时可遵循如下方法论: ##### (1)深入理解题目需求 仔细阅读并反复确认输入输出的要求及其约束条件,确保不会遗漏任何细节信息[^3]。 ##### (2)选取合适的算法工具箱 依据实际场景挑选最匹配的方法论,比如当存在重叠子问题且具备最优子结构性质时优先选用DP技术[^1]。 ##### (3)编写清晰易懂的代码实现 采用模块化的方式分步完成整个功能开发流程,并辅以充分注释说明每一部分的作用机制。 ```cpp // 示例伪代码片段展示基本框架布局 #include <bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; // 输入规模参数 vector<long long> dp(n+1, INF); // 初始化dp数组,默认极大值表示未访问过 dp[0]=0; for(int i=1;i<=n;i++){ for(auto &coin : coins){ if(i >= coin && dp[i - coin]+costs[coin]<dp[i]){ dp[i]=dp[i - coin]+costs[coin]; } } } cout << (dp[n]==INF ? -1 : dp[n])<< "\n"; } ``` 上述例子仅作示意用途,真实情况下应严格依照官方给定的数据范围调整变量类型及边界处理方式。 #### 4. **复杂度考量** 对于大规模实例而言,效率至关重要。因此除了正确率之外还需兼顾运行时间和内存消耗指标。一般建议尽可能降低渐近时间开销至O(NlogN)甚至更低级别。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值