1.CF702E Analysis of Pathes in Functional Graph

题意:有一个 nnn 个点 nnn 条边的带权有向图(点编号000 ~n−1n-1n−1),每个点有且仅有一条出边,对于每个点iii求出由iii出发经过kkk条边,这kkk条边的权值最小值和权值和。

思路:倍增

由于k太巨大,硬跑是肯定不行的,然后每个点有且仅有一条出边,所以可以用倍增(

预处理的方式跟ST表差不多

#include<bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn=1e5+5,inf=0x3f3f3f3f,mod=1e9+7;
int mm[maxn][40],f[maxn][40],son[maxn][40],n,m,k;
inline void query(int i){int ans=0;int res=k;int x=1e18;for(int j=36;j>=0;j--){if((1ll<<j)<=res){res-=(1ll<<j);ans+=f[i][j];x=min(x,mm[i][j]);i=son[i][j];}}printf("%lld %lld\n",ans,x);
}
signed main(){cin>>n>>k;for(int i=0;i<n;i++){cin>>son[i][0];}for(int i=0;i<n;i++){cin>>f[i][0];mm[i][0]=f[i][0];}for(int j=1;j<=36;j++){for(int i=0;i<n;i++){son[i][j]=son[son[i][j-1]][j-1];f[i][j]=f[i][j-1]+f[son[i][j-1]][j-1];mm[i][j]=min(mm[i][j-1],mm[son[i][j-1]][j-1]);}}for(int i=0;i<n;i++){query(i);}
}

2.CF242D Dispute

题意:题意:有 nnn 个计数器和 mmm 条电线,每个计数器都对应着一个额定值 aia_iai​ ,初始时所有计数器的值均为 000 ,现在你可以按若干个计数器上的按钮,每次按按钮可以使该计数器以及与该计数器通过电线相连的计数器的值都 +1+1+1 ,每个计数器最多只能按一次。当你进行这样的操作若干次后,若有一个计数器上的值与该计数器的额定值一样,你就失败了。需要输出任意一种方案使你可以获胜。若无法获胜,输出 −1-1−1。

思路:bfs

先把额定值为0的点丢进队列,然后跑bfs,最后再遍历一次判断一下是否合法

#include<bits/stdc++.h>
using namespace std;
constexpr int maxn=1e5+5,inf=0x3f3f3f3f,mod=1e9+7;
int n,m,k,cnt,a[maxn],now[maxn],vis[maxn];
vector<int>e[maxn],jl;
void bfs(){queue<int>q;for(int i=1;i<=n;i++){if(!a[i])q.push(i);}while(!q.empty()){int u=q.front();q.pop();if(now[u]!=a[u])continue;now[u]++;jl.push_back(u);cnt++;vis[u]=1;for(auto v:e[u]){now[v]++;if(now[v]==a[v]&&!vis[v]){q.push(v);}}}for(int i=1;i<=n;i++){if(now[i]==a[i]){puts("-1");return;}}cout<<cnt<<endl;for(auto x:jl){cout<<x<<" ";}
}
int main(){cin>>n>>m;for(int i=1;i<=m;i++){int u,v;cin>>u>>v;e[u].push_back(v);e[v].push_back(u);}for(int i=1;i<=n;i++)cin>>a[i];bfs();
} 

3.CF229C Triangles

题意:给定n(1<=n<=10 6) 个点组成的完全图,现在从原图中拿走m(0<=m<=106)条边到另一个平面上,问一共还能组成多少个三角形。

思路:正面算两个图中有多少三角形肯定是不行的,逆向思维

先计算出整张图一共有多少个三角形

标记每个点有多少条被取走的边,被取走的边*剩余的边=被破坏的三角形个数

每个被破坏的三角形会属于两个点,要/2

#include<bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn=1e6+5,inf=0x3f3f3f3f,mod=1e9+7;
int n,m,du[maxn];signed main(){cin>>n>>m;int ans=n*(n-1)/2*(n-2)/3;for(int i=1;i<=m;i++){int u,v;scanf("%lld%lld",&u,&v);du[u]++;du[v]++;}int d=0;for(int i=1;i<=n;i++)d+=du[i]*(n-1-du[i]);cout<<ans-d/2;
} 

咕咕咕了

Ten graph questions of about 2000 difficulty of Codeforces Round 2相关推荐

  1. 构造图 Codeforces Round #236 (Div. 2) C. Searching for Graph

    题目地址 1 /* 2 题意:要你构造一个有2n+p条边的图,使得,每一个含k个结点子图中,最多有2*k+p条边 3 水得可以啊,每个点向另外的点连通,只要不和自己连,不重边就可以,正好2*n+p就结 ...

  2. Codeforces Round #236 (Div. 2) C. Searching for Graph(水构造)

    题目大意 我们说一个无向图是 p-interesting 当且仅当这个无向图满足如下条件: 1. 该图恰有 2 * n + p 条边 2. 该图没有自环和重边 3. 该图的任意一个包含 k 个节点的子 ...

  3. Educational Codeforces Round 45 (Rated for Div. 2) D Graph And Its Complement(图的构造)

    题意:构造一个图,使这个图的连通分量有a个,其补图的连通分量有b个,输出邻接矩阵 可以推出当min(a,b)!=1时输出no a=b=1且n=2或者n=3时也为no 其余只要把一个连通分量里的x个点用 ...

  4. Codeforces Round #179 (Div. 2): D. Greg and Graph(Floyd)

    题意: 给你n个点有向图的邻接矩阵,之后再给你n个数,它一定是1到n的全排列,对于第i个点,求出在删掉这个点以及与这个点相邻的所有边之前,当前剩下所有点两两最短路之和,注意删除操作是持久的,也就是最后 ...

  5. Codeforces Round #372 (Div. 1) B. Complete The Graph

    题目链接:传送门 题目大意:给你一副无向图,边有权值,初始权值>=0,若权值==0,则需要把它变为一个正整数(不超过1e18),现在问你有没有一种方法, 使图中的边权值都变为正整数的时候,从 S ...

  6. CodeForces - 1494E A-Z Graph(构造+思维)

    题目链接:https://vjudge.net/problem/CodeForces-1494E 题目大意:给出一个初始时只有 nnn 个点的有向带权图,需要执行 mmm 次操作,每次操作分为下列三种 ...

  7. hdu 6029 Graph Theory 【直接连线】

    hdu 6029 Graph Theory [直接连线] 对于输入的a等于1  如果前面有空闲的点 直接匹配 否则自己变成空闲的点 a=2 的时候  空闲的点加一 直到最后 如果没有空余的点 输出ye ...

  8. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  9. leetcode dfs_深度优先搜索:具有6个Leetcode示例的DFS图遍历指南

    leetcode dfs Have you ever solved a real-life maze? The approach that most of us take while solving ...

  10. 特征图谱字典_空间数据图谱为特征

    特征图谱字典 For my first Medium post I will show a nice, easy way to enrich your spatial data with featur ...

最新文章

  1. 李飞飞等提出新的迭代视觉推理框架,在ADE上实现8.4 %的绝对提升
  2. Python matplotlib 绘制散点图 还不收藏起来
  3. 简易的 Linux 流量实时监控工具 watch+ifstat
  4. linux7.0安装过程详解,图解红旗Linux7.0安装过程.doc
  5. oracle 报错3113,内存不足导致安装时报错ORA-3113(一)
  6. Oracle的dbms_output包的put()和put_line()的区别只是有没有回车换行吗?
  7. 软件工程基础-结对项目Ⅰ-2014
  8. Flutter 即学即用系列博客——06 超实用 Widget 集锦
  9. android ndk下载安装教程,安装android NDK详细步骤
  10. 计算机专业 在职跨英语,英语在职研究生跨专业可以吗?
  11. Shell批量解压tar.gz压缩包(转)
  12. python-生成xlsx表格
  13. win7java浏览器崩溃_win7系统打开网页就出现崩溃现象的原因及解决方法
  14. 【学习记录】SPSS问卷调查表分析法
  15. 传奇服务器注册不了账号密码,登录器显示服务器状态良好,但不能注册帐号?...
  16. 基于javafx和mysql的C/S版影院管理系统
  17. 华为鸿蒙到底是不是安卓系统套了个壳?
  18. STM32从零开始(四)详解GPIO库函数
  19. 《我心归处是敦煌》读后感
  20. 移动社交应用里,微创新、新奇趣可能都只是创新陷阱(虎嗅网)

热门文章

  1. 通过反射认识泛型的本质
  2. bcb quickrep保存为 图片_干货|SCI论文中图片与组图技巧
  3. 如何在GitHub中上传图片-----简单易行,步骤超清晰
  4. 超详细Python进行信用评分卡建模【kaggle的give me some credit数据集】【风控建模】
  5. html 显示编辑xml文件,如何将 XML 文件显示为 HTML 表格展示
  6. java如何对单词排序_java - 如何按第二个单词对列表进行排序? [重复] - SO中文参考 - www.soinside.com...
  7. SLAM--状态估计
  8. 跑毒的乌龟-0 : 随机漫步
  9. SwiftUI实战三:创建List视图和导航Navigation
  10. 重启mysql tomcat_linux下MySQL、Tomcat、Redis、Nginx停止和重启