思维
Bahuia
软件工程博士
展开
-
HDU 5963 思维题
题意:一道思维题 中文题意不解释。思路:首先考虑一条链的情况,与根节点相连的那条边,一定是最后变动的一条边。如果它是1,那无论下面的边怎么变,都必定要经过奇数次操作才能使它变成0,反之,它是0就要经过偶数次操作才行。 对于一棵树的情况,我们对于一个根,只要知道与根相连的所有权值1的边有多少,就可以判断出游戏要经过奇数还是偶数次才能结束,从而得到答案。代码:#include <bits/stdc+原创 2016-11-06 18:11:15 · 378 阅读 · 0 评论 -
CF Round#381(div2)C 思维+构造
题意:题目链接:http://codeforces.com/contest/740/problem/C 构造一串序列,满足给出的区间[L,R]中没有出现的最小数字最大,给出这个值,并且输出任意一组构造解。思路:YY题,可以发现最小的就是最短区间的长度,至于构造就直接按照循环节输出即可。代码:#include <bits/stdc++.h>using namespace std;const in原创 2017-07-15 11:08:43 · 394 阅读 · 0 评论 -
CF round355 D题 构造 + 最小生成树
题意:题目链接:http://codeforces.com/contest/606/problem/D 给出MST的边和非MST的边的权值,根据权值构造出原始的图。思路:先将所有的边按照权值排序,如果是MST的边就将点集内的点连接一个新的点,如果不是MST的边就在之前连接过的点集内添加一条边。 这里利用queue来保存可以用来构造的边,但是要注意设定一个上界2*m,否则会按照添加太多的边。代码:原创 2017-06-28 19:34:03 · 413 阅读 · 0 评论 -
CF round 355 C题 思维
题意:题目链接:http://codeforces.com/contest/606/problem/C思路:如果找到最长的连续递增子序列(连续指的是两个元素差为1),这一部分不动,改变剩下的,这样所需操作数最少。代码:#include <bits/stdc++.h>using namespace std;const int INF = 0x3f3f3f3f;const int MAXN = 1原创 2017-06-28 19:24:51 · 778 阅读 · 0 评论 -
CF round 355 A题 思维
题意:题目链接:http://codeforces.com/contest/606/problem/A思路:一道思维题,统计出每种颜色的变化量,如果减少的量总和/2大于等于增加的量总和,就可以完成转化代码:#include <bits/stdc++.h>using namespace std;int main() { int a, b, c, x, y, z; scanf("%d%原创 2017-06-28 19:19:54 · 312 阅读 · 0 评论 -
EOJ-3218 思维 + STL
题意:题目链接:http://acm.ecnu.edu.cn/problem/3218/思路:map维护信息,key表示长度为len的连续空位,value为这样的空位的数目。代码:#include <bits/stdc++.h>using namespace std;typedef long long LL;const int MAXN = 1e5 + 10;map <LL, LL> ::原创 2017-05-18 17:23:57 · 353 阅读 · 0 评论 -
The 2016 ACM-ICPC Asia China-Final Contest H题 数学 + 思维
题意:题目链接:http://codeforces.com/gym/101194/attachments 给出一个n*m的格子的棋盘,要求在其中每个格子填上一个范围是[1,k]的数,若一个格子里的数比所在行和所在列的其他数都要大,那么这个格子就是个特殊格子,现在要求如下表达式的值: 其中Ag表示能在棋盘中构造出恰好g个特殊格子的方案数。思路:其实就是算贡献,题目没有说要求Ag,就不要钻牛角尖原创 2017-04-22 11:00:58 · 1232 阅读 · 0 评论 -
CF - 749D 二分 + 思维
题意:给出一串拍卖的出价序列(a,b),其中a是出价人的id,b是出的价格,保证没有任意两个a相同,b也按照从小到大的顺序排列。现在有q个询问,每个询问给出k个id,求在这k个id不存在的情况下,出价最高的id和价格是多少?另外要注意,如果去掉了部分出价之后,如果出现相邻两个出价的a相同,取前一个作为最后结果。思路:最关键的一点是,要想清楚,去掉了一部分人之后,最后出价最高的人就是剩下的人中一开始出原创 2017-04-18 16:56:01 · 372 阅读 · 0 评论 -
HDU - 5762 思维 + 抽屉原理
题意:给出n个点的坐标,和所有点的范围m,判断是否存在两对点的曼哈顿距离相同,两对点不能完全相同,但可以有一个公共点。思路:n很大,但是不要被被迷惑,给出了坐标的范围是1e5*1e5,那么这个范围中的曼哈顿距离只有2e5这么多种可能性。所以当n*n>2e5时,根据抽屉原理,一定至少存在两个距离相同。代码:#include using namespace std;const原创 2017-03-23 11:26:40 · 403 阅读 · 0 评论 -
HDU - 5733 思维题 + 找规律
题意:给出一个数n,问在序列1到n的所有排列中,如果排列h某一位置的h[i]>h[i-1]&&h[i]>h[i+1],则价值v加上c[i],问v的期望是多少思路:其实还是有思路值得借鉴的,如果眼拙看不出来规律(比如我),不妨分析一波。最后要求的是期望,由于期望满足可加性,所以我们只要算出来每个位置对于最后期望的贡献即可。在2~n-1的位置上,每个位置pos对于左右都有6种不同的大小原创 2017-03-22 16:30:18 · 381 阅读 · 0 评论 -
51Nod - 1246 思维题
题意:有n个罐子,有k个硬币,每个罐子可以容纳任意数量的硬币。罐子是不透明的,你可以把这k个硬币任意分配到罐子里。然后罐子被打乱顺序,你从外表无法区别罐子。最后罐子被编上号1-n。每次你可以询问某个罐子,如果该罐子里有硬币,则你可以得到1个(但你不知道该罐子中还有多少硬币),如果该罐子是空的,你得不到任何硬币,但会消耗1次询问的机会。你最终要得到至少c枚硬币(c 例如:原创 2017-02-03 10:04:33 · 557 阅读 · 0 评论 -
51Nod - 1097 思维 + 排序
题意:设有n个正整数,将它们联接成一排,组成一个最小的多位整数。例如:n=2时,2个整数32,321连接成的最小整数为:32132,n=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355Input第1行:1个数N。(2 <= N <= 10000)第2 - N + 1行:每行1个正整数。(1原创 2017-02-02 21:40:30 · 513 阅读 · 0 评论 -
51Nod - 1276 思维题
题意:有N个岛连在一起形成了一个大的岛屿,如果海平面上升超过某些岛的高度时,则这个岛会被淹没。原本的大岛屿则会分为多个小岛屿,如果海平面一直上升,则所有岛都会被淹没在水下。给出N个岛的高度。然后有Q个查询,每个查询给出一个海平面的高度H,问当海平面高度达到H时,海上共有多少个岛屿。例如:岛屿的高度为:{2, 1, 3, 2, 3}, 查询为:{0, 1, 3, 2}。当原创 2017-01-20 13:33:41 · 532 阅读 · 0 评论 -
51Nod - 1138 思维
题意:给出一个正整数N,将N写为若干个连续数字和的形式(长度 >= 2)。例如N = 15,可以写为1 + 2 + 3 + 4 + 5,也可以写为4 + 5 + 6,或7 + 8。如果不能写为若干个连续整数的和,则输出No Solution。Input输入1个数N(3 Output输出连续整数中的第1个数,如果有多个按照递增序排列,如果不原创 2016-12-29 22:44:41 · 542 阅读 · 0 评论 -
HDU 5969 思维题
题意:中文题意不解释。思路:要使或的和最大,要尽可能的让高位为1。将l和r两个数的二进制形式写出来,每一位都对齐,由于l<=r,所以在不相等的情况下,一定会出现某一位,r这一位上是1,而l这一位上是0,这样,我们可以选择一个数x这一位是1,往后所有都是0,y这一位是0,往后所有都是1,这样选择的x,y一定满足要求,而且x|y最大。代码:#include <bits/stdc++.h>using n原创 2016-11-06 18:19:53 · 535 阅读 · 0 评论 -
HDU 6048 思维+找规律
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6048 给出一个n*m的方格,以及1到n*m-1的数字,一开始按照一定的规则选择每个数,从上到下,从左到右填入方格中,最后留一个空格子。 选数的规则为,每次选择剩余数中,第1个,第p+1个,第p*2+1个…,选完一轮后,去除选择的数,剩下的数继续按照这个规则来选。 如果方格中的空格子可以通过和原创 2017-07-28 21:58:36 · 1003 阅读 · 0 评论