A、B、C

D(dfs+强连通分量)

题意:

  给出一个n(n<=500)点m(m<=100000)边的有向图,问能否通过删去一条边使得该图无环。

分析:

  最简单的想法就是枚举一条边删去然后判断图是否有环,这样是O(m^2)的不能接受

  仔细想想,如果图中环数<=1,则YES;如果图中环数>=2,那么只有当它们的交恰好是一条边时,才是YES,其它情况都是NO

  所以我们首先可以通过dfs找到一个环(vis[u]=0,1,2分别表示点u没遍历到、遍历到了在栈里、遍历过了已经出栈了),然后枚举环上的边进行删除,然后判断剩余的图中是否有环即可

  这样时间复杂度是O(n(n+m))的

  至于判断是否有环,我们可以求强连通分量的数目,用bitset去优化,那么时间复杂度就是O(n*n*n/64)

E(离散化+线段树)

F(套路+并查集)

题意:

  给你一个树(n<=2e6),每个点都有自己的点权,I(x,y)表示x与y路径之间的所有点最大值与最小值的差,求

分析:

  将最大值与最小值分别计算,以最大值为例,即计算对于每个点u,有多少个点对过u并且以v[u]为最大值

  这就是将序列上的经典问题推广到树上来,原来的序列上的这个问题我是用set做的,但这种方法不能推广到树上来

  其实序列上的该问题还有一个套路,就是从小到大往对应位置上加,那么对于现在刚加入的x,能凑成区间包含他作为最大值的一定是x左边连续存在的点和x右边连续存在的点,这我们可以用并查集来维护

  推广到树上,现在从小到大加入x,那么能过x的点对一定是在x周围那些连续存在的点里面挑,这也可以用并查集来完成,不断把x的集合与四周相邻点的集合merge就行了

 void merge(int x,int y,int value)
{
if(!f[x]||!f[y]) return;
x=find(x),y=find(y);
s+=1LL*sz[x]*sz[y]*value;
f[x]=y;
sz[y]+=sz[x];
}
long long solve()
{
for(int i=;i<=n;++i) pos[i]=i;
sort(pos+,pos+n+,cmp);
for(int i=;i<=n;++i) f[i]=,sz[i]=;
s=;
for(int i=;i<=n;++i)
{
int x=pos[i];
f[x]=x,sz[x]=;
for(int j=;j<g[x].size();++j) merge(x,g[x][j],a[x]);
}
return s;
}

G(莫比乌斯反演)

题意:

  给定一个n和k(均不超过2e6),定义b(i)表示gcd(a1,a2,...,an)=1的序列个数,其中1<=ai<=i,现在要求出b(1) b(2) ... b(k)

分析:

  我们先确定上界i,那么F(x)表示gcd是x倍数的序列个数,f(x)表示gcd是x的序列个数

  显然F(x)=[i/x]^n

  那么有F(d)=Σf(n) (d|n) ,反演一下有f(d)=Σμ(n/d)F(n) (d|n)

  那么b(i)=f(1)=Σμ(j)F(j) (1<=j<=i)

  那么对于确定上界i,我们就通过莫比乌斯反演求出了b(i)的值,但我们现在要求出所有的b(1) .. b(k)

  我们考察相邻的b(i-1)和b(i),发现[i/x]^n和[(i-1)/x]^n不一样当且仅当i是n的因数

  于是我们可以枚举因数,做出每一项与前一项的差值,然后求个前缀和就可以得到每一个b(i)了

  时间复杂度O(klogk)

Codeforces Round Edu 36的更多相关文章

  1. CodeForces Round

    CodeForces Round 199 Div2   完了,这次做扯了,做的时候有点发烧,居然只做出来一道题,差点被绿. My submissions     # When Who Problem ...

  2. Codeforces Codeforces Round #484 (Div. 2) D. Shark

    Codeforces Codeforces Round #484 (Div. 2) D. Shark 题目连接: http://codeforces.com/contest/982/problem/D ...

  3. Codeforces Round #452 (Div. 2) A B C

    Codeforces Round #452 (Div. 2) A Splitting in Teams 题目链接: http://codeforces.com/contest/899/problem/ ...

  4. Educational Codeforces Round 71 (Rated for Div. 2)-E. XOR Guessing-交互题

    Educational Codeforces Round 71 (Rated for Div. 2)-E. XOR Guessing-交互题 [Problem Description] ​ 总共两次询 ...

  5. Codeforces Round #519 by Botan Investments(前五题题解)

    开个新号打打codeforces(以前那号玩废了),结果就遇到了这么难一套.touristD题用了map,被卡掉了(其实是对cf的评测机过分自信),G题没过, 700多行代码,码力惊人.关键是这次to ...

  6. Codeforces Round #781(C. Tree Infection)

    Codeforces Round #781 C. Tree Infection time limit per test 1 second memory limit per test 256 megab ...

  7. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  8. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  9. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

随机推荐

  1. Java格式规范及注释的用法

    /* 需求:演示一个Hello World的Java小程序 思路: 1.定义一个类.因为Java程序都是定义在类中,Java程序都是以类的形式存在的,类的形式其实就是字节码的最终体现 2.定义一个主函 ...

  2. asp.net mvc 5 微信接入VB版 - 获取AccessToken

    获取AccessToken是微信接入的又一个基础操作.很多微信接口需要这个2小时一刷新的AccessToken作为参数. 转载请说明作者Nukepayload2 首先根据开发文档把获取AccessTo ...

  3. Linux/Windows 实用工具简记

    以下只是开发中可能用的比较多的工具,另外还有其他很多未曾提及的实用工具.Linux篇: 1.链接过程的调试:主要用于查看构建过程:如链接时加载的动态库以及运行时加载动态库过程的调试 支持LD_DEBU ...

  4. 阿里P7/P8学习路线图——技术封神之路

    一.基础篇 JVM JVM内存结构 堆.栈.方法区.直接内存.堆和栈区别 Java内存模型 内存可见性.重排序.顺序一致性.volatile.锁.final 垃圾回收 内存分配策略.垃圾收集器(G1) ...

  5. Qt_为什么学习Qt

    1)学习GUI编程,市场上任何一款产品几乎都带有图形界面,市场上很火的Androoid.IOS编程无非也是GUI app编程,GUI编程都是差不多的,学习Qt后再学习ANdroid IOS ,那都是S ...

  6. python之道02

    猜数字,设定一个理想数字比如:66,让用户输入数字,如果比66大,则显示猜测的结果大了,然后继续让用户输入; 如果比66小,则显示猜测的结果小了,然后继续让用户输入;只有等于66,显示猜测结果正确,然 ...

  7. JavaSE-26 Swing

    学习要点 关于Swing Swing容器组件 Swing布局管理器 Swing组件 Swing菜单组件 关于Swing Swing和AWT都是java开发图形用户界面的工具包. AWT:早期Java版 ...

  8. springmvc下载那些事

    文件的上传下载一般在项目中还是非常实用的,此处专门整理一下文件的下载,至于文件的上传实现将在后续中补上.文件的下载多用于模板文件的下载,这在项目中用的还是挺多的.今天用到了就整理出来了,以供搬运工们借 ...

  9. 02-Mysql中的运算符

    Mysql中运算符 1.算术运算符运算符 作用+   加法-    减法*    乘法/,DIV     除法,返回商%,MOD       除法,返回余数 mysql root@localhost: ...

  10. nginx如何防止高负载造成服务器崩溃

    nginx-http-sysguard模块 一.作用 防止因nginx并发访问量过高或者遭受攻击造成服务器宕机,可根据负载设置界面跳转.   二.安装配置 1.下载模块软件包 wget https:/ ...