CodeForces 5A Chat Server's Outgoing Traffic

Polycarp is working on a new project called "Polychat". Following modern tendencies in IT, he decided, that this project should contain chat as well. To achieve this goal, Polycarp has spent several hours in front of his laptop and implemented a chat server that can process three types of commands:

  • Include a person to the chat ('Add' command).
  • Remove a person from the chat ('Remove' command).
  • Send a message from a person to all people, who are currently in the chat, including the one, who sends the message ('Send' command).

Now Polycarp wants to find out the amount of outgoing traffic that the server will produce while processing a particular set of commands.

Polycarp knows that chat server sends no traffic for 'Add' and 'Remove' commands. When 'Send' command is processed, server sends l bytes to each participant of the chat, where l is the length of the message.

As Polycarp has no time, he is asking for your help in solving this problem.

Input file will contain not more than 100 commands, each in its own line. No line will exceed 100 characters. Formats of the commands will be the following:

  • +<name> for 'Add' command.
  • -<name> for 'Remove' command.
  • <sender_name>:<message_text> for 'Send' command.

<name> and <sender_name> is a non-empty sequence of Latin letters and digits. <message_text> can contain letters, digits and spaces, but can't start or end with a space. <message_text> can be an empty line.

It is guaranteed, that input data are correct, i.e. there will be no 'Add' command if person with such a name is already in the chat, there will be no 'Remove' command if there is no person with such a name in the chat etc.

All names are case-sensitive.

Print a single number — answer to the problem.

样例:

+Mike
Mike:hello
+Kate
+Dmitry
-Dmitry
Kate:hi
-Kate
9
+Mike
-Mike
+Mike
Mike:Hi   I am here
-Mike
+Kate
-Kate
14


cf上a题。。。。训练看不懂题目难受的一匹。。。。

1.题意:给定信息,名字前有+则表示将此人加入聊天群,-代表把此人从聊天群删除,
如果名字后边有:则表示此人说话,群中有几个人,则要发送strlen(str)*num个字节,
求通过给定的信息,最终发送的字节数;

2.思路:求出num来,乘以说的字节数即可。。。

#include<bits/stdc++.h>
using namespace std;
int main(){
	char c,b[1000];
	int a = 0,ans = 0;
	while(cin >> c){
		if(c == '+'){
			a++;	
		}
		if(c == '-'){
			a--;
		}
		if(c == ':'){
			gets(b);
			ans += strlen(b) * a;
		}
	}
	cout << ans << endl;
} 

### 关于 Codeforces 上 'Neo's Escape' 的解决方案 在解决 Codeforces 平台上的 `'Neo's Escape'` 问题时,通常需要考虑图论中的最短路径算法以及动态规划的应用。以下是对此类问题可能涉及的核心概念和技术的分析: #### 图论与最短路径 该问题可以被建模为在一个加权有向图中寻找从起点到终点的最优路径。Dijkstra 算法是一种常用的方法来计算单源最短路径[^1]。如果边权重均为正数,则 Dijkstra 是一种高效的选择。 ```python import heapq def dijkstra(graph, start): distances = {node: float('inf') for node in graph} distances[start] = 0 priority_queue = [(0, start)] while priority_queue: current_distance, current_node = heapq.heappop(priority_queue) if current_distance > distances[current_node]: continue for neighbor, weight in graph[current_node].items(): distance = current_distance + weight if distance < distances[neighbor]: distances[neighbor] = distance heapq.heappush(priority_queue, (distance, neighbor)) return distances ``` #### 动态规划优化 对于某些变体问题,除了简单的最短路径外,还需要引入状态转移方程来进行进一步优化。例如,在存在多种属性约束的情况下(如时间、能量),可以通过定义多维数组 `dp[i][j]` 来表示到达节点 i 使用 j 单位资源所需的最小代价[^2]。 #### 讨论与实现细节 社区内的讨论往往围绕如何处理特殊边界条件展开,比如是否存在负环路或者超大数据集下的性能调优等问题。此外,部分参赛者会分享他们关于数据结构选取的经验教训,例如优先队列 vs. 堆栈的不同适用场景[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值