首页 > 其他分享 >2023icpc第二场网络赛c

2023icpc第二场网络赛c

时间:2023-09-28 21:44:25浏览次数:49  
标签:第二场 int 网络 back 2023icpc dfn low push ins

做法 2-sat

赛时想到了2sat + 前缀和优化,但是对于每个点都要覆盖到脑袋抽了没想出来怎么建边

对于一个点如果他没被选择那么他的前一个点和后一个点是必选的, 然后就是一道非常裸的2sat + 前缀和优化 

P6378 [PA2010] Riddle(模板题)

1这个点是必选的, n这个点是必定不选的

#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
typedef long long ll;

const int N = 1e6 + 5;

int n, a[N];
std::vector<int>edge[N];

//bel数组记录某个点在哪个连通块里面
int dfn[N],low[N],ins[N],bel[N],idx,cnt;
stack<int>stk;

void dfs(int u){
    dfn[u]=low[u]=++idx;
    ins[u]=true; stk.push(u);
    for(auto v:edge[u]){
        if(!dfn[v]){
            dfs(v);
            low[u]=min(low[u],low[v]);
        }else{
            if(ins[v])low[u]=min(low[u],dfn[v]);
        }
    }
    if(dfn[u]==low[u]){
        cnt++;
        while(1){
            int v=stk.top(); bel[v]=cnt;
            ins[v]=false; stk.pop();
            if(v==u)break;
        }
    }
}

int main() {
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    map<pair<int, int>, vector<int>> mp; cin >> n; 
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
        if(i != 1) mp[{a[i - 1], a[i]}].push_back(i - 1);
        if(i != 1){
            if(i + 1 <= n) edge[i + n].push_back(i + 1);
            if(i - 1 >= 1) edge[i + n].push_back(i - 1);
        }
    }
    edge[1 + n].push_back(1); edge[n].push_back(2 * n);
    // 前缀和优化时这步不能放到下面的循环,因为 mp 中是不可能有点 n 的
    // 而 i -> pre[i], !pre[i] -> !i 需要每个点都满足
    for(int i = 1; i <= n; i++) {
        edge[i].push_back(i + 2 * n);
        edge[i + 3 * n].push_back(i + n);
    }
    for(auto [p, vec] : mp) {
        for(int i = 0; i < (int)vec.size(); i++) {
            int now = vec[i];
            if(i) {
                int last = vec[i - 1];
                edge[last + 2 * n].push_back(now + 2 * n);
                edge[now + 3 * n].push_back(last + 3 * n);
                edge[last + 2 * n].push_back(now + n);
                edge[now].push_back(last + 3 * n);
            }
        }
    }
    for(int i = 1; i <= 4 * n; i++) {
        if(!dfn[i]) dfs(i);
    }
    for(int i = 1; i <= n; i++) {
        if(bel[i] == bel[i + n]) {
            cout << "NO" << endl;
            return 0;
        }
    }
    vector<int> ans;
    for(int i = 1; i <= n; i++) {
        if(bel[i] < bel[i + n]) ans.push_back(i);
    }
    cout << (int)ans.size() << endl;
    for(auto i : ans) cout << i << ' ';
    return 0;
}
View Code

 

标签:第二场,int,网络,back,2023icpc,dfn,low,push,ins
From: https://www.cnblogs.com/zhujio/p/17736541.html

相关文章

  • 14 | 网络安全:和别人共用Wi-Fi时,你的信息会被窃取吗?
    内网中的最小权限原则对内网进行水平划分:划分不同的身份和权限对内网进行垂直划分:内、外网隔离 有线和无线网络安全无线网络的防护:使用安全协议(WAP2协议),认证技术(“强制门户”,再次认证),以及对办公网络中的未知热点进行扫描,避免伪造热点有线网络安全防护:只需要防护劫持。第一......
  • 2023 ICPC 网络赛2 L Super-palindrome 字符串 border KMP dp
    传送门给出一个\(5000\)长的字符串判断有多少个连续子串是超级回文的。这里超级回文的定义是将字符串分成\(2k\)段每段按照回文对应相等。设\(f_{l,r}\)表示区间\(l,r\)是否是符合要求的。引入\(border\)的定义:最长的前缀和后缀匹配长度。容易想到我们如果暴力枚举每个区间来......
  • Python实现网络爬虫
    一、网络爬虫的定义网络爬虫,即WebSpider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一......
  • 神经网络组成方式
    神经网络组成方式人工组成:搭建网络,结构可能不合理。自动生长出神经元:类似人类成长的过程,---??约束条件。--》激活程度??生长凋谢的过程原始形态-》训练100-》测试-》效果不理想找出性能不足的地方“如何计算性能不足-》公公式依据是什么”-》生长出神经元-----再次进行训练......
  • ChatGPT 重磅更新可进行实时网络搜索;OpenAI 将构建新的“AI 硬件”丨RTE开发者日报 Vo
    开发者朋友们大家好:这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点,欢迎大家留......
  • 数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化|附代码数
    原文链接:http://tecdat.cn/?p=24127最近我们被客户要求撰写关于预测鲍鱼年龄的研究报告,包括一些图形和统计输出。鲍鱼是一种贝类,在世界许多地方都被视为美味佳肴养殖者通常会切开贝壳并通过显微镜计算环数来估计鲍鱼的年龄。因此,判断鲍鱼的年龄很困难,主要是因为它们的大小不仅......
  • 代理IP与Socks5代理在网络安全与数据隐私中的关键作用
    在当今数字化时代,网络工程师们面临着不断增加的网络安全威胁和数据隐私挑战。为了保护敏感信息和确保网络安全,网络工程师不得不依赖于先进的技术工具,其中代理IP和Socks5代理在网络安全与数据隐私领域发挥了关键作用。代理IP:隐匿身份,保护隐私网络隐私保护:在互联网上,个人和组织的隐......
  • 代理IP与Socks5代理在网络安全与数据隐私中的关键作用
    在当今数字化时代,网络工程师们面临着不断增加的网络安全威胁和数据隐私挑战。为了保护敏感信息和确保网络安全,网络工程师不得不依赖于先进的技术工具,其中代理IP和Socks5代理在网络安全与数据隐私领域发挥了关键作用。代理IP:隐匿身份,保护隐私网络隐私保护:在互联网上,个人和组织的隐......
  • 通过IPsec网络客户端无法访问服务器https
    参考:https://www.cnblogs.com/lilinwei340/p/13021864.htmlhttps://www.cnblogs.com/bulh/articles/13321437.htmlhttps://help.aliyun.com/document_detail/119749.html#:~:text=%E5%9C%A8%E9%80%9A%E8%BF%87IPsec-VPN%E8%BF%9E%E6%8E%A5%E4%BC%A0%E8%BE%93TCP%E6%B5%81%E9%87......
  • GPS北斗双系统NTP网络校时服务器技术参数说明书
    GPS北斗双系统NTP网络校时服务器技术参数说明书GPS北斗双系统NTP网络校时服务器技术参数说明书京准电子科技官微——ahjzsz欢迎使用安徽京准电钟电子科技有限公司自主研发生产的“HR-901GBNTP网络时间服务器”。HR系列服务器支持NTP和SNTP网络同步协议,是一款高精度、大容量、......