2019秦皇岛补题

F题

链接:https://codeforces.com/gym/102361/problem/F
思路 如果环的边长为k,那么环的删边方案数是2k-1。如果链的边长为k,那么链的删边方案数是2k。环的方案数乘以链的方案数就是总的方案数
(之前没关同步T了。。。)
代码

#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
const int maxn=3e5+10;
const int mod=998244353;
#define ll long long
int n,m,cnt,tot;
ll ans;
vector<int>G[maxn];
int vis[maxn],deep[maxn];
ll power(ll a,ll b)
{
    ll ans=1,x=a;
    for(;b;b>>=1)
    {
        if(b&1)
        {
            ans=ans*x%mod;
        }
        x=x*x%mod;
    }
    return ans;
}
void dfs(int u,int fa)
{
    deep[u]=deep[fa]+1;
    for(int i=0;i<G[u].size();i++)
    {
        if(G[u][i]!=fa)
        {
            if(!vis[G[u][i]])
            {
                vis[G[u][i]]=1;
                dfs(G[u][i],u);
            }
            else if(deep[G[u][i]]<deep[u])
            {
                int x=deep[u]-deep[G[u][i]]+1;
                tot-=x;
                ans=ans*(power(2,x)-1)%mod;
            }
        }

    }
}
int main()
{
        int u,v;
        ios::sync_with_stdio(false);
        cin>>n>>m;
        ans=1,tot=m;
        for(int i=1;i<=m;i++)
        {
            int u,v;
            cin>>u>>v;
            G[u].push_back(v);
            G[v].push_back(u);
        }
        for(int i=1;i<=n;i++)
        {
            if(!vis[i])
            {
                vis[i]=1;
                dfs(i,i);
            }
        }
        ans=ans*power(2,tot)%mod;
        cout<<ans<<"\n";

    return 0;
}

原文地址:https://www.cnblogs.com/hh13579/p/11769014.html

时间: 2024-11-07 11:08:32

2019秦皇岛补题的相关文章

2020/3/14 Preliminaries for Benelux Algorithm Programming Contest 2019 部分补题报告和解题报告

A. Architecture 比较行列最大值相同则possible 不同则impossible #include<iostream> #include<algorithm> #include<cmath> #include<cstdio> using namespace std; int main(){ int r,c,x,y,i; int maxx=0,maxy=0; cin>>r>>c; for(i=1;i<=r;i++)

2020-3-14 acm训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019 解题报告+补题报告

2020-3-15比赛解题报告+2020-3-8—2020-3-15的补题报告 2020-3-15比赛题解 训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019  A建筑(模拟) 耗时:3ms 244KB 建筑 你哥哥在最近的建筑问题突破大会上获得了一个奖项 并获得了千载难逢的重新设计城市中心的机会 他最喜欢的城市奈梅根.由于城市布局中最引人注目的部分是天际线, 你的兄弟已经开始为他想要北方和东方的天际线画一些想法

2019 hdu 第四场补题 (1 ,签到题

因为太菜了,前几场的题都没补,从今天开始慢慢补 以后晚上要早睡,早上早起,抽出时间看书,每天只肝一局杀戮尖塔,上床不玩手机 每周五把一周总结的板子打印下来,毕竟老年人记性 补题顺序按难度升序 1001 AND Minimum Spanning Tree 题意:定义边的权值为两结点的&和,构造字典序最小的最小生成树 分析: 1.构造型算法 2.二进制数字默认有前导0,在纸上随便画画就发现构造将相邻点最低位0置为1,其余位为0为最优解,如果范围不够则直接置为1 题解: 1001. AND Minim

2019秦皇岛CCPC旅游小结

2019秦皇岛CCPC旅游小结 秦皇岛的海风伴着夕阳,小城和家的概念突然在我心中糅合起来,一种特有的安逸感填充着我的身旁 前言 ? 万恶之源是暑假刚结束的时候不知道被谁怂恿去报了ccpc,结果没看时间就报了秦皇岛,然后莫名其妙居然还过了,于是乎就奇妙的成了学校秋季赛季的先锋,还让我们这种菜鸡占了学校四分之一的名额,表面该吃吃该喝喝,内心其实还是慌得一批2333 ? 定下出勤比赛后,队内的训练其实是不够积极的,这其中有暑假集训的疲软期和被课设搞得焦头烂额的后遗症的原因,当然这部分责任在我,三个人分

4.30-5.1cf补题

//yy:拒绝转载!!! 悄悄告诉你,做题累了,去打两把斗地主就能恢复了喔~~~ //yy:可是我不会斗地主吖("'▽'") ~~~那就听两遍小苹果嘛~~~ 五一假期除了花时间建模,就抽空把最近没做的CF题补了点..毕竟明天开始又要继续上好多课呐...Yes, I can!(? •_•)?……(I can Huá shuǐ~~) codeforces 803 A. Maximal Binary Matrix   [简单构造] 题意:n行和n列填充零矩阵. 您要将k个1放在其中,使得得到

[2015hdu多校联赛补题]hdu5371 Hotaru&#39;s problem

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5371 题意:把一个数字串A翻过来(abc翻过来为cba)的操作为-A,我们称A-AA这样的串为N-sequence,现在给你一个数字串,问你这个串中最长的N-sequence子串长度 解:可以想到A-A是一个回文串,-AA也是一个回文串,那么首先Manacher跑一遍求出所有回文子串 可以想到任意两个互相覆盖的回文子串都可以表示成N-sequence 然后有三种搞法: 1.时间复杂度O(N*logN

补题 留空

这两道题虽然不是很难,但是目前还不会,在这留个地,省赛之后多刷点这种类型的题,再补上. 1. http://acm.hdu.edu.cn/showproblem.php?pid=3306 矩阵快速幂的题,相加平方和. 2.http://acm.hdu.edu.cn/showproblem.php?pid=3308 线段树 补题 留空,码迷,mamicode.com

[2015hdu多校联赛补题]hdu5348 MZL&#39;s endless loop

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5348 题意:给你一个无向图,要你将无向图的边变成有向边,使得得到的图,出度和入度差的绝对值小于等于1,如果无解输出-1 解:考虑奇数度的点一定会成对出现(因为所有度数和肯定是偶数个->因为一条边产生两度~),那么我们可以将奇数度的点两两一连消除掉(两奇数度点的出度入读差的绝对值都为1, 路径上的点的差绝对值为0) 然后偶数度的点可以成环,那么可以搜出所有的环 1 /* 2 * Problem: 3

hdu5017:补题系列之西安网络赛1011

补题系列之西安网络赛1011 题目大意:给定一个椭球: 求它到原点的最短距离. 思路: 对于一个椭球的标准方程 x^2/a^2 + y^2/b^2 +z^2/c^2=1 来说,它到原点的最短距离即为min(a,b,c) 所以我们需要把原方程化为标准型. 这时候线代就排上用场了,注意到原方程是一个二次型. 化为标准型 1/(k1)*x^2+1/(k2)*y^2+1/(k3)*z^2=1 后  min(k1,k2,k3)即为答案 而这里的1/k1,1/k2,1/k3 就是二次型矩阵的特征值 如何求特