随笔分类 - 算法基础——枚举
摘要:第一个数的范围是[1,2*a],不然不如把它变成1,同理第二位为[1,3*b],第3位可以直接算出来 #include <bits/stdc++.h> #define inf 2333333333333333 #define N 1000010 #define p(a) putchar(a) #de
阅读全文
摘要:https://codeforces.com/problemset/problem/525/E每个仙女有三种情况,枚举一下,n对半分,使得复杂度变成o(k*3^(n/2))用map统计的时候,每次如果跑for的话会有很多重复的,这样可以直接存下来前缀和 for(auto i:mp){ for(int
阅读全文
摘要:所有不合法的只有这些可能: ABBBBBB BAAAAAA AAAAAAB BBBBBBA 所以把这些去了就可以了。 #include <bits/stdc++.h> #define inf 2333333333333333 #define N 1000010 #define p(a) putcha
阅读全文
摘要:https://vjudge.net/contest/365698#problem/J l[i]表示以a[i]为右端点的为负数的情况,r[i]表示为整数。 转移就是这样: if(a[i]<0){ l[i]=r[i-1]+1; r[i]=l[i-1]; } else{ l[i]=l[i-1]; r[i
阅读全文
摘要:先跑一遍spfa,这样就排除了小于k条边的情况。枚举那k条边中最小的边权,然后让所有的边都减去它,接着跑spfa,然后在加上k*v[i] #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #incl
阅读全文
摘要:CodeForces - 626D 前缀和+概率cnt[i]表示差为i的数对的数量;sum[]为cnt的前缀和i表示第一回合的差,j表示第二回合的差,i+j小于第3回合,第三回合一共sum[5000]-sun[i+j],最后用组合公式算一下 #include <iostream> #include
阅读全文
摘要:00001111在前i-1个全相等的情况下,对于位置i,如果a[i]!=a[i-1],要么把前i-1个反转,要么把n-(i-1)位置的反转。按位处理,每次从这两个情况里面取最大值。最后从这些最大值里取最小值就是答案 #include <iostream> #include <cstdio> #inc
阅读全文
摘要:AtCoder - 3959https://vjudge.net/problem/1583855/origin求最长连续递增长度就行,答案是n-max(len)
阅读全文
摘要:https://vjudge.net/problem/2198220/origin枚举等差数列第一个和第二个,然后二分确定数列后面是否存在,复杂度比较玄学,卡过了。 也可以dp做,f[j][i]=max(f[j][i],f[i][pre]+1);f[j][i]表示j是等差数列最后一个下标,i是倒数第
阅读全文
摘要:http://codeforces.com/gym/100623/attachments H题已经给出来的,包括后来添加的,都累加得到ans,那么从1~ans都是可以凑出来的,如果ans<a[now]-1,那么就添加一个ans+1,然后继续操作。 1 #include<iostream> 2 #in
阅读全文
摘要:2013年山东省赛F题 Mountain Subsequences先说n^2做法,从第1个,(假设当前是第i个)到第i-1个位置上哪些比第i位的小,那也就意味着a[i]可以接在它后面,f1[i]表示从第一个开始,以a[i]为结尾的不同递增序列的个数,要加上1,算上本身。正反各跑一遍,答案加一下(f1
阅读全文
摘要:I - Infinite Improbability Drivehttp://codeforces.com/gym/241750/problem/I不断构造,先填n-1个0,然后能放1就放1,最后这个序列的长度就是(1<<n)+n-1,也就是每添加1位就要匹配出来一个。 1 #include<ios
阅读全文
摘要:http://codeforces.com/gym/241680/problem/B比赛的时候考虑的是,它们3个尽可能接近,然后好麻烦,不如暴力枚举,这里不需要质因数分解,而是两重循环枚举所有因数,第3个因数也就随之确定 1 #include<iostream> 2 #include<cstdio>
阅读全文
摘要:Gym 100963B啊,郁闷,就tm调小了一点范围就A了,就写dp和贪心比较一下,范围到最大值的二倍-1就好了假设最大值的2倍以内能满足最优条件,当金额范围超过最大值2倍的时候;至于为什么,还不清楚,再想想 #include<iostream> #include<cstdio> #include<
阅读全文
摘要:poj 1753做搜索题还是要找到特殊性质和枚举方式哪怕很简单的性质,也会产生很大的影响在这个题中,同一个格子翻2次和不翻没有区别,在这里有一个小细节就是可以有impossible的情况,这也意味着所有情况都可以在规定时间内枚举到,这也就是你枚举所有情况就可以了。这题还有一个巧妙的方法如果第一行是确
阅读全文
摘要:P2659 美丽的序列对于当前的最小值,找到最大的左右边界,然后更新答案。用单调队列确定左右边界,O(n)做法。
阅读全文
摘要:B. Divisiblity of Differencestime limit per test1 secondmemory limit per test512 megabytesinputstandard inputoutputstandard outputYou are given a mult
阅读全文
摘要:P2837 晚餐队列安排对程序有新的理解难度:读懂题&&准确地从题中提取有效信息>设计算法>代码实践mmp,我看错题啦。前缀和&&枚举断点即可 1 #include<queue> 2 #include<algorithm> 3 #include<cmath> 4 #include<ctime> 5
阅读全文
摘要:P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold我比赛的时候A了,luogu上25分,QAQ,又憨又傻的200+代码,我为什么要干电脑干的事情,无语了。如果左边<右边,取左如果右边<左边,取右如果相等,就向中间找,直到找到第一个不同的,然后给电脑指明下一步是取
阅读全文
摘要:P1203 [USACO1.1]坏掉的项链Broken Necklace不错的断环为链的模拟题,开成三倍,有很多细节要考虑,比如总长度要<=n,开头第一个是w等等。
阅读全文