由於r −l
<=10
r-l<=10
r−l<=1
0,所以考慮列舉每一段的長度len,又因為字符集並不大,根據抽屜原理,總共最多有51個段。所以我們列舉len,計算與每個點最早衝突的點的位置,就是把點按mod
lenmod~~len
modlen
分組。然後列舉起點,看每個起點可以往後擴充套件到什麼位置:用st表維護當前選擇的區間中最近的衝突位置,然後看是否可以把下乙個段選進來。
複雜度o
(510∗n
)o(510*n)
o(510∗
n)
#include
#include
#include
#include
#include
using
namespace std;
const
int maxn=
5e5+5;
const
int inf=
1e9;
inline
intread()
while((
isdigit
(c))
&&(c!=
eof)
)return t*f;
}int n,l,r,s,lg[maxn]
,ans;
char c[maxn]
;int sum[maxn]
,a[maxn]
,ch[maxn][52
],pos[maxn]
,st[maxn][20
];#define min(a,b) (a)
inline
intget
(int l,
int r)
signed
main()
else
}scanf
("%s"
,c+1);
for(
int i=
1;i<=n;i++
)for
(int len=l;len<=r;len++
)for
(int j=1;
(1<
<=n;j++)}
for(
int i=
1;i<=n;i++)if
(i+now*len-
1>n)
now--;if
(now>=s)}}
printf
("%d\n"
,ans)
;return0;
}
一道演算法題
兩個燒杯,乙個放糖乙個放鹽,用勺子舀一勺糖到鹽,攪拌均勻,然後舀一勺混合 物會放糖的燒杯,問你兩個燒杯哪個雜質多?一樣多吧 對的 為啥?是不是因為 糖和鹽本來就是均勻的 因為,就算不攪拌均,你放一勺過去,那邊放一勺不含雜質的過來,那麼都是一勺雜之 如果攪拌均勻的話也是一樣 小依 21 45 32 也...
一道演算法題
1.上午主要做了對翻譯任務的劃分,下午把 翻譯完畢。2.明天要講的演算法題 對乙個集合,求出其連續元素組成的子集中,和最大的子集 我對這道題的理解是 1 若集合中最小值大於0,意味著所有的都大於0,則最大的子集和,為所有值加起來 2 若集合中最大值小於0,意味著所有的都小於0,則最大的子集和,為集合...
一道演算法題
include using namespace std const int size 5 int max sub array const int a,int n,int m int max matrix const int a size int row,int col,int subsize int...