1 条题解

  • 0
    @ 2025-4-3 19:13:51

    赋不重名

    根据题意,只需要判断"="左边没有出现过两个完全一样的字符串即可。

    根据数据量,两两直接比较会超时。所以可以采用一些高效的数据结构,比如set/unordered_set,这样的时间复杂度为 O(nlogn)O(nlogn) / O(n)O(n),代码如下:

    void Solve()
    {
    	int n;	cin >> n;
    	vector<string> str(n);
    	unordered_set<string> S;
    	bool flag = true;
    	for(int i=0; i<n; i++) 
    	{
    		string s;	cin >> s;
    		int idx = s.find('=');
    		assert(idx > 0);
    		str[i] = s.substr(0, idx);
    		if(S.count(str[i])) flag = false;
    		S.insert(str[i]);
    	}
    	
    	if(flag) cout << "yES\n";
    	else cout << "nO\n";
    } 
    
    • 1

    信息

    ID
    292
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    (无)
    递交数
    66
    已通过
    24
    上传者