首页 > 其他分享 >如果你在写图论 2 的 I 题,这里有一个实现的比较一般的交互库

如果你在写图论 2 的 I 题,这里有一个实现的比较一般的交互库

时间:2024-10-10 14:33:59浏览次数:7  
标签:opt 图论 int cin long vis using 交互 比较

#include<bits/stdc++.h> // 交互题什么的最讨厌了
using namespace std;
using llt=long long;
using llf=long double;
using ull=unsigned long long;

mt19937 rnd(ull(new char)*ull(new char));

const int N=1e5+3;
struct Gph{
	int hd[N],to[N<<1],nt[N<<1],wt[N<<1],tot=1;
	void Add(int u,int v,int w){wt[++tot]=w,to[tot]=v,nt[tot]=hd[u],hd[u]=tot;}
	void ADD(int u,int v,int w){Add(u,v,w),Add(v,u,w);}
#define For_to(i,u,v,g) for(int i=g.hd[u],v=g.to[i];i;i=g.nt[i],v=g.to[i])
}g;

bool p[N]; int ss;
int ca[N],cb[N]; bool wt[N],vis[N];
bool Get(int u){
    p[u]=1; bool fg=0;
    if(u==ss) return 1;
    For_to(i,u,v,g) if(!vis[i>>1]&&g.wt[i]&&!p[v]) fg|=Get(v);
    return fg;
}

int main(){
    ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
    cout<<1<<endl;
    int n=6,m=10;
    cout<<n<<' '<<m<<endl;
    for(int i=1;i<n;++i){cb[i]=rnd()%i+1; g.ADD(ca[i]=i+1,cb[i],wt[i]=1); cout<<i+1<<' '<<cb[i]<<endl;}
    for(int i=n;i<=m;++i){while(ca[i]==cb[i]) ca[i]=rnd()%n+1,cb[i]=rnd()%n+1; g.ADD(ca[i],cb[i],wt[i]=rnd()%2),cout<<ca[i]<<' '<<cb[i]<<endl;}
    while(1){
        char opt; cin>>opt;
        if(opt=='-'){int i; cin>>i; assert(!vis[i]); vis[i]=1;}
        else if(opt=='+'){int i; cin>>i; assert(vis[i]); vis[i]=0;}
        else if(opt=='?'){
            int s=rnd()%n+1; cin>>ss;
            memset(p,0,sizeof(p)),cout<<Get(s)<<endl;
        }
        else{
            assert(opt=='!');
            for(int i=1;i<=n;++i){int w; cin>>w; assert(w==wt[i]);}
            return 0;
        }
    }
}

用管道做 OI 交互即可,可以看 this

标签:opt,图论,int,cin,long,vis,using,交互,比较
From: https://www.cnblogs.com/xrlong/p/18456314

相关文章

  • .NET 实现的交互式 OA 系统
    前言近期,我们在后台收到了粉丝们的留言,需要一个高效办公自动化(OA)系统。为了回应大家的期待,今天我们推荐一款既灵活又强大的OA系统解决方案,帮助提升日常办公效率和团队协作水平。在日常工作中,我们经常遇到各种表单。传统的系统开发中,多一个录入界面就意味着要设计一个新的输入......
  • [技巧] 当你遇到某些比较费眼睛的数学公式时
    当我们看一些dalao的博客时,可能会出现这类东西:\[x^{a^{b^{c^{d^{e^{f^{g^{h^{...}}}}}}}}}\]遇见这种东西时,我们一般会用到CTH用ctrl+滚轮放大整个浏览器,但小的总是小,网页是大了,数学公式的占比并没有变,那么遇到这么一驼东西时我们应该怎样做才能保护我们和CTH的眼睛呢?进入正题......
  • CNN Explainer: 交互式可视化学习卷积神经网络
    cnn-explainerCNNExplainer简介卷积神经网络(ConvolutionalNeuralNetworks,CNNs)是深度学习领域最重要的模型之一,在计算机视觉等领域取得了巨大成功。然而,由于CNN的复杂结构和抽象概念,对于初学者和非专业人士来说,理解CNN的工作原理往往存在较大困难。为了解决这个问题,......
  • easyocr 及其 与tesseract的比较
    EasyOCR介绍EasyOCR是一个基于深度学习的开源光学字符识别(OCR)工具,由JaidedAI开发,能够从图片中提取文字信息。与传统OCR工具不同,EasyOCR使用神经网络进行训练和识别,支持80多种语言,并且可以处理复杂的文本布局、手写体和多语言场景等问题。它非常适合从自然场景图像(如路......
  • 【JAVA开源】基于Vue和SpringBoot的医疗病历交互系统
    本文项目编号T072,文末自助获取源码\color{red}{T072,文末自助获取源码}......
  • 【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较]
      ......
  • 自然语言处理问答系统:智能交互的未来
    在人工智能和自然语言处理(NLP)技术快速发展的今天,问答系统已成为人机交互的重要方式。本文将深入探讨自然语言处理问答系统的工作原理、关键技术、应用场景以及未来发展趋势。1.什么是自然语言处理问答系统?自然语言处理问答系统是一种能够理解人类自然语言提问,并从大规模......
  • 844.比较含退格的字符串
    题目:844.比较含退格的字符串-力扣(LeetCode)思路:首先要知道这个#的意思是可以将前面一个数清空,(当时 我以为是将前面一串清空。。。看了半天),由于 # 号只会消除左边的一个字符,所以对右边的字符无影响,所以我们选择从后往前遍历 S,T 字符串,以skipS和T去记录,可以清空前面......
  • 【图论】迪杰特斯拉算法
    文章目录迪杰特斯拉算法主要特点基本思想算法步骤示例实现迪杰斯特拉算法基本步骤算法思路总结迪杰特斯拉算法迪杰特斯拉算法是由荷兰计算机科学家艾兹赫尔·迪杰特斯拉(EdsgerW.Dijkstra)在1956年提出的,用于解决单源最短路径问题的经典算法。该算法的目标是从一......
  • 自定义DFS,DFT,DTFT函数并比较关系
    一、DFS(离散傅里叶级数)functiony=DFS(x,L)N=length(x);xi=[x;zeros(L-N,1)]; y=zeros(1,L);fork=1:Lsum=0; forn=1:Lsum=sum+xi(n)*exp(-2j*pi*k*n/L); end y(k)=sum; end end 二、DFT(离散傅里叶变换) functiony=DFT(x,L)N......