列表

详情


NC219654. SummerTrip

描述

Leo has started a job in a travel agency. His first task is to organize a summer trip to an exotic overseas city. During the summer season, events of various types take place in the city: sports matches, concerts, beach parties, and many others. At any given time, there is exactly one event taking place. Events of any particular type may take place more than once during the season. The itinerary of events that Leo offers to his clients cannot be chosen arbitrarily; the company requires them to form a so-called "good itinerary." A good itinerary is a consecutive sequence of at least two events in the summer season, where the first and last events are of different types, and they are both unique among all event types during the sequence. For example, if the first event in a good itinerary is a beach party, none of the other events during the itinerary can also be a beach party. There are no other restrictions on the event types in the sequence of a good itinerary.

Before he starts organizing the trip, Leo wants to know the total number of good itineraries that are possible given a calendar of events that will take place over the summer season.

输入描述


The input consists of one line with a string describing the sequence of event types in the summer season. All characters are lowercase English letters , with different letters represent different types of events. Character  of the string encodes the -th event of the summer. There are no blanks or spaces in the string.

The length of the input string is at least  and at most  characters.


输出描述

Print the number of good itineraries that exist for the given summer season.

示例1

输入:

abbcccddddeeeee

输出:

10

示例2

输入:

thenumberofgoodstringsis

输出:

143

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 141ms, 内存消耗: 736K, 提交时间: 2021-03-29 20:11:31

#include<bits/stdc++.h>
using namespace std;
set<int>q[30];
string str;
int ans;
int main(){
	cin>>str;
	for(int i=0;i<str.length();i++){
		ans+=q[str[i]-'a'+1].size();
		for(int j=1;j<=26;j++)
		q[j].insert(str[i]-'a'+1);
		q[str[i]-'a'+1].clear(); 
	}
	cout<<ans<<endl; 
}

上一题