题目描述 分析 一开始看到这道题,首先想到的就是建好边后跑一个Tarjan缩点,将siz大于1的节点统计一下,输出结果 Tarjan非常显然易得,关键就是怎么建边 比较好想的一种思路就是枚举每一个兴奋程度 对于每一个兴奋程度,再将有趣程度枚举一遍 如果有趣程度是兴奋程度的倍数的话,在两个节点之间建一条有向边 我们拿第二个样例模拟一下,建好边后就是下面这样 那么缩点后大小不为1的强连通分量只有一个,它的大小为3 那么最终的答案就是\(3\) 但是这样的建边效率为\(n^2\),复杂度接受不了 所以…
小z玩游戏 Tarjan算是板子题吧,但是要稍微做一些修改,建边需要多考虑,建立"虚点". 题目描述 小 z 很无聊. 小 z 要玩游戏. 小 z 有\(N\)个新游戏,第\(i\)个游戏看上去的有趣程度为\(w_i\).小 z 很挑,他只会玩看上去的有趣程度是自己兴奋程度整数倍的游戏.由于游戏实际上有好玩的也有不好玩的,玩完第\(i\)个游戏后,小 z 的兴奋程度会变为\(e_i\) . 已知小 z 初始兴奋程度为\(1\),请问小 z 有多少个游戏可能会玩两次? 输入格式 第一行一…
题目戳我 \(\text{Solution:}\) 考虑建图.操作可以看作对\(1\)进行的操作,于是有以下运行过程: \(1\to w[i]\to e[i]\to...\) 考虑倍数,一个数可以走到所有是它的倍数的数.于是这样建图: \(w[i]\to e[i],i\to i*j.\) 然后发现倍数的边可以只建立质数的倍数即可. 题目本质是将所谓游戏重玩看成环,并将操作抽象为对初始元素\(1\)进行的状态转移,进而建立出模型. #include<bits/stdc++.h> using na…
原题来自与:洛谷 P5676(GZOI2017)  链接: https://www.luogu.com.cn/problem/P5676 题面: 题意比较明显,如果已经建好了边,那么跑个Tarjan 就完了. 但是问题在于建边的复杂度,比较好想的是n2  的建边方式. 但是时间肯定不允许. 那么我们就要想一种时间复杂度较小的建边方式. 可以考虑引入中间变量兴奋程度 那么如何建边, 首先将点开多一些 把中间变量兴奋程度也当作点 然后建边 1.建一个由 有趣程度 到 点 的边 2.建一个由 点 到…
P2175 小Z的游戏分队 小Z受不了寂寞,准备举办一次DOTA比赛,为了能让ACM班全部都参加比赛,他还特制了一张DOTA地图能够支持任意多人打任意多人. 现在问题来了,怎么把这么多人分成两队?小Z的想法是,每个人报上自己愿意同队的同学,接着小Z会按如下要求将所有人分为两队: 对任意同学甲,和同学甲同队的人,必须都是同学甲愿意同队的同学. 小Z希望两队的人数差尽量小,如果这种分组不存在,那么输出No solution. 先想判无解的情况. 因为分两个组,所以可以通过二分图染色判环. 那么按照不…
5777. [NOIP2008模拟]小x玩游戏 (File IO): input:game.in output:game.out Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits   Goto ProblemSet Description         今天,小x因为太无聊,就在玩游戏.这个游戏有两个队伍,然后他们在游戏里面打来打去.       但小x遇到了难题.他不知道自己的队友是谁.他只知道总共有两个队伍,每队…
2783: [基础]小 X 玩游戏(game) 时间限制: 1 Sec 内存限制: 64 MB 提交: 752 解决: 294 [提交] [状态] [讨论版] [命题人:ghost79] 题目描述 听完了故事,小 X 又想去玩一会儿游戏了. 这是一个很奇特的单机游戏, 游戏规则如下: 游戏中一共有 4× n 张牌,每张牌上有一个数字, 这些数字恰好是 1-4× n.一开始电脑会把这 4× n张牌随机打乱,然后会发 2× n 张牌给小 X.那些剩下的 2× n 牌电脑会再打乱一次,然后排成一排展示…
AtCoder Regular Contest 069 F Flags 二分,2-sat,线段树优化建图 链接 AtCoder 大意 在数轴上放上n个点,点i可能的位置有\(x_i\)或者\(y_i\) 思路 首先最大值最小,考虑二分答案. 如何check呢. 只有两个坐标,考虑2-sat. 可是边有点多,存不下来,考虑线段树优化建图. 如何建图. 先按照做坐标排序,我们有两个点的范围 [id[x]-mid,id[x]+mid],[id[y]-mid,id[y]+mid]. 这个显然是z选了,区…
题意:给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边权. 解法:参考https://www.cnblogs.com/zj75211/p/7168254.html这位大佬的.学到了建图新姿势. 首先还是先讲讲朴素建图:很容易想到拆点然后把边看成点,对于任意两条边a->b,b->c我们可以连一条权值为min(v1,v2)的a->c的边.容易看出这样的建图极限是n^…
Description 有n个强盗,其中第i个强盗会在[a[i],a[i]+1],[a[i]+1,a[i]+2],...,[b[i]-1,b[i]]这么多段长度为1时间中选出一个时间进行抢劫,并计划抢走c[i]元.作为保安,你在每一段长度为1的时间内最多只能制止一个强盗,那么你最多可以挽回多少损失呢? Input 第一行包含一个正整数n(1<=n<=5000),表示强盗的个数. 接下来n行,每行包含三个正整数a[i],b[i],c[i](1<=a[i]<b[i]<=5000,…