思维
思维题,包括一些简单思维、构造、找规律、思维博弈等,还会有一些容器的使用,一般不会涉及算法。
Aurox_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Educational Codeforces Round 92 (Rated for Div. 2) A. LCM Problem(思维)
LCM Problem:题目大意:(文末有原题)LCM(x, y)= x和y的最小公倍数;给出l,r,判断是否有一组x,y(l <= x < y <= r)使 LCM(x,y)属于[l, r];思路:x的最小公倍数一定是x的倍数,所以我们不妨假设这个最小公倍数就是他的二倍,则另外一个就是2*x,所以我们只需判断r与2*l的关系即可;代码:#include <iostream>using namespace std;int main(){ in原创 2020-07-30 16:38:54 · 447 阅读 · 2 评论 -
Educational Codeforces Round 83 (Rated for Div. 2) C. Adding Power (思维)
Adding Powers题目:Suppose you are performing the following algorithm. There is an array v1,v2,…,vnv1,v2,…,vn filled with zeroes at start. The following operation is applied to the array several times — at ii-th step (00-indexed) you can:either choose原创 2020-06-03 11:26:29 · 220 阅读 · 0 评论 -
CodeForces #650 B. Even Array(思维)
B. Even Array题目大意:(文末有原题)给出一个长度为n的数组,如果每个位置的a[i] % 2 == i % 2;则是良好数组,如果不满足,输出需要交换几次能够使其成为良好数组,如果不能,输出“-1”;思路:(与Codeforces #644 C.Simple Pairs解决有些相似)如果是良好数组,则a[i]的奇偶性情况与i要相同,但是对于n,n固定,它的偶数情况就固定了:1. 如果n是奇数,则从0到n-1,偶数个数-奇数个数 = 1;2. 如果n是偶数,则从0到n-1原创 2020-06-18 17:20:18 · 663 阅读 · 0 评论 -
Educational Codeforces Round 90 (Rated for Div. 2) C. Pluses and Minuses(思维)
Pluses and Minuses题目大意:(文末有原题)给出一个有'+' '-'组成的字符串,读伪代码写程序;res = 0for init = 0 to inf(0到正无穷,其实就是判断条件为1) cur = init ok = true for i = 1 to |s| res = res + 1 (每进入一次循环,res++) if s[i] == '+' cur = cur + 1原创 2020-06-30 23:27:58 · 424 阅读 · 0 评论 -
Educational Codeforces Round 90 (Rated for Div. 2) B. 01 Game(思维博弈)
01 Game题目大意:(文末有原题)DA与NET玩游戏,给一个01串,他们只能删除 相邻的两个不同字符,DA先删,如果一个人没法删除,这个人就输了,判断最后谁会获胜;思路:因为是01串,所以能删多少次,与字符串的位置没有关系(只要既有1又有0,总会有相邻的01),所以只需判断有几个01对;代码:#include <iostream>#include <cstring>using namespace std;int main() { int t;原创 2020-06-30 23:02:32 · 409 阅读 · 0 评论 -
Educational Codeforces Round 90 (Rated for Div. 2) A. Donut Shops(思维)
Donut Shops题目大意:(文末有原题)有两种方案买甜甜圈:每个a元 每盒b个c元;给出a,b,c,输出 买多少个时,按方案1更划算,多少个时,按方案2更划算,如果不论多少个这个方案都不是更划算,就输出-1;思路:首先如果a > c的时候,按方案一肯定什么时候都不划算;其次如果每盒平均下来的单价 (c / b)>= a 时,肯定按方案一都比较划算;剩下的就是 平均单价 (c / b) < a 时,此时如果想要买的数量刚好是n盒,那肯定按盒买划算,否.原创 2020-06-30 22:41:12 · 332 阅读 · 0 评论 -
Codeforces Round #653 (Div. 3) D. Zero Remainder Array(思维)(map)
Zero Remainder Array题目大意:(文末有原题)给你n个整数,且x=0,每次要么x++,要么使ai++并且x++,判断最少通过多少次操作后,可以使任意ai % k = 0;思路:(暴力会TLE)因为不论哪个操作,x均会自增1,即x的每个值只能使用一次;所以对于每种余数,x每增加k,只会多一个数能整除k(设有n个ai 对k的余数是k-1,那么x每增加k,这个n变为n-1,具体看例子);所以我们需判断出,在余数1~k-1中,数量最多的是哪个(假设最多的数量是s,并且这个原创 2020-06-30 19:19:09 · 382 阅读 · 0 评论 -
Codeforces Round #653 (Div. 3) C. Move Brackets(思维)
Move Brackets题目大意:(文末有原题)给出一个由 ')' 和 '(' 组成的字符串,我们可以将一个字符移动到字符串首或尾,输出最少通过多少次移动可以使每个')' 前都有与它匹配的'(';匹配规则:() 是对的(()) 也是对的(()()) 也是对的)( 是错的思路:因为要构成对,只需把 '(' 移动到 ')' 之前,所以说每有一个不成对的括号,就需要移动一次,所以只需判断有多少个还没有成对;代码:#include <iostream>.原创 2020-06-30 18:06:59 · 329 阅读 · 0 评论 -
Codeforces Round #653 (Div. 3) B. Multiply by 2, divide by 6(暴力、思维)
Multiply by 2, divide by 6题目大意:(文末有原题)给出一个整数,计算通过几次 *2 或者 /6 会得到1;思路:要求通过*2 或者 /6得到1,实际上其实是/3 或者 /6,如果可以则一定要满足含有因子3,所以就每次判断是否含有3即可,如果不含,则通过操作一定不会得到1,否则就暴力执行操作;代码:#include <iostream>using namespace std;typedef long long ll;int main(原创 2020-06-30 17:44:41 · 450 阅读 · 0 评论 -
Codeforces Round #653 (Div. 3) A. Required Remainder(思维)
Required Remainder题目大意:(文末有原题)给出一个整数n,输出0~n中 对x的余为y的最大整数;思路:要获得对x取余为y的最大整数,其实就是最多能包含多少个x(设最多为k个),并且n >= k * x + y,所以只需求出n/x再进行判断是否满足n >= k * x + y即可;代码:#include <iostream>using namespace std;typedef long long ll;int main() {原创 2020-06-30 16:56:46 · 375 阅读 · 0 评论 -
Codeforces Round #617 (Div. 3) D. Fight with Monsters(思维博弈)
Fight with Monsters:题目大意:(文末有原题)给出n个怪物的血量,你每次可以对他造成a点伤害,你的对手则能打b点,你先打,你的技能是让对手不能出招(能使用k次),判断你最多能造成几次致命一击;思路:(因为n和a,b都比较大,所以应该很大可能直接暴力会TLE(我也没试))因为要获得最大的致命一击,所以要尽可能多的在对手要造成最后一击的时候对他使用技能,这样就等于说之前对手是在给你打工;所以我们只要统计出 对于每个怪物如果你想要致命一击 需要使用多少次技能,最后再对次数排原创 2020-06-25 18:15:58 · 396 阅读 · 0 评论 -
Codeforces Round #627 (Div. 3) D. Pair of Topics(思维)(构造cmp)
Pair of Topics题目大意:(文末有原题)分别给出连个数组a[n] 和 b[n],判断a中有几对整数使a[i] + a[j] > b[i] + b[j];思路:另外一个数组v[n],v[i]来保存a[i] - b[i],此时,只需判断v中有几个整数对的和大于0;首先 正数 + 正数 > 0、正数 + 0 > 0,所以 分别记录整数的个数k 和 零的个数m,一定会有(k * (k - 1)) / 2(即) + m * k;其次就是 一个负数 + 绝对.原创 2020-06-25 16:28:45 · 288 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2) C. Number Game(思维博弈)
Number Game题目大意:(文末有原题)给出一个整数n,老A和小F在玩游戏:如果n能整除一个奇数,就整除奇数 n如果大于1,n -= 1;A先走,判断最后谁能得到1;思路:首先,判断特别的,n = 1 和 n = 2;其次,因为可以除奇数,所以如果这个数是奇数,直接除自身就可以得到1,直接获胜;第三种情况就是n是偶数:如果这个偶数没有可以整除的奇数,那么只能-1,那么就变为偶数,对手就能直接除自身获得1;否则,除于最大的奇数因子,得到的数,如果是偶数,并且不是原创 2020-06-24 22:04:13 · 338 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2) B. GCD Compression(思维 构造)
GCD Compression题目大意:(文末有原题)给出2*n个数,首先从中拿走两个,然后再从2n-2个数中拿出n-1对整数,两个整数相加进入新数组,并且保证新形成的数组的所有元素的最大公约数>1;思路:因为要使新数组的所有元素的最大公约数 > 1,那么我们不妨假设最大公约数为2,因为每个数不是偶数就是奇数,并且 奇数 + 奇数 = 偶数,偶数 + 偶数 = 偶数,所以就是构造奇数对和偶数对;如果奇数的数量是偶数,就扔掉2个偶数(注意当偶数个数为0,只能扔掉两个奇数);原创 2020-06-24 16:45:09 · 287 阅读 · 0 评论 -
Codeforces #651 A.Maximum GCD(思维)
Maximum GCD题目大意:(文末有原题)求1~n中任意两个数的最大公因数的最大值;思路:如果n是偶数 max = n / 2;如果n是奇数 max = (n - 1) / 2;代码:#include <iostream>#include <algorithm>using namespace std;int main() { int t; cin >> t; while(t--) { int n; cin &g原创 2020-06-23 22:56:58 · 412 阅读 · 0 评论 -
Codeforces Round #171 (Div. 2) B. Books (思维)
Books:题目大意:(文末有原题)给出n个整数,第i个数代表看第i本书所需时间,给出总时间t,从i本书开始看,直到时间用完,或者看到最后一本书(看完最后一本书如果还有时间不会再去看第一本);求最多能够看几本书;思路:(代码②是直接暴力二重循环,会TLE)其实是求最多有几个连续数的和小于t;从第i本开始看,如果看到第x本时间超过t,则把第i本删去(等价于从第i+1本开始看;这样实现可以节省从i+1加到x的运行时间),再去加上第x本,如果仍然超过t,就继续删第i+2本,直到x=n;并且如原创 2020-06-23 10:26:25 · 249 阅读 · 0 评论 -
Educational Codeforces Round 35 (Rated for Div. 2) C. Three Garlands(思维)(打表)
Three Garlands:题目大意:(文末有原题)有三盏灯,给出三个亮灯间隔:a, b, c;亮灯规则是 i(开灯时间)、i+x(亮灯间隔)、i+2*x、...,在三盏灯都打开之后,如果能保证每一秒都有灯在亮,则输出“YES”,否则输出“NO”;思路:(应该也算是打表吧)因为只有三盏灯,所以最大的亮灯间隔是3,且必须要保证三个灯的亮灯间隔都是3;并且如果有一盏灯亮灯间隔是1(每秒都亮),则一定是可以的;剩下的就是两盏灯时候,经过验证可以知道,只有满足 2、2、x(任意数)或者原创 2020-06-22 18:53:21 · 304 阅读 · 0 评论 -
Codeforces Round #531 (Div. 3) B. Array K-Coloring(思维)(vector map)
Array K-Coloring:题目大意:(文末有原题)给出n个整数,用k种颜色给这n个整数着色,要求:1. 每个整数都有一种颜色;2. 每种颜色至少要涂一个整数;3. 每种颜色不能为相同的整数着色;判断能否为每一个整数都着色;思路:首先判断是否能够实现;不能实现的条件:存在有x个相同整数,并且x > k;(因为k个颜色,每个颜色不能涂相同的整数,如果x>k,代表会有x-k个该整数没法着色)如果能实现就进行下列操作:因为要每个颜色至少要涂.原创 2020-06-22 18:01:27 · 341 阅读 · 0 评论 -
Educational Codeforces 63 (Rated for Div. 2) B. Game with Telephone Numbers(思维博弈)
Game with Telephone Numbers:题目大意:(文末有原题)给出一个长度为n(n是奇数)的字符串s,Vasya 和 Petya 轮流从字符串删除一个字符直到字符串的长度变为11,Vasya先走,判断结束时获得的串是否是一个电话号码;电话号码:长度为11,并且第一个字符是'8';思路:要判断最后能否是一个电话号码,实际上是判断最后一次操作后首位是否能为'8';因为P(Petya)不想让其成为电话号码,所以每次都会删除靠前的'8'直到'8'被删完 或者 长度变为11原创 2020-06-22 16:23:13 · 299 阅读 · 0 评论 -
CodeForces #649 A. XXXXX(思维 双指针)
A. XXXXX题目大意:(文末原题)给出一个字符串,判断能否从 开头或末尾 删去部分元素,使这个子串的元素和不被x整除,输出最长字串长度;思路:双指针,一个循环删除开头的元素,另一个循环删除末尾的元素,每次判断能否整除;代码:#include <iostream>using namespace std;const int maxn = 1e5 + 10;int main() { int t; cin >> t; while(t--) {原创 2020-06-14 23:24:26 · 782 阅读 · 0 评论 -
Codeforces #644 C.Simple Pairs(思维 双指针)
C.Simple pairs题目大意:(文末有原题)给出一个数组,判断能否构成对,对要满足:奇偶性相同,或者差1;输出“YES”or“NO”;思路:首先数组个数必须是偶数,其次如果奇数和偶数的个数均为偶数,则一定可以,否则,一定是多出来一个奇数或者一个偶数,则从后之前查找,如果有两个数满足 a - b = 1,则输出“YES”,注意要先排序后再查找!代码:...原创 2020-06-05 14:35:41 · 507 阅读 · 0 评论 -
The Child and Homework,CodeForces - 437A
The Child and Homework题目:每组数据输入4行数据(含空格,含前缀(如:A.))如果这4行数据中含有好选项,则输出好选项的选项,否则,输出“C”;好选项:如果一个选项长度大于等于其他三个选项的两倍,或者小于等于其他三个选项的两倍,则是好选项。代码:要判断是否是好选项,实际上是要让最大的与第二大的比较,最小的与第二小的比较,最后得出结论,所以关键是获得正确的最大项,最小项,第二大和第二小的项;并做出正确的判断条件。#include <ios原创 2020-05-13 11:58:02 · 241 阅读 · 0 评论
分享