首页 > 其他分享 >题解 P6491 [COCI2010-2011#6] ABECEDA

题解 P6491 [COCI2010-2011#6] ABECEDA

时间:2024-01-31 20:45:10浏览次数:34  
标签:int 题解 long COCI2010 P6491 include 2011

传送门

分析

两个字符大小关系不变,并且具有传递性,我们可以联想到拓扑排序来解决。

因此,我们就通过字符串的大小关系,推断出一些字符的大小关系,然后拓扑排序即可。

#include <bits/stdc++.h>
#include <vector>
#include <string>
#include <queue>
//#define int long long
using namespace std;
const int N = 1e5+5;
int n, m,top;
int d[N];
char st[N];
string s[N];
vector<int > lj[N];
bool vis[N];
inline void end1() {
	cout<<"?";
	exit(0);
}

inline void endd2() {
	cout<<"!";
	exit(0);
}
inline void fc(string s,string t) {
	int len=min(s.size(),t.size());
	for(int i=0; i<len; ++i) {
		if(s[i]==t[i]) continue;
		d[t[i]]++;
		lj[s[i]].push_back(t[i]);
		return ;
	}
	if(s.size()>t.size()) endd2();
	return ;
}


signed main() {
	cin>>n;
	for(int i=1; i<=n; ++i) {
		cin>>s[i];
		for(int j=0; j<s[i].size(); ++j) vis[s[i][j]]=1;
	}
	for(int i=1; i<n; ++i) for(int j=i+1; j<=n; ++j) fc(s[i],s[j]);
	queue<int > q;
	for(int i='a'; i<='z'; ++i) if(vis[i]&&!d[i]) q.push(i);
//	for(int i='a';i<='z';++i) cout<<d[i]<<" ";cout<<endl;
	while(!q.empty()) {
		int now=q.front();
		q.pop();
		if(!q.empty()) end1();
		st[++top]=now;
		for(auto to:lj[now]) if(!(--d[to])) q.push(to);
	}
	for(int i='a'; i<='z'; ++i) if(vis[i]&&d[i]) endd2();
	for(int i=1; i<=top; ++i) cout<<st[i];
	return 0;
}

标签:int,题解,long,COCI2010,P6491,include,2011
From: https://www.cnblogs.com/djh0314/p/18000085

相关文章

  • [ARC154E] Reverse and Inversion 题解
    题目链接点击打开链接题目解法\(\sumj-i\)是不好维护的,考虑把\(j-i\)拆成之和\(i,j\)相关的项可以得到:\(\sum\limits_{i<j}[p_i>p_j](j-i)=\sum\limits_{i=1}^ni(\sum\limits_{j=1}^{i-1}[p_j>p_i]-\sum\limits_{j=i+1}^n[p_j<p_i])=\sum\limits_{i=1}^ni(i-1-\sum\......
  • [AGC024E] Sequence Growing Hard 题解
    题目链接点击打开链接题目解法考虑如何添加数,使得\(\{a_1,...,a_i\}\)到\(\{a_1,...,x,a_j,...,a_i\}\)是合法的需要手玩一会才能发现合法条件很简单:\(x>a_j\)考虑对这个进行计数一个一个添元素是难维护的,现在假设有最终的序列,每个位置有\((v,dfn)\),分别为值和添加的次......
  • CF813E Army Creation 题解
    题目链接:CF或者洛谷并不是很难的题,关于颜色数量类问题,那么很显然,沿用经典的"HH的项链"思想去思考问题。由于涉及到了\(k\)个数的限制,我们观察到如果一个数在一个区间上有区间贡献:其中\(x_k\)表示为当前\(x\)的第前\(k+1\)个数,换句话来讲,\(x_k\)到当前的\(x\)所......
  • The XOR-longest Path 题解
    我们观察题干知道此题为单调递增(节点),这样我们就不用跑dfs了很显然的一件事是两点间的权值只与子节点有关所以我们用w1[v]=w1[u]*w就能更新v到根节点的权值然后我们循环放入字典树,再取最大的(由于这题数据特别水,所以没算v-u的w1)#include<bits/stdc++.h>usingnamespacestd;in......
  • 题解 P7309 [COCI2018-2019#2] Kocka
    传送门。题意一个$N\timesN$的矩形,有从四周往内望去的第一个位置的距离,问是否存在一个矩形满足我们的观察。分析先说说我这个蒟蒻想出来的巨麻烦的方法。首先先判断最简单的矛盾,就是左右穿插,上下穿插,这是第一步。//-1变成nfor(inti=1;i<=n;++i)if(L[i]+R[i]>=n)......
  • 题解 P6548 [COCI2010-2011#2] IGRA
    传送门。题意有\(A\),\(B\)两个人,有一个含\(n\)个字符的字符串。\(A\)始终取最右侧的字符,\(B\)可以取任意一个字符,问\(B\)所取的字符串能否胜过\(A\),以及\(B\)能取的最大字符串。分析首先,我们\(A\)肯定会选择当前的最小的字符,我们就可以先把字符按大小排序,字符相......
  • 【题解】CF185D - Visit of the Great
    【题解】CF185D-VisitoftheGreat设\(d=\gcd(k^{2^a}+1,k^{2^b}+1),(a<b)\),则:\[k^{2^a}\equivk^{2^b}\equiv-1(\bmodd)\]所以\[1\equiv(-1)^{2^{b-a}}\equivk^{2^a*2^{b-a}}\equivk^{2^b}\equiv1(\bmodd)\]所以\(d\)为\(1\)或\(2\)。设\(t......
  • RocketMQ应用-消费幂等性问题解决
    重复消费产生原因生产者多次投递-投递时服务端接收后客户端网络原因确认失败,重新投递消费者扩容重试-消费者扩容导致正在消费的消息没有正常应答,服务端重新推送重复消费解决方案给消息增加唯一key,消费时校验key是否已经消费过消费者控制消息的幂等性(多次同样的操作结果一......
  • 9.【题解】计算器
    题解\(BSGS\)(拔山盖世)其实叫\(Baby\)\(Step\)\(Giant\)\(Step\)(大步小步)\(qwq\),事实上还有\(ex\)\(BSGS\),但是这里只写\(BSGS\)。当\(\gcd(x,y)=1\)时,\(BSGS\)可以用\(\sqrtn\)的时间复杂度求解\(\largey^x\equivz\pmodz\)的问题。(原根是\(\largex^a......
  • P6824 「EZEC-4」可乐 题解
    题目链接:可乐一开始想着0-1Trie,枚举\(x\)去写,然后判断就行了。然后想起南京区域赛的C题,其实和这个也有点大同小异的感觉,可以用更朴素的办法,找到对于一个\(a_i\)而言,满足题意的所有\(x\)去\(+1\)。这玩意很容易办到的,稍微讨论下:类似0-1Trie的按位讨论,从高位开始,我......