思维
wtcl
这个作者很懒,什么都没留下…
展开
-
石油大 磨合(思维)
1.按照x从小到大排序2.i从1到n遍历,i之后的y一定选。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<set>using namespace std;const int N=1e5+100;struct Node{ int x,y;}a[N];bool cmp(Node a,Node b){ return原创 2020-08-31 15:53:38 · 82 阅读 · 0 评论 -
牛客多校五 Drop Voicing(思维+最长上升子序列)
思路:比赛时一个很大的错误在于根本没有想过把这个序列变成一个环。但其实上次多校才刚刚做过这么一道题。• 我们将模型转换成有一个圆盘,圆盘上有n个位置,且有一个指针(初始时指针指向原来的最后一个元素)• 连续若干次操作1等价为改变指针指向的数所处的位置• 连续若干次操作2等价为改变指针的位置• 容易观察到,我们只需要取环上最长的一个上升子序列,然后调整其它数,即可得到答案#include<cstdio>#include<cstring>#include<ios原创 2020-07-25 21:46:41 · 107 阅读 · 0 评论 -
牛客多校三 Two Matchings(思维+dp)
题目:https://ac.nowcoder.com/acm/contest/5668/E思路:1.把数组从小到大排序2.第一组:相邻的两个为一对3.第二组:四个或六个为一小组,小组内两两为一对(有多种情况,从中选择一种最小的,这个组合是确定的) ,用dp来做。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#原创 2020-07-19 12:19:13 · 144 阅读 · 0 评论 -
Four Operations HDU - 5938(思维)
题意:给你一个字符串,把它分成四块,按顺序把符号+ - * /放上去,问能得到的最大数是多少。思路:首先我们看*和/,因为前面有-,所以后面的数要尽可能的小。那么相乘要最小肯定是一位数乘一位数。除的话有两种情况,可能除一位数最小可能除两位数最小,因为一位数乘一位数不可能得到三位数,如果除一个三位数会浪费了一位,然后就是加的部分了,加得到的数最大肯定是一位数加多位数或者多位数加一位数,那么现在答案很明显就只有4种情况,4种求出来取最大就是答案了#include<cstdio>#include原创 2020-07-10 12:42:21 · 96 阅读 · 0 评论 -
K.Bro Sorting HDU - 5122(思维)
题意一串数字,可以向后移动其中任意一个数直到遇到一个数比其大,问最少移动步数是多少。思路当一个数的右边有比它小的数则说明可以移动,ans++, minn记录从左到右某个位置经历过最小的数,这样直接遍历到哪跟minn一比较就行。代码:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=1e6+原创 2020-07-10 11:43:59 · 66 阅读 · 0 评论 -
ArcSoft‘s Office Rearrangement HDU - 5933(思维)
1.求出所有数的和sum sum如果是k的倍数一定有解,反之无解。2.a=sum/k就是最后相等的数,从头开始遍历。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=1e5+100;#define ll long longll a[N];int main(){ int t; scan原创 2020-07-09 16:08:00 · 74 阅读 · 0 评论 -
Maximum Multiple HDU - 6298(思维)
1.看到t最大1e6,觉得应该有规律。2.打表发现12个数为一组,然后就没有然后了。。。题意:给定一个n,是否能找到x,y,z满足x+y+z=n,x|n(n能被x整除),y|n,z|n,且xyz最大。思路:令a=n/x,b=n/y,c=n/z,1/a+1/b+1/c=1,a,b,c的三个解分别为:1. 3 3 3 2. 2 4 4 3. 2 3 6要求xyz最大,即要求abc最小,则选取情况1,2,因为情况3比1小舍去。#include<cstdio>#include<原创 2020-07-08 17:53:01 · 94 阅读 · 0 评论 -
Bazinga HDU - 5510(字符串匹配)
思路:1.直接暴力1e8会超时2.不难发现如果s[i]是s[i+1]的子串,如果s[i]不是一个字符串的子串,那么s[i+1]一定不是该字符串的子串。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;char s[510][2010];int st[510];int main(){ int t; scanf原创 2020-07-04 22:09:41 · 101 阅读 · 0 评论 -
House Building HDU - 5538(思维)
代码:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int a[100][100];int X[4]={0,0,1,-1};int Y[4]={1,-1,0,0};int main(){ int n,m; int t; scanf("%d",&t); while(t--) { int a原创 2020-07-04 10:54:24 · 68 阅读 · 0 评论 -
Array(思维 二进制)
题目:https://ac.nowcoder.com/acm/contest/5929/D看了题解发现这道题和cf一道题一模一样,还是我做过的比赛,结果自己毫无印象。。。1.x>y时无解,异或是不进位的加法 结果不会比加法大2.x=y是 当x=0是结果为0 否则结果唯一3.x和y的奇偶性不同时无解因为异或不会对x二进制数的最小位产生影响(没有更小的位进位)最小位相同,奇偶性相同4.奇偶性相同的数都可以写成 x^ t ^t=x (t=(y-x)/2) x+t+t=y 结果为最大3当原创 2020-06-24 18:11:14 · 160 阅读 · 0 评论 -
Min Value(思维)
题目链接:https://ac.nowcoder.com/acm/contest/5929/B把正负数分别存起来由于在答案相同的情况下要找序号小的,所以把每个数最小的两个序号存起来三种情况:1.最小的两个正数2.最大的两个负数3.根据每个负数寻找最接近的正数#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<map>#i原创 2020-06-24 16:49:18 · 240 阅读 · 0 评论 -
Codeforces Round #633 D. Edge Weight Assignment(思维)
讲解:https://blog.csdn.net/qq_30435963/article/details/105486069?fps=1&locationNum=2#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vec...原创 2020-04-15 11:13:12 · 85 阅读 · 0 评论 -
Codeforces Round #633 A - Filling Diamonds(计数)
可以发现,一个图里有且只有一个垂直菱形。无论你在什么地方放置垂直菱形,所有其他地方都是由水平钻石唯一放置的。有n个地方可以放置垂直菱形,所以每个测试用例的答案是N。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace s...原创 2020-04-13 10:02:19 · 369 阅读 · 0 评论 -
Codeforces 1339C - Powered Addition(思维)
讲解:https://www.cnblogs.com/stelayuri/p/12689098.html这道题刚开始读错了题目,以为每次只可以选一段。。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;con...原创 2020-04-13 09:51:36 · 123 阅读 · 0 评论 -
Educational Codeforces Round 84 D. Infinite Path(思维 置换群)
思路:从i->p[i]连一条边 会形成若干个环。最后结果需要每个环的颜色都相同p^k相当于环中的点沿边的方向走k条边,走过的点形成形成一个新的 环。枚举环的长度l的约数,检查形成的新的环颜色是否相同。#include<cstring>#include<iostream>#include<algorithm>#include<vector...原创 2020-03-27 11:26:38 · 89 阅读 · 0 评论 -
Educational Codeforces Round 84 E. Count The Blocks(思维 计数)
题目:你写下了从0到10^n-1的所有整数,并用前导零填充它们,使它们的长度正好是n。例如,如果n=3,那么你写下了000,001,…,998,999。整数x中的块是一个连续的等号段,不能向左或向右扩展。例如,在整数00027734000中,有三个长度为1的块、一个长度为2的块和两个长度为3的块。对于从1到n的所有整数,计算写下的整数中长度为i的块的数量。由于这些整数可能太大,请将它们按模块9...原创 2020-03-27 10:47:51 · 187 阅读 · 0 评论 -
Codeforces Round #515 (Div. 3) B. Heaters
题目大意 房间为一条直线长度为n 如果pos位置有加热器并且打开则能加热[pos - r + 1, pos + r - 1]区域 告诉你哪些位置有加热器0无1有 问最少开启多少加热器能把整个房间加热i遍历每个未加热的位置 使用last记录上次开启的加热器位置 j扫描i + r - 1位置到上次的加热器位置内是否有加热器如果有则打开 i跳到下一个未加热的位置i = k + r 注意数组开2000因...原创 2019-11-19 21:29:00 · 45 阅读 · 0 评论 -
Divisibility Codeforces 597A
思维#include<iostream>using namespace std;#define ll long longint main(){ ll k,a,b; cin>>k>>a>>b; ll sum=0; if(a>=0) { sum=b/k-a/k; if(a%k==0) sum...原创 2019-11-19 19:07:51 · 69 阅读 · 0 评论 -
Not Equal on a Segment(CF-622C)
思维ans[i] 表示i前面第一个不等于num[i]的位置#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int num[200010];int ans[200010];int main(){ in...原创 2019-11-17 21:06:32 · 75 阅读 · 0 评论 -
Guess the Permutation
思维1.找到每一行的最大值。这一行小于最大值的数可以确定为这.一列的值。2.把每一行的最大值按照从大到小排列。将没有用过的值从大到小依次分配。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int num...原创 2019-11-17 20:23:07 · 241 阅读 · 0 评论 -
Domino
解题说明:此题是要求交换一些行上两个数的位置让前后两列数字之和都是偶数。做法是先统计前后两列的和,如果和都为偶数就不用交换,如何一奇一偶那么无论如何交换都不行,如果是两个奇数则需要找到某一行中两个数字之和为奇数的情况,因为交换了这两个数,前后列的和分别变化1,这样正好得到了两个偶数。分析后发现其实题目中最多只需要交换一行即可。#include#include#includeusing na...原创 2019-11-12 20:14:25 · 85 阅读 · 0 评论 -
HDU 6016 Count the Sheep
枚举中间的边,然后把(b的朋友数-1)*(c的朋友数-1)加到答案中。(最后注意乘二,因为颠倒顺序又能出来一组)#include<stdio.h>#include<string.h>#include<cstring>#define ll long longusing namespace std;int a[100010],b[100010];ll ...原创 2019-11-08 21:31:13 · 52 阅读 · 0 评论 -
CodeForces 735 B.Urbanization
Description一个有n个数的集合,要拿出两个不相交子集,一个n1个数,一个n2个数,问两个集合算术平均值之和的最大值Input第一行三个整数n,n1,n2,之后n个整数a[i] (1<=n,n1,n2<=1e5,n1+n2<=n,1<=a[i]<=1e5)Output输出两个子集的算术平均数之和的最大值Sample Input2 1 11 5...原创 2019-11-06 19:50:46 · 92 阅读 · 0 评论 -
HDU-5090--Game with Pearls
题目大意:Tom和Jerry做游戏,给定N个管子,每个管子上面有一定数目的珍珠。 现在Jerry开始在管子上面再放一些珍珠,放上的珍珠数必须是K的倍数,可以不放。 最后将管子排序,如果可以做到第i个管子上面有i个珍珠,则Jerry胜出,反之Tom胜出。解题思路: 贪心:(15ms) 将N个管子按管子中的珍珠数量升序排序,则满足条件的时候第i个管子应该有i个...原创 2019-11-06 16:42:31 · 88 阅读 · 0 评论 -
B. Dasha and friends
这个题转换一下思路就可以了。不要想起点在哪,而是计算出每个障碍之间的间隔是多少。然后求出的两个间隔队列比较一下,注意这里的比较不要忘记位移比较,因为是个圈。所以如果在某个位移位置存在重合,那么就是相等的,否则就是不相等。#include<cstdio>#include<algorithm>#include<vector>#include<cma...原创 2019-11-06 16:03:21 · 101 阅读 · 0 评论 -
Two Buttons CodeForces - 520B
题意:给出n和m,可以对进行两种操作,对n减1和对n乘2,问最少进行多少种操作可以让n变到m。思路:嗯…有点像bfs,但数据有点大。先分类思考一下,当n大于m时,只能进行减操作n-m次。n小于m时呢,我们可以倒过来,看m如何变成n,进行加和除的操作。只有m是偶数时才能除,所以只需要判断一下几步可以小于等于n就可以了。#include<cstdio>#include<cstr...原创 2019-10-18 21:01:27 · 67 阅读 · 0 评论