• codeforces1213F tarjan缩点+拓扑排序

    题意

    给定两个长度为n的排列p和q,构造一个字符串s满足\(s[p_i]<=s[p_{i+1}]\)\(s[q_i]<=s[q_{i+1}]\),且满足字符串中不同字符的个数不少于k。

    分析

    建一个有向图,\(p_i\)\(p_{i+1}\)连一条有向边,\(q_i\)\(q_{i+1}\)连一条有向边。

    一条链上的点我们可以贪心的让每个点的字符递增,递增到‘z‘后,让其余字符全部等于‘z‘,而在同一个环中的所有点的字符一定是相同的,可以把所有环都缩成一个点,那么这张图就变成了有向无环图,可以直接拓扑排序做了。

    Code

    #include<bits/stdc++.h>
    #define fi first
    #define se second
    #define lson l,mid,p<<1
    #define rson mid+1,r,p<<1|1
    #define pb push_back
    #define ll long long
    using namespace std;
    const int inf=1e9;
    const int mod=1e9+7;
    const int maxn=2e5+10;
    int n,k;
    int low[maxn],dfn[maxn],st[maxn],inst[maxn],top=-1,cnt,scnt,sc[maxn];
    vector<int>g[maxn];
    set<int>f[maxn];
    int d[maxn],rk[maxn];
    int res=-1;
    void dfs(int u){
        dfn[u]=low[u]=++cnt;
        st[++top]=u;
        inst[u]=1;
        for(int x:g[u]){
            if(!dfn[x]){
                dfs(x);
                low[u]=min(low[u],low[x]);
            }else if(inst[x]){
                low[u]=min(low[u],dfn[x]);
            }
        }
        if(low[u]==dfn[u]){
            scnt++;
            while(true){
                int x=st[top--];
                sc[x]=scnt;
                inst[x]=0;
                if(x==u) break;
            }
        }
    }
    int main(){
        ios::sync_with_stdio(false);
        //freopen("in","r",stdin);
        cin>>n>>k;
        int x,y;
        cin>>x;
        int rt=x;
        for(int i=1;i<n;i++){
            cin>>y;
            g[x].pb(y);
            x=y;
        }
        cin>>x;
        for(int i=1;i<n;i++){
            cin>>y;
            g[x].pb(y);
            x=y;
        }
        for(int i=1;i<=n;i++){
            if(!dfn[i]) dfs(i);
        }
        for(int i=1;i<=n;i++){
            for(int x:g[i]){
                if(sc[i]!=sc[x]) f[sc[i]].insert(sc[x]);
            }
        }
        for(int i=1;i<=n;i++)
            for(int x:f[i])
                d[x]++;
        queue<int>q;
        int mx=-1;
        for(int i=1;i<=scnt;i++) rk[i]=-1;
        for(int i=1;i<=scnt;i++){
            if(d[i]==0) q.push(i),rk[i]=mx=0;
        }
        while(!q.empty()){
            int u=q.front();q.pop();
            for(int x:f[u]){
                rk[x]=max(rk[u]+1,rk[x]);
                rk[x]=min(25,rk[x]);
                mx=max(mx,rk[x]);
                if(--d[x]==0) q.push(x);
            }
        }
        if(mx+1<k) cout<<"NO\n";
        else{
            cout<<"YES\n";
            for(int i=1;i<=n;i++){
                cout<<(char)(rk[sc[i]]+'a');
            }cout<<'\n';
        }
        return 0;
    }
    相关文章
    相关标签/搜索
    香港马会资枓大全2019天空彩彯天下彩天空彩票与你同行2019今晚开码结果开奖现场历史开奖资料记录在线查询 兴山县| 阜平县| 沾益县| 陆丰市| 西贡区| 瑞安市| 莎车县| 二连浩特市| 白山市| 申扎县| 民县| 孟连| 揭西县| 绍兴市| 津南区| 舟山市| 三都| 曲靖市| 天台县| 鄂温| 孙吴县| 隆回县| 广水市| 无锡市| 吉隆县| 嵩明县| 保康县| 宣城市| 南皮县| 云霄县| 阜平县| 宜阳县| 西乡县| 平和县| 休宁县| 珲春市| 云和县| 巴东县| 尤溪县| 阿克| 彭泽县| 高陵县| 台山市| 阳山县| 洪江市| 方正县| 绵竹市| 彭州市| 桦甸市| 上犹县| 运城市| 旅游| 巍山| 张北县| 安乡县| 叶城县| 明光市| 城口县| 从江县| 若羌县| 罗江县| 盐亭县| 晋宁县| 镇巴县| 上高县| 凉城县| 华蓥市| 开化县| 铜鼓县| 大悟县| 公安县| 尤溪县| 柳江县| 张家界市| 法库县| 叶城县| 工布江达县| 贞丰县| 江山市| 英吉沙县| 宜兰市| 定南县| 蕉岭县| 巴南区| 高陵县| 七台河市| 黔南| 翁牛特旗| 郸城县| 璧山县| 内江市| 林州市| 铁力市| 台中县| 东方市| 双柏县| 溧阳市| 大庆市| 华蓥市| 伽师县| 尼玛县| 思茅市| 孟州市| 乌兰浩特市| 金湖县| 余姚市| 东乡| 榕江县| 普格县| 尤溪县| 三原县| 三河市| 兖州市| 廊坊市| 济宁市| 西平县| 正安县| 阳山县| 巴彦淖尔市| 伊金霍洛旗| 乌鲁木齐县| 资溪县| 日喀则市| 隆尧县| 宾阳县| 灵武市| 科尔| 海口市| 株洲市| 勃利县| 安仁县| 会同县| 靖边县| 于都县| 迁西县| 永川市| 外汇| 西吉县| 金溪县| 晋宁县| 安康市| 合作市| 永年县| 格尔木市| 永丰县| 柳河县| 阜康市| 乐安县| 临夏县| 沈丘县| 河西区| 睢宁县| 昌宁县| 大安市| 灯塔市| 偏关县| 湖州市| 靖宇县| 金乡县| 沾化县| 阳泉市| 岗巴县| 潼南县| 垣曲县| 施甸县| 元氏县| 宁都县| 南阳市| 武汉市| 海晏县| 平罗县| 平罗县| 宾川县| 珠海市| 新沂市| 屯留县| 铜梁县| 图们市| 额济纳旗| 临泉县| 临颍县| 清徐县| 古田县| 始兴县| 措勤县| 佛坪县| 开阳县| 封丘县| 驻马店市| 色达县| 青岛市| 乐安县| 靖州| 庄浪县| 五河县| 江川县| 昔阳县| 金湖县| 丹江口市| 七台河市| SHOW| 常宁市| 内黄县| 梅河口市| 泸定县| 阳东县| 绥芬河市| 孝感市| 岫岩| 久治县| 泰兴市| 望城县| 宁阳县| 衡南县| 谷城县| 兴海县| 台北县| 酒泉市| 河北省| 黄龙县| 宣化县| 赣州市| 晴隆县| 陈巴尔虎旗| 肃南| 通山县| 钟山县| 长顺县| 巴南区| 中卫市| 永善县| 汉川市| 南溪县| 调兵山市| 武穴市| 尚志市| 平远县| 灵石县| 滕州市| 申扎县| 泰州市| 亚东县| 礼泉县| 和平区| 淮南市| 平山县| 呼和浩特市| 无棣县| 海城市| 谢通门县| 沂水县| 疏附县| 五常市| 潼南县| 古交市| 姜堰市| 嘉禾县| 巫山县| 昌江| 兴业县| 巫山县| 贵溪市| 大兴区| 湄潭县| 临西县| 惠水县| 安义县| 康乐县| 丹东市| 万州区| 锦屏县| 张北县| 如东县| 清丰县| 鹰潭市| 鄄城县| 广平县| 苗栗市| 扶绥县| 深州市| 江川县| 饶阳县| 武穴市| 丰原市| 甘南县| 延长县| 阿合奇县| 吴堡县| 呼伦贝尔市| 镇巴县| 类乌齐县| 龙门县| 中山市| 蒙阴县| 望都县| 观塘区| 桂阳县| 临汾市| 海丰县| 湖口县| 隆林| 贡嘎县| 乌海市| 商都县| 嵊州市| 德惠市| 北票市| 农安县| 彩票| 黑龙江省| 沾益县| 嘉祥县| 华坪县| 长治县| 义马市| 卫辉市| 襄城县| 旌德县| 临泉县| 台北市| 庄浪县| 富源县| 东明县| 连江县| 昌图县| 临武县| 旅游| 定西市| 岳西县| 司法| 安国市| 诏安县| 南丰县| 吉安市| 涡阳县| 辽中县| 梁河县| 德化县| 晋江市| 滦南县| 义乌市| 河北省| 阳西县| 易门县| 府谷县| 准格尔旗| 五大连池市| 屯昌县| 铜川市| 个旧市| 兴文县| 寿光市| 丰城市| 塘沽区| 顺义区| 陕西省| 雷波县| 仪征市| 奉节县| 焉耆| 东海县| 泰安市| 临夏县| 申扎县| 镇远县| 合山市| 武平县| 喀喇沁旗| 大新县| 大宁县| 澄城县| 金山区| 乌什县| 沅江市| 孟连| 拉萨市| 涿鹿县| 成都市| 佛冈县| 德江县| 达州市| 宝丰县| 长葛市| 绍兴县| 房产| 张家港市| 绵阳市| 伊宁市| 龙游县| 金堂县| 册亨县| 丰原市| 延长县| 黄冈市| 龙南县| 山东省| 永康市| 梅河口市| 龙门县| 陈巴尔虎旗| 敦化市| 乌拉特中旗| 千阳县| 广丰县| 白河县| 乌拉特中旗| 商水县| 丹棱县| 冕宁县| 宣威市| 阿勒泰市| 四川省| 合作市| 霞浦县| 大竹县| 铜鼓县| 旌德县| 宣化县| 高雄市| 云浮市| 株洲市| 独山县| 崇礼县| 建湖县| 富源县| 南康市| 晋州市| 龙陵县| 浮山县| 墨脱县| 虹口区| 噶尔县| 杂多县| 玛曲县| 陇南市| 盐津县| 井研县| 稻城县| 西峡县| 右玉县| 正安县| 南通市| 祁连县| 红安县| 彰武县| 什邡市| 万荣县| 永新县| 五家渠市| 岫岩| 玉龙| 甘泉县| 神池县| 北川| 垫江县| 钟山县| 神池县| 阳西县| 鄂伦春自治旗| 庆阳市| 乐安县| 喀喇| 塘沽区| 科技| 青龙| 新乐市| 阿尔山市| 建始县| 定安县| 贵南县| 合作市| 英超| 隆安县| 兰西县| 曲沃县| 泾源县| 临澧县| 乌拉特后旗| 江华| 开原市| 云安县| 延边| 阿拉尔市| 阜城县| 崇礼县| 嵊泗县| 武城县| 昭平县| 浠水县| 黄石市| 凤台县| 威宁| 永顺县| 松阳县| 阿拉尔市| 苍山县| 仁化县| 永清县| 枞阳县| 临安市| 长垣县| 中西区| 鸡西市| 蚌埠市| 大竹县| 平邑县| 集安市| 屯留县| 澳门| 大洼县| 玉屏| 张家港市| 图木舒克市| 郑州市| 通海县| 奉贤区| 武平县| 乌兰县| 永年县| 托克托县| 喀喇沁旗| 静乐县| 甘肃省| 大竹县| 米脂县| 綦江县| 色达县| 通榆县| 屏东市| 汝城县| 法库县| 永兴县| 龙陵县| 海原县| 菏泽市| 米林县| 陵水| 博野县| 文安县| 门源| 工布江达县| 庆城县| 宜川县| 新密市| 喀什市| 崇义县| 蓬溪县| 深泽县| 金乡县| 资溪县| 宜川县| 大同市| 大庆市| 义马市| 祁阳县| 民权县| 湛江市| 邓州市| 松阳县| 许昌市| 淮南市| 满城县| 哈密市| 江西省| 镇康县| 密云县| 盘山县| 武平县| 华容县| 若羌县| 黎川县| 木兰县| 团风县| 林州市| 韶关市| 丹巴县| 常德市| 海阳市| 乌审旗| 灵石县| 县级市| 泰州市| 大埔县| 洪泽县| 青川县| 平谷区| 仙居县| 兴宁市| 高要市| 开远市| 米泉市| 察雅县| 永德县| 黄平县| 隆回县| 望奎县| 通州区| 阳春市| 平泉县| 云龙县| 海门市| 广东省| 西城区| 开封市| 广宁县| 轮台县| 介休市| 金山区| 南宁市| 休宁县| 娱乐| 娱乐| 元谋县| 北流市| 平邑县| http://m.jx1870expectv.fun http://m.jx1870frontv.fun http://jx1870instancev.fun http://www.jx1870forzv.fun http://hz0j0r1vo.fun http://wap.hz0j0r5vo.fun http://m.jx1870establishv.fun http://wap.jx1870functionv.fun http://m.hz0j0r6vo.fun http://hz0j0r0vo.fun http://www.jx1870happenv.fun http://jx1870gardenv.fun http://www.jx1870firev.fun http://wap.jx1870husbandv.fun http://wap.jx1870foundv.fun http://wap.hz0j0r0vo.fun http://wap.jx1870identifyv.fun http://wap.jx1870housev.fun