首页 > 其他分享 >O - DAG优化

O - DAG优化

时间:2023-05-25 13:34:31浏览次数:51  
标签:200 ch return int char DAG build 优化

#include<bits/stdc++.h>
using namespace std;
struct Node{
    char ch;//下
    vector<char> val;//右
    int left=-1,right=-1;//子节点
}tree[200];
int m=0;
bool flag[200];
string ans[200];
bool finds(int x,char ch){
    for(char k:tree[x].val){
        if(k==ch) return true;
    }
    return false;
}
int build(char ch){
    for(int i=0;i<m;i++){
        if(tree[i].ch==ch || finds(i,ch)) return i;
    }
    tree[m].ch=ch;
    return m++;
}
void build_op(char k,char op,int l,int r){
    for(int i=0;i<m;i++){
        Node x=tree[i];
        if(x.ch==op && x.left==l && x.right==r) {
            tree[i].val.push_back(k);
            return;
        }

    }
    //这里写外面
        tree[m].ch=op;
        tree[m].val.push_back(k);
        tree[m].left=l;
        tree[m].right=r;
        m++;
}
char gets(int x){
    Node k=tree[x];
    if(k.val.size()==0) return k.ch;
    for(char t:k.val){
        if(t=='A'|| t=='B') return t;//优先选a/b的
    }
    return k.val[0];
}
void dfs(int x){
    if(tree[x].left!=-1 && tree[x].right!=-1){
        flag[x]=true;
        dfs(tree[x].left);
        dfs(tree[x].right);
    }
}
void get_ans(char k){
    for(int i=m-1;i>=0;i--){
        if(ans[i][0]==k) {
            dfs(i);
            return;
        }
    }
}
int main(){
    int t;cin>>t;
    for(int i=0;i<t;i++){
        string s;cin>>s;
        int l=build(s[2]),r=build(s[4]);
        build_op(s[0],s[3],l,r);
    }
    for(int i=0;i<m;i++){
        Node x=tree[i];
        if(x.left!=-1 && x.right!=-1) {
            ans[i].push_back(gets(i));
            ans[i].push_back('=');
            ans[i].push_back(gets(x.left));
            ans[i].push_back(x.ch);
            ans[i].push_back(gets(x.right));
        }
    }
    get_ans('A'),get_ans('B');
    for(int i=0;i<m;i++){
        if(flag[i]) cout<<ans[i]<<endl;
    }
}

标签:200,ch,return,int,char,DAG,build,优化
From: https://www.cnblogs.com/kingwz/p/17430901.html

相关文章

  • 火山引擎DataTester:如何使用A/B测试优化全域营销效果
     当前,营销技术步入了全渠道、全周期的全域时代,随着广泛的数据积累,数据科学技术在营销领域发挥着越来越重要的作用,从消费者人群洞察到智能化信息广告投放,营销的提效让企业得以在转化的每个环节提升影响力,拓展营销的可能性。本文以火山引擎A/B测试(DataTester)应用为例,讲述在企业在......
  • AI智慧安监视频平台EasyCVR用户管理细节优化
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,可支持多协议接入,包括市场主流标准协议与厂家私有协议及SDK,如:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、宇视SDK等。平台丰富的视频能力包括:视频监控直播、录像、......
  • 某大厂优化中,23届瑟瑟发抖ing
    了解校招、分享校招的学长来了。昨天今天的某大厂优化传闻想必大家都有所耳闻。官方给出的解释的:正常的人力调整。只不过,这调整的动静真吓人,拿着Offer等待入职的应届生心里是在瑟瑟发抖啊。因为在应届生眼里,校招是毕业后进入大厂的一条“捷径”,也是初入职场最稳妥的方式之一。虽......
  • java 多重 if 判断代码怎么优化?
    看来大家需要重温Java基础知识啦,给大家分享几种方法,可以用于优化 Java 多重 if 判断代码的情况:1. 使用 switch-case 语句替代多重 if 判断。如果需要判断的变量是一个整型或枚举类型,可以使用 switch-case 语句替代多重 if 判断。这样可以提高代码可读性和执行效......
  • AI智慧安监视频平台EasyCVR用户管理细节优化
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,可支持多协议接入,包括市场主流标准协议与厂家私有协议及SDK,如:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、宇视SDK等。平台丰富的视频能力包括:视频监控直播、录像、云......
  • Android 开机动画优化之序列帧旋转90度
    问题背景:公司项目是个VR一体机,可以理解成眼镜,用户看的是横屏。但是项目开始的代码基线是从手机迁移过来的,因此底层配置的是竖屏(即通过adbshellwmsize输出的宽小于高),systemserver启动后在DisplayContent中修改了屏幕方向orientation=1。我叙述一下实现播放开关机动画的方案......
  • HOMER docker版本配置优化
     概述HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具。HOMER是一款强大的、运营商级、可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应用程序,并可以使用即时搜索、处理和存储大量的信令、RTC事件、日志和统计信息。之前的文章中,我们介绍过HOME......
  • 你见过哪些优雅的 java代码优化技巧
    今天分享一些实用的有助于提高代码质量的建议,建议收藏!避免炫技式单行代码代码没必要一味追求“短”,是否易于阅读和维护也非常重要。像炫技式的单行代码就非常难以理解、排查和修改起来都比较麻烦且耗时。反例:if(response.getData()!=null&&CollectionUtils.isNotEmpty(respons......
  • 自动提示优化APO:淘汰提示工程师
    模型调教得好不好,提示(prompt)最重要。在优化和改进提示工程的过程中,提示变得越来越精巧、复杂。据GoogleTrends,提示工程在过去的6个月受欢迎程度急剧上升,到处都是关于提示的教程和指南。比如,一个在网上爆火的提示工程指南GitHub已经狂澜28.5k星。然而,完全用试错法开发提示可......
  • 黑马优化Servlet
    问题:平常我们编写servlet的时候,经常会一个java文件写一个方法调用这样很麻烦,会写一堆的Servlet文件解决方法:编写基本的baseservlet,之后其他的文件采用/Brand/*调用该方法,替换HttpServlet,根据请求的最后一段路径来进行方法分发BaseServlet.java文件packagecom.hailei.web.ser......