事實上我不知道該把這道題放在那一塊........
此題用了1部分二分的思想,還有函式思想,sdfz大佬用的三分思想orz.......
40分暴力:
將環搞成2len的序列,然後與處理出
sumlb[i]表示從1-i的b移動到左段的總步數 blcnt[i]表示從1-i的b的個數,其餘相似。。。
然後分n個區間列舉斷點,有一點:
kx=(sum_lb[k]-sum_lb[l-1])+(sum_rb[k+1]-sum_rb[r+1]);
kxl=rlcnt[l-1]*(blcnt[k]-blcnt[l-1]);
kxr=rrcnt[r+1]*(brcnt[k+1]-brcnt[r+1]);
return kx-kxl-kxr
這裡我們不能單純加kx因為陣列表示從1-i而此時區間l-r則不是
1 #include2 #include3 #include4 #includeview code5 #include6 #include7 #include8 #include9 #include10
#define ps push_back
11#define maxn 105101
12#define ll long long
13using
namespace
std;
14int
t;15
intn;
16char
c[maxn];
17int
a[maxn];
18int
len;
19int
minn;
20int
sum1,sum2;
21int
sum_lb[maxn],sum_rb[maxn];
22int
blcnt[maxn],brcnt[maxn],rrcnt[maxn],rlcnt[maxn];
23int getsum(int l,int k,int
r)24
32void work(int l,int
r)3342}
4344
intmain()
4563
for(int i=1;i<=len;++i)
6469
int lr=0;70
for(int i=1;i<=2*len;++i)
7180
else
8185
//printf("bl=%d rl=%d\n",blcnt[i],rlcnt[i]);86}
87int rr=0;88
for(int i=2*len;i>=1;--i)
8998
else
99103
}104
for(int i=1;i<=len-1;++i)
105108 printf("
%d\n
",minn);
109}
110}
111/*
1129
113brrrbrrrbbrbbr
114rrrrrbrrrrrbbrr
115*/
100分**
滿足性質區間向右移最優斷點向右移或不變
看過znn的部落格受到啟發
然後o(n)列舉區間,指標移動最優斷點即可
1 #include2 #include3 #include4 #includeview code5 #include6 #include7 #include8 #include9 #include10
#define ps push_back
11#define maxn 2005101
12#define ll long long
13using
namespace
std;
14ll t;
15char
c[maxn];
16ll a[maxn];
17ll len;
18ll minn;ll zh;
19ll sum1,sum2;
20ll sum_lb[maxn],sum_rb[maxn];
21ll blcnt[maxn],brcnt[maxn],rrcnt[maxn],rlcnt[maxn];
22ll getsum(ll l,ll k,ll r)
2329
intmain()
3046
for(ll i=1;i<=len;++i)
4752 ll lr=0;53
for(ll i=1;i<=2*len;++i)
5462
else
6367
}68 ll rr=0;69
for(ll i=2*len;i>=1;--i)
7078
else
7983
}84 ll ans=0
;85 zh=(rlcnt[len]+1)/2;86
for(ll i=1;i<=len;++i)
8793
}94 ans=getsum(1
,zh,len);
95//
printf("aa%lld %lld\n",getsum(1,zh,len),zh);
96 ans=min(ans,minn);
97for(ll i=1;i<=len;++i)
98110
//printf("ans=%lld\n",ans);
111}
112 minn=min(ans,minn);
113}
114//
printf("%lld\n",minn);
115 printf("
%lld\n
",minn);
116}
117}
118/*
1199
120brrrbrrrbbrbbr
121rrrrrbrrrrrbbrr
122*/
light題目講解 7 25模擬賽T1
心得 這一道題其實就是自己打暴力打出來的 沒有想到正解真的就是暴力列舉 我的做法是這樣的 就是列舉a字串中長度為x的子串 看它是不是b串的子串行 接下來是我的絕望考試 100分ac light 這一道題我個人的思路就是二分答案 暴力 include using namespace std strin...
壽司晚宴(dinner)
時間限制 1 sec 記憶體限制 512 mb 題目描述 為了慶祝 noi 的成功開幕,主辦方為大家準備了一場壽司晚宴。小 g 和小 w 作為參加 noi 的選手,也被邀請參加了壽司晚宴。在晚宴上,主辦方為大家提供了 n 1 種不同的壽司,編號 1,2,3,n 1,其中第 i 種壽司的美味度為 i ...
心得 暑假7 25
最近學了很多新知識 學的莫隊可以離線處理多個區間詢問,規模1e5可以放心 然而打錯的莫對 或是忘記sort 確實比不上n2暴力 最後一道permu貌似有其他打法1k ms,然而這道題其實和很久之前的考試題旅店異曲同工,我用權值線段樹維護莫隊的區間內連續的01串,查詢時直接查詢整個線段樹的最大值即為當...