codeforces——思路与规律】的更多相关文章

codeforces 804B     http://codeforces.com/problemset/problem/804/B /* 题意:给定一个只含ab的序列,每次操作可将ab变为bba 问至少变换多少次使序列不含形式为"ab"的子串 这题没想出来......唉. 思路:从后往前处理,每次经过一个a,都要将它移到最后, 共经过x个b,将ans+=x,同时b的个数翻倍x += x:每经过一个b,x++. */ #include<iostream> #include&…
题目链接:http://codeforces.com/contest/673/problem/B 现在有n个题和m个相似的关系,现在要把他们分到2组去. 要求: 1组的所有题比2组难 每个组都得至少有一个题 两个问题相似的话,不能用在同一组 每个题只能用一次 特别注意的是,相似的关系是没有传递性的,也就是AB相似,BC相似,那AC不相似. 思路:由于每次输入的两个题一定不是一个div的,那我们规定每次都把小的放到2,大的放到1.并且维护2里的最大值和1里的最小值.仔细考虑一下就会发现正确的情况下…
题目:题目链接 思路:1到4是很容易写出来的,我们先考虑这四种情况的绘制顺序 1:ru 2:rulu 3:rululdlu 4:rululdluldrdldlu 不难发现,相较于前一行,每一次增加一倍数量,并且增加的这部分前一半和原来正好相反,后一半相同,根据这一性质,预处理出极端情况13的解答字符串,然后绘制即可,注意控制行尾空格 AC代码: #include <iostream> #include <cstdio> #include <cstring> #inclu…
刚开始以为是搜索白忙活了原来是个简单的找规律,以后要多想啊 此题是两马同时跳 A. Two Semiknights Meet time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output A boy Petya loves chess very much. He even came up with a chess piece of his o…
A. Lucky Conversion time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Petya loves lucky numbers very much. Everybody knows that lucky numbers are positive integers whose decimal record conta…
写一下二叉树  推一下公式就出来了, 注意取模时的输出形式 #include <bits/stdc++.h> #define mem(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long LL; , INF = ; LL n, k; LL qp(LL a, LL b) { LL res = ; while(b) { ) res = res * a % MOD; a = a * a % MOD; b >&g…
题意:有横向和纵向的街道,每个街道只有一个方向,垂直的街道相交会产生一个节点,这样每个节点都有两个方向, 问是否每一个节点都可以由其他的节点到达.... 思路:规律没有想到,直接爆搜!每一个节点dfs一次,记录每个节节点被访问的次数!如果每个节点最终的访问次数 和所有节点的数目相同,则输出“YES", 否则输出”NO“ #include <queue> #include <string> #include <cstdio> #include <cstri…
洛谷 Codeforces 思路 很容易发现答案满足单调性,可以二分答案. 接下来询问就转换成判断前缀点集是否能组成一条链. 我最初的想法:找到点集的直径,判断直径是否覆盖了所有点,需要用到树套树,复杂度\(O(n\log^3n)\),应该过不了. 有一个性质:两条链可以合并,当且仅当能从四个端点中找到两个作为新端点,另外两个在新的链上. 还有一个性质:点\(x\)在\((u,v)\)这条链上,当且仅当\((lca(x,u)=x||lca(x,v)=x)\&\&lca(x,y)=y\),其…
洛谷 Codeforces 思路 首先要莫名其妙地想到圆方树. 建起圆方树后,令方点的权值是双联通分量中的最小值,那么\((u,v)\)的答案就是路径\((u,v)\)上的最小值. 然而这题还有修改,可以在每个方点维护一个\(multiset\)以支持. 但如果每次修改都暴力修改相邻的方点权值显然要挂,如何优化? 可以令方点的权值不包括自己的父亲,那么修改圆点时只需要修改自己的父亲即可. 查询时如果\(lca\)是方点那么还要与方点的父亲取\(\min\). 比较码农. 代码 #include<…
洛谷 Codeforces 思路 看到树上路径的统计,容易想到点分治. 虽然只有一个限制,但这个限制比较麻烦,我们把它拆成两个. 设黑边有\(a\)条,白边有\(b\)条,那么有 \[ 2a\geq b\\ 2b\geq a \] 合并两条边时,设原有的是\((a,b)\),要加入的是\((A,B)\),那么有 \[ 2(a+A)\geq b+B \Leftrightarrow 2A-B\geq b-2a\\ 2(b+B)\geq a+A \Leftrightarrow 2B-A\geq a-2…