这就有点妙了,rp++,过了一个测试点直接拉评测竟然AC了,妙不可言。
#include <bits/stdc++.h>
using namespace std;
bool status[101][2001];
int n,a[101],b[101];
char s[101];
int main()
{
cin>>n;
cin>>s;
for (int i=1;i<=n;i++)
cin>>a[i]>>b[i];
for (int i=1;i<=n;i++)
{
for (int t=0;t<=2001;t++)
{
if (t<b[i]) {
if (s[i-1]==‘1‘) status[i][t]=1; else status[i][t]=0;
}
else
{//toggle以后
if ((t-b[i]+1) % (2*a[i])>a[i] || (t-b[i]+1) % (2*a[i])==0) {
if (s[i-1]==‘1‘) status[i][t]=1; else status[i][t]=0;
}
else {
if (s[i-1]==‘1‘) status[i][t]=0; else status[i][t]=1;
}
}
}
}
int ans=0,temp=0;
for (int t=0;t<=2001;t++)
{
temp=0;
for (int i=1;i<=n;i++)
{
if (status[i][t]==1) temp++;
}
if (temp>ans) ans=temp;
}
cout<<ans;
return 0;
}
需要动动脑筋算一下,不过时间线模拟器来还是有点烧脑,不过方程推出来就行了。
等会儿我来详细解释一下。
原文:https://www.cnblogs.com/asanagiyantia/p/11521622.html