日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

每日打卡 22 11 16 CF 1694B Paranoid String

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每日打卡 22 11 16 CF 1694B Paranoid String 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

蒟蒻一個,從今天起每天一道CF1000-1400的思維題.........希望可以堅持下去.

題目大意如下:

給定一個m長的01字符串然后你可以對他進行至多m-1次如下操作:

1:將一個”01“字串變為”1“

2:將一個”10“字串變為”0“

后將其變為長度為1的字符串;

現在有長度n的01字符串請問多少個字串滿足上述條件

t組數據。

t<=100,n<=2e5;

所有的n<=2e5;

仔細分析下題,可以將兩次操作理解為刪除兩個相鄰的不同的字符中左邊的那個字符(關鍵點);

如果這里能夠get到的話這個題就不難了(好吧我承認我找了題解= =)

那么這樣的話對于這整個序列中的一個字符s[i]來講:

1 如果s[i]==s[i-1]那么所有以s[i]為結尾的子串都不可能滿足條件,因為他倆相同 這樣的話就 無法刪除

s[i-1],則長度永遠不會是1

2 如果s[i]!=s[i-1]那么所有以s[i]為結尾的字串都滿足條件。

OK,我們來論證一下:首先如果s[i-2]與s[i-1]是相同的話那么我們可以刪除s[i-1]于是再次形成s[i]!=s[i-1]的情況。

2如果s[i-1]!=s[i-2];那么就可以刪除s[i-2]那么還是s[i-1]!=s[i]的情況;

綜上無論如何都會滿足s[i]!=s[i-1]的情況。故只要相鄰的滿足不同,那么所有以為s[i]的子串滿足條件

代碼如下

/*?
每日CF打卡 E.M.T!

*/
#include<stdio.h>
#include<string.h>
char s[200005];

int main(){
?? ?long long t,len,ans;
?? ?scanf("%lld",&t);
?? ?while(t--){
?? ? scanf("%lld",&len);
?? ? ans=0;
?? ? scanf("%s",s);
?? ? int i;
?? ? for(i=1;i<len;i++){
?? ? ?if(s[i]==s[i-1]) ans++;
?? ? ?else ans+=(i+1);
?? ? }?? ?
?? ?printf("%lld\n",ans+1);?? ?
?? ?}?? ?
? ?return 0;?
}

wwwww我好菜啊。。。

希望明天可以不看題解做出來。。

?

總結

以上是生活随笔為你收集整理的每日打卡 22 11 16 CF 1694B Paranoid String的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。