
技巧思维题
文章平均质量分 88
需要思考变形,想到性质或结论即可解出题目
夕林山寸
这个作者很懒,什么都没留下…
展开
-
CF1428 E. Carrots for Rabbits 贪心+优先队列
n个数切成k份,求切出数的平方和的最小值.有个比较显然的结论:对于一个数x,把它分成y份,求平方和sm,使得sm最小的分法一定是均分。而把一个数分成y份,平方和与分成y-1份的平方和减量设为Cy,分成z份,平方和与分成z-1份的平方和减量设为Cz。显然有:if(y<z)则Cy>Cz。这里说明了我们可以贪心的分萝卜,当前最优一定是全局最优,因为后面的分块一定不优于当前分块sm的减量。于是便有了贪心:刚开始n个数,还需要分出k-n块。我们把每个数存到优先队列里,.原创 2020-11-06 10:24:17 · 380 阅读 · 0 评论 -
CF1423K. Lonely Numbers 性质分析+埃筛
设a,b, x=gcd(a,b);题目可以转化为: a,b,x^2 组成三角形。设a<b,若a为质数,则b一定只能为a^2 , 否则无法构成三角形(证明比较简单略)若a为合数,则设b= z*y ,令a=(z-1)*y. 则 a,b,y^2 一定可以构成三角形。所以结论为:若一个数x是合数,则他不孤独。若一个数是质数,则如果他的平方也在,则他不孤独,否则孤独。#include <bits/stdc++.h>using namespace std;...原创 2020-11-04 22:51:28 · 186 阅读 · 0 评论 -
CF1413 C. Perform Easily 枚举固定最大值+set维护
这种最大最小值不固定的题目,一般要枚举最大值/最小值。可以先求出 c[n][6] = b[i] - a[j];总共n行6列的矩阵,每行选一个数,选出n个数,求这n个数最大最小值之差最小是多少。我用的是枚举最大值:显然需要找每行小于当前最大值且最大的数是多少。如果枚举做的话就是n^2的了。但我们如果先预处理排序下的话,发现每次没必要枚举找每行的小于当前最大值的最大值。我们可以维护一个multiset表示每行当前情况下的最大值。每行的初值为:b[i]-a[1].这样维护,.原创 2020-11-04 17:01:00 · 222 阅读 · 0 评论 -
CF 1443 E. Long Permutation 性质分析+逐段处理
很经典的思维套路。我们知道:长度为i的排列共有 i! 种,显然20!> 1e5*2e5所以其实无论怎么改变,最多修改不到20个数。我们可以类似于二进制的思想,从前往后修改。比如1 2 3 4 5,对于2号位置,其于其后面的4个数总共有4! = 24种排列,那么对于1号位置来说:其排列为24*5=120,即这五个数每个数放在最前面,后面都是4个数的排列。对于字典序从低到高来说:我们把2放在最前面,其余相对位置不变往后移变为:21345,这个排列是第25字典序小的排列(..原创 2020-11-04 10:45:52 · 339 阅读 · 0 评论 -
AtCoder Beginner Contest 173 A-F
A:水题#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst double PI= acos(-1.0);const int M = 1e5+7;/*int head[M],cnt=1;void init(){cnt=1,memset(head,0,原创 2020-07-05 22:14:32 · 260 阅读 · 0 评论 -
code forces 1373 E - Sum of Digits 思维分析性质
容易发现:大部分情况下f[x+1]=f[x]+1;如果全部f[x],满足这个性质,则直接可以求出f[x]进行构造。但由于x+k会发生进位,f[x]出现两个等差数列,中间出现断层。且只会出现2个等差数列,因为k小于等于9,即x最多进位1次。(个位往前进位)所以我们枚举个位c,如果k+c<=9,则不会发生进位。直接用等差数列求出f[x]即可。(f[x]+f[x]+1+k)*(k+1)/2 。然后从个位进行构造,低位尽量取大数,这样高位可以取少一点,使得整体尽量小。否则的话再枚举个位原创 2020-06-27 18:41:53 · 306 阅读 · 0 评论 -
codeforces 1689 E - DeadLee 思维贪心好题
一个经典的贪心套路。首先:正着找人吃饭考虑太多因素。我们可以倒着找。设s[i]为第i种food 的最大需求量。最后一个人吃饭时,假设他喜欢吃x,y种食物,那么无论前面人吃饭顺序如何,食物剩余量一定为:w[x]=w[x]-s[x]+1;w[y]=w[y]-s[y]+1;也就是说,必须至少一个w[i]>=s[i],才能保证最后一个人可能吃上饭。至此一个贪心策略出来了:如果存在一种食物i:s[i]<=w[i],那么喜欢吃i的人一定都可以在最后吃(且最好放在最后吃,因为这原创 2020-06-25 18:00:37 · 301 阅读 · 0 评论 -
CF 1370 F2 - The Hidden Pair (Hard Version) 交互 树上二分
对交互的敏感度还是不够高。。虽然知道是二分,但比赛时想了半天没思路。正解:显然:第一次询问所有点,会告诉你路径长度d,和路径上的一个点。然后把这个点设为rt,做为树的根节点。然后查询dep[i]==x 的所有节点。如果给出的d大于路径长度,说明当前深度没有路径上的点,(即隐藏的两点a,b距离rt的距离都小于等于x)然后就可以二分了,二分的下界设为1,上界设为d。log(1000)=10,询问得出其中一个点a,再询问距离a ,长度d的所有节点,可一次求得b。总共12次询问。原创 2020-06-21 17:28:37 · 283 阅读 · 0 评论 -
CF 1370 E - Binary Subsequence Rotation 思维
首先s[i]==t[i]的都可以不用管。(因为我们每次选的是子序列,完全可以跳过这些)我们把s[i]!=t[i]的部分提取出来,让s[i]==1的设为1,否则设为0.得到一个01串。比如:01110000011000001110转化为:01110001 (目标是让所有01互换位置)每次可选取一个子序列,然后让所有数往右移动(最右边到最左边)我们发现:一次操作可以让所有101010这样的01交替串,的01互换位置,然后就可以不管他们(因为此时s[i]==t[i])一..原创 2020-06-21 14:06:21 · 297 阅读 · 0 评论 -
CF1365 F - Swaps Again 思维题
比较容易分析得到:{a[i],a[n-i+1]}集合始终不变。我们发现:可以通过一些变化,去改变pair的位置。但无法在pair之间进行元素改变。1:可以交换a[i],a[n-i+1].只需要先执行k=i;再执行k=1;再执行k=i;即可只交换a[i],a[n-i+1].其他元素顺序不变2:可以交换第i对,和第j对 pair (即 swap(a[i],a[j]),swap(a[n-i+1],a[n-j+1]) )先执行k=j;再执行k=i;即可。但这样会.原创 2020-06-08 13:37:54 · 237 阅读 · 0 评论 -
CF 1365 E - Maximum Subsequence Value 思维题
题意为:选一个长度为k的子序列,计为集合s, 若s中,二进制下第i位,至少有max(1,k-2)个数是1,则获得 2^i的贡献。求出最大贡献。(子序列集合任选)一看这题直接莽按位从高到底枚举处理,但会发现,每一位会剩至多2个元素可变。。(即高位没选,但低位可以选)不好处理(暴力应该可以处理,比较麻烦:先选出最高位,然后选出符合条件的次高位,然后改变可变元素剩余数量,再一次往低位枚举)不过这题有更简单的做法:考虑集合size>=3的情况,即集合中,二进制下,第i位都最多只能有2个0.原创 2020-06-08 11:22:47 · 215 阅读 · 0 评论 -
1355E - Restorer Distance 函数图像分析+三分或断点枚举
三个操作1:加一块砖花费A2:拆一块砖花费R3:把一个柱子的一块砖移动到另一个柱子上。花费M如果我们把M=min(M,A+R).则如果最终高度为H,那么显然:能进行3操作就进行3操作。最后再进行1,2进行矫正。假设有n1个需要加的砖,n2个需要拆的砖。我们枚举最终高度H。刚开始的时候H比较小。显然有n1>=n2则花费ans=(n1-n2)*A+M*n2.假设当前有X个比最终H小的柱子。Y个大的柱子。当H=H+1时:如果X不变。ans的变化为:((原创 2020-05-26 20:09:03 · 292 阅读 · 0 评论 -
“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 Problem I:纸牌 一道很好的思维题
一看K这么大,显然是会有循环。关键是如何找出循环,并精确找出k次后对应的位置。我们发现:(i - 1) % (N - 1) + 2 每N-1循环一次。赤裸裸的告诉你考虑N-1为循环节长度。假设经过N-1后,序列变成了p。再经过N-1次,序列变成:p[p[i]].再经过N-1次,变成:p[p[p[i]]].//禁止套娃。。。这里很巧妙,可以自己仔细思考一下。然后我们只需要模拟第一个N-1次操作,得到序列P。然后对序列P的每个位置,找出它所在的环,然后执行K-(N-1)轮最后再.原创 2020-05-13 17:25:03 · 190 阅读 · 0 评论 -
Benelux Algorithm Programming Contest 2019 G. Gluttonous Goop 思维规律题
我们模拟后发现:当病菌都连在一起时:形成一个多边形,我们把他填补可以得到一个最小矩形。把这个多边形它感染一次后:又得到一个多边形,把新的多边形填补得到新的矩形,发现:两个矩形内的未被感染的数量都是相同的,所有我们可以K小于20时模拟,保证所有病菌连接。后面的轮数,用填补快速计算。#include <bits/stdc++.h>using namespace std;...原创 2020-03-28 10:27:32 · 304 阅读 · 0 评论 -
CTU Open Contest 2019 G. Beer Mugs 异或维护奇偶性
显然的条件:必须L-R中 字符个数最多一个是奇数,其他必须是偶数由于奇偶性可以用异或表示,区间L,R的奇偶性等于区间1,R异或区间1-(L-1)。所以 这是个经典的解法:枚举以R为区间右端点,先求出1-R中间的字符数量的奇偶关系。然后让所有字符全偶,且最左边的位置id,与ans取max。然后枚举每个字符,令这个字符是奇数,其他是偶数即查询状态(tp ^ (1<<j) )...原创 2020-02-22 18:23:39 · 588 阅读 · 0 评论 -
Preliminaries for Benelux Algorithm Programming Contest 2019 K. Knapsack Packing
给定 n 件物品和他们的重量以及所有组合重量,求是否存在这 n 件物品的重量 来满足这些组合。做法很巧妙:把2^n-1个元素放到 可重复集合multiset里每次取最大的2个元素,相减一定是n个元素中的一个x。然后我们把所有包含x的集合都删去。那么剩下的集合一定都是不包含n的,每次集合删一般(集合个数,从2^i 到 2^i-1个)。每次操作让集合元素减半,得到一个数,n...原创 2020-03-16 22:34:15 · 358 阅读 · 0 评论 -
hdu6602 hdu多校第二场 1012 尺取/数据结构/思维
题解线段树做法没看懂.但是有个更巧妙的数据结构做法:(orz想出这种方法的大佬)主要思路是尺取.先扫右端点,肯定是判断这个数a[r]的总可能出现次数是否大于等于k,如果不,区间肯定不可能包括r.如果大于的话,扩展区间..并记录这个小区间中每种出现的数.出现的次数.pnum和出现次数为a的数有b个.(用map记录,map存储是按第一个key的小大顺序存储,所以我们找第一个map对...原创 2019-07-24 23:17:05 · 646 阅读 · 6 评论 -
POJ 2926 五维最远曼哈顿距离
直接暴力求,n^2*5 稳T从二维任意两点距离:|x1-x2|+|y1-y2|我们把绝对值去掉:有下面四种情况。。(x1-x2) + (y1-y2), (x1-x2) + (y2-y1), (x2-x1) + (y1-y2), (x2-x1) + (y2-y1)然鹅还是不好做。。为了高效处理,我们把相同点的信息放到一起:(x1+y1) - (x2+y2), (x1-y1)...原创 2019-09-20 22:54:03 · 263 阅读 · 0 评论 -
796C - Bank Hacking(思维+STL)
C. Bank Hackingtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAlthough Inzane successfully found his beloved bone, Zane, his ow...原创 2019-03-10 20:48:36 · 184 阅读 · 0 评论 -
hdu 1052 Tian Ji -- The Horse Racing(一组很好的测试数据)
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6786 Accepted Submission(s): 1644 Problem Descri...原创 2018-08-26 20:52:15 · 473 阅读 · 0 评论 -
codeforces 962 D. Merge Equals
D. Merge Equalstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array of positive integers. While there are a...原创 2019-04-14 17:26:21 · 173 阅读 · 0 评论 -
kuangbin带你飞专题5 并查集 G - Supermarket POJ - 1456 优先队列(小根堆)+贪心 并查集+贪心
A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold by a deadline dx that is measured as an integral number of time units starting from the moment the s...原创 2019-04-02 22:49:05 · 214 阅读 · 0 评论 -
913D - Too Easy Problems
贪心。优先选择时间花费少的;。然后加入优先队列里,优先队列返回的是限制题数少的,然后时间花费大的。如果队首的限制题数大于队列中的元素个数,那把堆顶的给pop掉。为啥这样搞呢。因为首先加时间少的肯定没问题,如果选的题出现矛盾,那去掉的肯定是限制大de,然后花费时间多的。这样的贪心策略是对的。#include<bits/stdc++.h>using namesp...原创 2019-04-07 20:16:38 · 246 阅读 · 0 评论 -
CodeForces - 115B (思维)
You have a garden consisting entirely of grass and weeds. Your garden is described by an n × m grid, with rows numbered 1 to n from top to bottom, and columns 1 to m from left to right. Each cell is i...原创 2019-02-21 22:08:32 · 232 阅读 · 0 评论 -
codeforces 978C Letters(个人想的比较简单的方法)
Letterstime limit per test4 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere are nn dormitories in Berland State University, they are numbered w...原创 2018-06-04 20:21:34 · 623 阅读 · 0 评论 -
Codeforces Round #481 (Div. 3) F. Mentors(利用结构体)简单方便
F. Mentorstime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputIn BerSoft nn programmers work, the programmer ii is characterized by ...原创 2018-06-05 16:54:19 · 346 阅读 · 0 评论 -
codeforces 978E - Bus Video System(数学思想去做)
E. Bus Video Systemtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputThe busses in Berland are equipped with a video surveillance s...原创 2018-06-05 18:42:44 · 320 阅读 · 0 评论 -
CodeForces - 433C (思维),中位数性质
Ryouko is an extremely forgetful girl, she could even forget something that has just happened. So in order to remember, she takes a notebook with her, called Ryouko's Memory Note. She writes what she ...原创 2019-02-21 23:47:40 · 497 阅读 · 0 评论 -
C. Tavas and Karafs(二分+思维。。需要很好的英语阅读能力。。我把二分检查的证明写了出来)
Karafs is some kind of vegetable in shape of an1 × hrectangle. Tavaspolis people love Karafs and they use Karafs in almost any kind of food. Tavas, himself, is crazy about Karafs.Each Karafs has...原创 2019-03-04 22:58:01 · 261 阅读 · 0 评论 -
Codeforces 1131 C 思维
C. Birthdaytime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputCowboy Vlad has a birthday today! There are nn children who came to th...原创 2019-02-25 22:12:38 · 302 阅读 · 0 评论 -
codeforce 1113C Sasha and a Bit of Relax(异或)
C. Sasha and a Bit of Relaxtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputSasha likes programming. Once, during a very long c...原创 2019-03-02 21:21:12 · 186 阅读 · 0 评论 -
第一次打CF(Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) )
10.30从320回寝室,睡了一会到,11.30赶快起来打。。第一题很简单,wa了两发,很慌,。。(错在n除以二要向上取整)第二题思路对了,判断条件好像想错了,wa数据9,半天,慌得我查了队友,他也wa9半天。。冷静下来看了一会,发现错误。第三题,刚开始想用,bfs 不太熟,转战dfs 还好寒假刚练习过 。轻松a过(还是在本地IDE调试半天BUG)还剩10分钟,看了D题 ...原创 2019-02-25 01:53:29 · 322 阅读 · 1 评论 -
HDU - 3183Magic Lamp (贪心或者(RMQ+鸽巢原理/抽屉定理))
Kiki likes traveling. One day she finds a magic lamp, unfortunately the genie in the lamp is not so kind. Kiki must answer a question, and then the genie will realize one of her dreams.The question ...原创 2019-02-26 21:33:06 · 279 阅读 · 0 评论 -
位操作 POJ - 3748 (C语言16进制读入,或者STL中的bitset)
假设你工作在一个32位的机器上,你需要将某一个外设寄存器的第X位设置成0(最低位为第0位,最高位为第31位),将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其他位保持不变。对给定的寄存器值R,及X,Y,编程计算更改后的寄存器值R。Input仅一行,包括R,X,Y,以逗号","分隔,R为16进制表示的32位整数,X,Y在0-31之间且Y>=3,(Y-X)的绝对值&g...原创 2019-03-05 22:59:20 · 362 阅读 · 0 评论 -
Codeforces 1136 C 规律 思维 STL Round #546 (Div. 2)
C:从2*2方阵变化可以发现。只能改变左下到右上这条对角线上的数字。。扩展到一般也是。即,只要把对角线上的数字排序后,A==B即可。#include<bits/stdc++.h>using namespace std;const int M = 550;int a[M][M];int b[M][M];vector<int > vecA[2*M]...原创 2019-03-13 22:06:22 · 172 阅读 · 0 评论 -
codeforces 1136D. Nastya Is Buying Lunch
D. Nastya Is Buying Lunchtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAt the big break Nastya came to the school dining room....原创 2019-03-13 23:21:30 · 265 阅读 · 0 评论 -
code forces 1121C(思维模拟)
C. System Testingtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputVasya likes taking part in Codeforces contests. When a round is ...原创 2019-03-07 17:25:51 · 497 阅读 · 0 评论 -
Codeferce 1138B - Circus(思维+数学)
B. Circustime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputPolycarp is a head of a circus troupe. There arenn— an even number— a...原创 2019-03-12 17:22:42 · 224 阅读 · 0 评论 -
Codeforces Round #545 (Div. 2)C codeforce 1138C - Skyscrapers
C. Skyscraperstime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputDora loves adventures quite a lot. During some journey she encount...原创 2019-03-12 20:15:10 · 521 阅读 · 0 评论 -
HDU - 6438 优先队列,+贪心。
The Power Cube is used as a stash of Exotic Power. There arenncities numbered1,2,…,n1,2,…,nwhere allowed to trade it. The trading price of the Power Cube in theii-th city isaiaidollars per cube...原创 2019-04-06 18:44:55 · 292 阅读 · 0 评论