19E Fairy】的更多相关文章

Once upon a time there lived a good fairy A. One day a fine young man B came to her and asked to predict his future. The fairy looked into her magic ball and said that soon the fine young man will meet the most beautiful princess ever and will marry…
题目:http://codeforces.com/contest/19/problem/E 去掉一条边,使无向图变成二分图. 该边应该被所有奇环经过,且不被偶环经过. 因为一条非树边一定只在一个环里.所以一条既被所有奇环经过又被偶环经过的边是树边.如果把它去掉,将无法处理包含它的那个偶环的非树边和包含它的某个奇环的非树边加上两段树边所构成的奇环. 找这样的边,弄一个边上的树上差分就行了. 可以模仿kruscal用并查集弄一个生成树.不过dfs其实也行. 注意图可能不连通. #include<io…
参考:https://blog.csdn.net/heheda_is_an_oier/article/details/51131641 这个找奇偶环的dp1真是巧妙,感觉像tarjan一样 首先分情况讨论,如果没有奇环,每条边都可以删:如果有一个奇环,奇环上隋边山:否则,删被所有奇环覆盖且没被任何一个偶环覆盖的边 那么重点就是怎样找到所有的奇环和偶环 用树形dp来搞,设f[i]记录经过第i条边的奇环数,g[i]记录经过第i条边的偶环数,因为是边的编号而存的是双向边,所以dp的时候用i>>1表示…
日常自闭(菜鸡qaq).不过开心的是看了题解之后1A了.感觉这道题非常好,必须记录一下,一方面理清下思路,一方面感觉自己还没有完全领会到这道题的精髓先记下来以后回想. 题意:给定 n 个点,m 条边的无向图,可以从图中删除一条边,问删除哪些边可以使图变成一个二分图. 看到二分图,我们肯定会想到奇环.要删除一条边使得剩下的图变成二分图,那么必定剩下的图也不能存在奇环.所以要删除的边都必须经过所有的奇环.这比较好想,但是还有一个难想一点的条件,要删除的边也不能经过任何的偶环,这是因为如果这条边经过了…
1343. Fairy Tale Time limit: 1.0 secondMemory limit: 64 MB 12 months to sing and dance in a ring their celestial dance. One after another they hold a throne. The first is young and fierce January and the last is elderly and wise December. Leaving the…
Va爷的胡策题T2 E. Fairy time limit per test1.5 seconds memory limit per test256 megabytes inputstandard input outputstandard output Once upon a time there lived a good fairy A. One day a fine young man B came to her and asked to predict his future. The fa…
Link https://jzoj.net/senior/#main/show/3506 Description 从前有一个善良的精灵. 一天,一个年轻人B找到她并请他预言他的未来.这个精灵透过他的水晶球看到这个年轻人将要遇见一个非常美丽的公主并要娶她..精灵在一张纸上画了N个点并用一些线段将他们连起来,每条线段两端连着不同的点.画完了之后,精灵让年轻人去除一条线段.然后精灵尝试将每个点用红色或者蓝色进行染色,同时使得那里没有一条线段的两端是相同的颜色.如果精灵能够成功染色,这个预言就能成真.…
http://www.lydsy.com/JudgeOnline/problem.php?id=4424 图是二分图的条件:没有奇环 所以,如果图不存在奇环,删除任意一条边都可以 如果存在奇环, 对于树边来说: 那么可能可以删除的边一定在所有奇环的交集内 而且这条边不能在偶环内 因为如果一条边既是奇环上的一条边,又是偶环上的一条边 删除这条边后,这个奇环和偶环会合并成一个新的奇环 所以最终的答案= 奇环的交集-偶环的并集 对于非树边来说: 如果只有一个奇环,那么可以删除构成环的这条非树边 树边和…
C. Anton and Fairy Tale 题目连接: http://codeforces.com/contest/785/problem/C Description Anton likes to listen to fairy tales, especially when Danik, Anton's best friend, tells them. Right now Danik tells Anton a fairy tale: "Once upon a time, there liv…
[BZOJ4424]Cf19E Fairy Description 给定 n 个点,m 条边的无向图,可以从图中删除一条边,问删除哪些边可以使图变成一个二分图. Input 第 1 行包含两个整数 n,m.分别表示点数和边数.第 2 到 m+1 行每行两个数 x,y 表示有一条(x,y)的边. Output 输出第一行一个整数,表示能删除的边的个数.接下来一行按照从小到大的顺序输出边的序号. Sample Input 4 4 1 2 1 3 2 4 3 4 Sample Output 4 1 2…
E. Fairy time limit per test 1.5 seconds memory limit per test 256 megabytes input standard input output standard output Once upon a time there lived a good fairy A. One day a fine young man B came to her and asked to predict his future. The fairy lo…
n,m<=20,给两个n×m布尔矩阵,每次操作可将第一个矩阵的2个相邻元素互换.输出最少操作次数使得两个矩阵完全一样. 比赛的时候想过按照二分图完美匹配的类似做法构图,不过想到边太多以及卡各种题卡得没脾气,就先放放等赛后搞了... 看题解发现有更好的构图,所以就算当时搞了也是TLE.... 先对所有格子及其上下左右连条流量为inf,费用为1的边,表示使用这条边每次是花费1个操作. 然后将第一个矩阵为1的点连S,流量为1,费用0,表示这个1可以用于满足第二个矩阵的某一个需要 第二个矩阵为1的点连T…
很久之前想写这题.结果还是把握不住CF的E,太神了啊....... 首先考虑的是二分图的性质,这个so easy,图中不存在奇数环. 然后分三种情况考虑: 1.只有一个奇数环,随便删除哪条 2.多个奇数环,删除它们都覆盖的那条 3.没有奇数环,岂不是爽爆了..? 然后还引入了“返祖边”的概念,这个具体可以看博客http://blog.csdn.net/DaD3zZ/article/details/50879626  太神了反正我一点都不会 其中详细叙述了删哪条,怎么删的问题,类似于一个前缀和的思…
1343 想了好一会 以为会有什么定理呢 没想到 就试着搜了 看来素数还是很多的 跑的飞快 注意会有前导0的情况 还有0,1不是素数... #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> #include<vector> #include<queue> #include<cmat…
树上差分的代码很简洁,dfs+差分即可 这题很多坑点啊,比如重边自环好坑 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<vector> #define pii pair<int,int> #define pb push_back #define mp make_pair #define ft first #define…
链接 [https://codeforces.com/contest/785/problem/C] 题意 初始时有n,第1天先加m开始吃1,但总的不能超过n,第i天先加m开始吃i(如果不够或刚好就吃完,结束了), 问能吃多少天 分析 这个样例,模拟该过程发现规律 如果n<=m,就是n天 否则发现第m+1天比m天剩余的少1,第m+2天比m+1天剩余少2.... 就直接二分搞了 代码 #include<bits/stdc++.h> using namespace std; #define l…
题意 题目链接 Sol 非常有思维含量的一道题,队爷的论文里介绍了一种\(N \sqrt{N}\)的暴力然鹅看不懂.. 看了一下clj的\(O(nlogn)\)的题解,又翻了翻题交记录,发现\(O(n)\)的做法也不是特别难.. 首先考虑所有两端颜色相同的非树边.直接对它的数量讨论: 若为\(0\),那么删哪一条都可以 若为\(1\),那么只能删该奇环上的边 若\(>1\),所有的非树边都不能删(不管怎么删都会有一个奇环),那么考虑所有的树边,一条树边能被删掉当且仅当:所有奇环都经过了这条边 且…
二分. 如果$n≤m$,显然只能$n$天. 如果$n>m$,至少可以$m$天,剩余还可以支撑多少天,可以二分计算得到,也可以推公式.二分计算的话可能爆$long$ $long$,上了个$Java$. import java.math.BigInteger; import java.util.Scanner; public class Main { static Scanner cin = new Scanner(System.in); static BigInteger sum(BigInteg…
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3521 ATTENTION:如果用long long 减小误差,这道题只能用%lld读入 首先需要判断哪些点是相互挨着的,这样比直接维护哪些集合是冰冻住的简单 按照x为主,y为辅排序,在数组上尺取,当head与tail的x坐标相差大于l/2则把head向后移动直到x坐标满足条件, 那么对于head到tail,现在的问题就只剩下检测出哪些点之间y间距小于l/2,把它们都按照p…
当m>=n时,显然答案是n: 若m<n,在第m天之后,每天粮仓减少的量会形成等差数列,只需要二分到底在第几天,粮仓第一次下降到0即可. 若直接解不等式,可能会有误差,需要在答案旁边扫一下. 注意二分上界的确定,不能太小也不能太大. #include<cstdio> #include<iostream> using namespace std; typedef long long ll; ll n,m; int main(){ cin>>n>>m;…
给定一张n个点m条边的无向图,求删除哪一条边后,能够确保构成一个二分图,输出所有可能 解法:我们知道二分图的性质是没有奇环,这道题我们也应该从这个方面入手来考虑. 如果没有奇环的话我们当然想怎么删就怎么删,毕竟两个偶环删一条边不会出来一个奇环 如果存在奇环,那么我们删边一定要删奇环上的边,而且这条边必须是所有奇环的并 还要考虑的是,如果这条边还属于某个偶环,删掉这条边后图中还会形成一个新的奇环,因此删除的边还不能属于偶环 这种关于返祖边的题目用树上差分来处理就可以 代码: #include<io…
即删除一条边使图中不存在奇环.如果本身就是个二分图当然任意一条边都可以,先check一下.否则肯定要删除在所有奇环的交上的边. 考虑怎么找这些边.跑一遍dfs造出dfs树,找出返祖边构成的奇环.可以通过树上差分标记奇环上的边. 但是这显然只包含了一部分奇环.注意到如果某条在奇环上的边同时也在一个偶环上,一定可以找到一个不包含这条边的奇环.并且图中所有其他奇环都是由所找到的奇环加上偶环得到的,所以这就是充分的了. 数据中有重边自环,自环特判一下比较舒服,而任意一条重边都不可能在答案中(本身就是二分…
Brief Intro: 给定一个无向图,询问删去哪条边能使得剩下的图为一个二分图,输出所有结果 Algorithm: 关于二分图的重要性质:一个图为二分图的充要条件为其中没有奇环 1.如果没有奇环,那么删去任何一条边都不会使其变为奇环 2.如果存在一个或多个奇环,删去的边必为所有奇环的一条公共边   但这样仍然无法保证残余图是一个二分图:因为有偶环的存在 为了寻找奇环或者偶环,我们一般采取dfs树的方式 我们可以证明(奇偶性判断即可)当一个环上有两个偶返祖边或两个奇返祖边时,这个环必为偶环 而…
题意: 有一个谷仓容量为\(n\),谷仓第一天是满的,然后每天都发生这两件事: 往谷仓中放\(m\)个谷子,多出来的忽略掉 第\(i\)天来\(i\)只麻雀,吃掉\(i\)个谷子 求多少天后谷仓会空 分析: 分类讨论: 1. \(n \leq m\) 每天都会把谷仓放满,所以第\(n\)后会变空 2. \(n > m\) 前\(m\)天后谷仓还一直都是满的 第\(m+1\)天后还剩\(n-m-1\),第\(m+2\)天后还剩\(n-m-1-2\) 第\(m+i\)天后还剩\(n-m-\frac{…
Хвост Феи animelodies1 (on youtube) Переписал jarrro (on vk.com)…
题目:http://codeforces.com/contest/19/problem/E 先把图连成一棵树,然后对于每条非树边,判断它是在奇环中还是偶环中: 把环上的点打上相应的差分标记,并记录有多少个奇环: dfs 出来后判断,若没有奇环,那么所有边都可以删: 若有奇环 k 个,遍历边,在 k 个奇环中而不在偶环中的边可以删: 如果一条边既在奇环中又在偶环中,那么若删掉它,原来的一奇环一偶环会合并成一个大奇环,所以这种边不能删: 写.调了整整两小时,改了许多冗余的地方和错误的地方才终于A了,…
思路: 先随便建出来一棵搜索树(图可能不连通?) 每一条非树边(剩下的边)和树边都可以构成一个环. 我们只看一个非树边和某些树边构成的这些环. 分成三种情况: 1.没有奇环  所有边都可以删 2.有一个奇环  奇环上的边可以删 3.有一堆奇环,一堆偶环 边化到点上 如果是奇环 非树边为(x,y) 在树上x,y这两个地方+1 lca(x,y)-2 偶环相反 做一遍树上递推上去 最后如果答案和奇环边的数量相等  这个边可以删. //By SiriusRen #include <bits/stdc++…
题目描述 很久很久以前,有一个仙女叫做A.有一天一个少年B找到她,并且请求她预测他的未来.仙女看着她的水晶球,说这位少年不久将遇见世界上最美丽的公主,并且将迎娶她为妻.然后仙女在一张纸上画了n个点,并把它们分为几个板块,每个板块以一些点为始,另一些点为终.画完这幅画,仙女要求少年擦掉之上的一个板块.然后她尝试给每个点画上红色或蓝色,让纸上没有板块有和它的结尾颜色一样的点.如果她能做到,这个预言将会成真.B想邂逅世界上最美丽的公主,所以他想要你帮助他.找到所有能帮助他邂逅公主的板块. 输入输出格式…
[题目链接]:http://codeforces.com/contest/785/problem/C [题意] 容量为n的谷仓,每一天都会有m个谷子入仓(满了就视为m);第i天 会有i只鸟叼走i个谷子; 问哪一天谷仓最早变成空的了; [题解] 当n<=m的时候,答案就为n; 当n>m的时候; 从第m+1天起谷仓的入库量比不上鸟的食量了; 会开始减少; 其中第m+1天减少m+1; 此后第m+2-依次减少2,3,4- 即首项为2公差为1的等差数列; 先让n减去m+1 然后让这个数列的和大于等于剩下…
\(数学题,式子并不难推,但边界是真的烦\) \(\color{Red}{Ⅰ.其实可以发现,当m>=n时,每次都可以粮食补到n,所以一定是在第n天消耗完毕}\) \(\color{Purple}{Ⅱ.当n>m时,前m天每次粮食都补到n}\) \(设从m+1天开始,需要mid天消耗完毕\) \(因为每天都可以加m粮食,所以mid天可以加X_{补充}=(mid-1)*m粮食(因为第m+1天是补满前一天的,所以是mid-1)\) \(然后麻雀带走的粮食用等差数列计算m+1,m+2,...,m+mid…