【USACO1.1】Broken Necklace

題意

一個環形項鏈,有rbw三種珠子,r代表red,b代表blue,w代表white,從任意一個位置斷開,兩端分別取珠子,同一端取的珠子要相同顏色,w可以染成想要的顏色,即既可當作r也可以當作b,求最多取得的珠子個數。最多有350個珠子。

分析

可以枚舉斷開的位置,然后模擬取珠子。也可以枚舉起點位置。還可以dp做。

代碼

枚舉斷點

#include<cstdio>
#include<algorithm>
#define N 355
using namespace std;

char a;
int b[N];
int n,ans;

int solve(int p,int dir) //p為起始點,dir為方向,求最多取幾顆
{
int len=0;//取了的珠子個數,最多取n顆珠子

for(int j=p+n; len<n; len++,j+=dir) //j為當前位置+n,當前位置為j%n
{
if(b[p] && b[j%n] && b[j%n]!=b[p])
break;
if(!b[p])//每次取珠子都要符合p位置的顏色,若p位置是w,就要更新p
p=j%n;
}
return len;
}
int main()
{
scanf("%d ",&n);
for(int i=0; i<n; i++)
{
a=getchar();
b[i]=a=='b'?1:a=='r'?2:0;// b--1 r--2 w--0
}
for(int i=0; i<n; i++)//枚舉斷點
ans=max(ans,solve(i,-1)+solve(i+1,1));
ans=min(ans,n);//可能同一顆被兩次計算過,但只出現在全都取的情況里
printf("%d\n",ans);
return 0;
}

枚舉起點

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<string>
using namespace std;
int n,ans;
string s;
int main()
{
cin>>n>>s;
s+=s;
for(int i=0,j; i<n; i++) //以i為第一段的起點,不是切開的位置
{
char now=s[i];
int len=0;
int times=now=='w'?3:2;//如果當前是白色,那么需要找三段相同顏色的否則找兩段
j=i;
while(times--)
{
while(j<i+n&&(s[j]==now||s[j]=='w'))
{
len++;
j++;
}
now=s[j];
}
ans=max(ans,len);
}
cout<<ans<<endl;
return 0;
}

DP

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#define N 720
using namespace std;
int n,ans;
string s;
int l[N][2],r[N][2];
int main(){
cin>>n>>s;
s+=s;
for(int i=1;i<2*n;i++){
l[i][0]=l[i-1][0]+1;
l[i][1]=l[i-1][1]+1;
if(s[i-1]=='r')
l[i][1]=0;
else if(s[i-1]=='b')
l[i][0]=0;
}
for(int i=2*n-1;i>=0;i--){
r[i][0]=r[i+1][0]+1;
r[i][1]=r[i+1][1]+1;
if(s[i]=='r')
r[i][1]=0;
else if(s[i]=='b')
r[i][0]=0;
}
for(int i=0;i<2*n;i++)
ans=max(ans,max(l[i][0],l[i][1])+max(r[i][0],r[i][1]));
ans=min(ans,n);
cout<<ans<<endl;
return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458822.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458822.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458822.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html+注釋格式化,使用xml注釋來生成格式化的html輸出

我試圖從我在xml文件中的注釋中生成一個格式良好的html文檔。目前我有一個xml文件&#xff0c;用于生成xml表格的html列表。為了讓我添加有關表格的評論&#xff0c;我手動將注釋添加到輸出html文件中。使用xml注釋來生成格式化的html輸出我想如果可能將html代碼放在xml文件中作…

圖像增強-圖像銳化

圖像銳化主要影響圖像中的低頻分量&#xff0c;不影響圖像中的高頻分量。 圖像銳化的主要目的有兩個&#xff1a; 1.增強圖像邊緣&#xff0c;使模糊的圖像變得更加清晰&#xff0c;顏色變得鮮明突出&#xff0c;圖像的質量有所改善&#xff0c;產生更適合人眼觀察和識別的圖像…

[譯]git revert

git revert git revert用來撤銷一個已經提交了的快照. 但不是從項目歷史中移除這個commit, 而是生成一個新的commit, 老的commit還是保留在歷史項目里面的. 這樣做的好處是防止了項目丟失歷史. 用法 git revert <commit>生成一個新的commit, 撤銷老的<commit>的所有…

圖像二值化算法總結

****************************************************************************************************************************************** 紅&#xff1a;數字圖像處理視頻教程&#xff08;兩部&#xff09; {中科院版36講視頻教程 電子科大版70講視頻教程&#xff…

html 替換反斜杠,在URL直接替換反斜杠反斜杠

我們有一個系統&#xff0c;基于Moodle的平臺&#xff0c;在這里的文件是這樣引用&#xff1a;在URL直接替換反斜杠反斜杠的http&#xff1a;// [服務器] /file.php/3/LR4/info/ index.html的現在&#xff0c;這個偉大的工程&#xff0c;但是我們的一些老師錯誤地使用落后的斜杠…

VMware橋接模式無法連網

2019獨角獸企業重金招聘Python工程師標準>>> #VMware橋接模式無法連網 在VMware上裝了個CentOS7&#xff0c;使用橋接模式連網&#xff0c;開始使用的時候沒有問題&#xff0c;可以正常上網。最近打開的時候發現上不了網了&#xff0c; 使用ifconfig查看也沒有分配到…

Java 7 中 NIO.2 的使用——第四節 文件和目錄

Files類提供了很多方法用于檢查在于你真正實際去操作一個文件或目錄。這些方法強烈推薦&#xff0c;也非常有用&#xff0c;也能避免很多異常的發生。例如&#xff0c;一個很好的習慣就是在你試著移動一個文件從一個地方到另一個地方的時候&#xff0c;先檢查文件是否存在。 檢…

計算機二級access知識點6,2019年計算機二級ACCESS考試知識點:關系數據模型

【導語】2019年計算機二級考試備考正在進行中&#xff0c;為了方便考生及時有效的備考&#xff0c;那么&#xff0c;無憂考網為您精心整理了2019年計算機二級ACCESS考試知識點&#xff1a;關系數據模型&#xff0c;歡迎大家的關注。如想獲取更多計算機二級考試的備考資料&#…

乘方取模計算(模冪計算)

乘方取模計算也稱為模冪計算&#xff0c;在密碼系統中經常使用&#xff0c;是不可缺少的。 使用本程序可以解HDU2035&#xff0c;只需要考慮輸入和輸出。 /** 乘方取模** 已知給定的正整數a、n和m&#xff0c;計算x的值&#xff0c;a^n x (mod m)。** 二分法用在這里也很有效果…

Moldflow中文版注塑流動分析案例導航視頻教程

http://item.taobao.com/item.htm?spma1z10.5.w4002-9510581626.18.30lDTO&id43054534418 QQ&#xff1a;2911984429 http://aidem.lingw.net/

Jaxb annotation使用

JAXB&#xff08;Java Architecture for XML Binding) 是一個業界的標準&#xff0c;是一項可以根據XML Schema產生Java類的技術。該過程中&#xff0c;JAXB也提供了將XML實例文檔反向生成Java對象樹的方法&#xff0c;并能將Java對象樹的內容重新寫到XML實例文檔。從另一方面來…

湖北大學計算機袁云,暑期走訪不停歇 遠赴異地送關懷——學校慰問離退休教職工和校友...

不畏酷暑送清風&#xff0c;心常為老懷關愛。7月至8月&#xff0c;正值高溫時節&#xff0c;校領導和各單位負責人根據學校黨委的安排&#xff0c;赴深圳、廣州、北京、上海等地走訪慰問70歲以上離退休教職工和部分校友&#xff0c;把學校的問候和祝福送到他們身邊。“對老同志…

MATLAB各類函數詳細講解 simulike系統仿真分析

http://item.taobao.com/item.htm?spma230r.1.14.40.yWjJFw&id43113292964&ns1&abbucket2&_uk10ekfuf6120#detail Matlab基本操作函數 SIMULINK仿真函數 插值與擬合函數視頻教程 符號運算函數視頻教程 概率統計函數視頻教程 級數與微積分函數視頻教程 矩陣運…

Github Coding Developer Book For LiuGuiLinAndroid

Github Coding Developer Book For LiuGuiLinAndroid 收集了這么多開源的PDF&#xff0c;也許會幫到一些人&#xff0c;現在里面的書籍還不是很多&#xff0c;我也在一點點的上傳&#xff0c;才上傳不到一半&#xff0c;沒辦法&#xff0c;庫存太多了 覺得全部pull麻煩的話&…

#個人博客作業week2——結對編程伙伴代碼復審

General 1.程序能夠順利地運行。程序通過命令行輸入&#xff0c;能夠向對應的文件中輸出符合要求的題目和答案。程序能夠根據用戶的不同選擇&#xff0c;進行題目的生產或答案的校驗&#xff0c;生成出的題目符合參數要求和項目的查重等各種要求&#xff0c;答案校驗準確迅速。…

Linux設備驅動程序(第三版)/深入理解計算機系統(原書第2版)/[Android系統原理及開發要點詳解].(韓超,梁泉)百度云盤下載

文檔下載云盤連接&#xff1a;http://pan.baidu.com/s/1dDD2sgT 更多其他資料&#xff0c;請關注淘寶&#xff1a;http://shop115376623.taobao.com/ http://item.taobao.com/item.htm?spma230r.1.14.3.ArS64K&id43025290175&ns1&abbucket2&_uk10ekfuf6187#d…

個人用戶上網需要有計算機電話線,個人用戶上網需要有計算機、電話線、用戶賬號和口令,以及______。...

_條形碼按照使用目的可分為()、()和()。簡述市場定位的步驟。植物、真菌、藻類和原核細胞的細胞外基質是用糞便隱血試驗鑒別消化道良性與惡性腫瘤所致的出血&#xff0c;有價值的是從長期來看,在紙幣制度下或紙幣本位下,( )是決定匯率的基礎。最常引起肺心病的疾病是從長期來看…

Xcode 5.1 編譯模擬器以及真機都能使用的靜態庫

Xcode 5.1.dmg 下載地址 http://pan.baidu.com/s/1jGJpKm6 1.新建 Framework & Library 工程 我起名叫ShowInfo,下面為其源碼 showInfo.h #import <Foundation/Foundation.h> interface ShowInfo : NSObject (void)showInfo; end showInfo.m #import "ShowI…

UVALive 6511 Term Project

Term Project Time Limit: 3000msMemory Limit: 131072KBThis problem will be judged on UVALive. Original ID: 651164-bit integer IO format: %lld Java class name: Main解題&#xff1a;強連通分量 1 #include <bits/stdc.h>2 using namespace std;3 const in…

MATLAB混合編程視頻教程下載 SIMULINK系統仿真視頻

下載鏈接&#xff1a; http://item.taobao.com/item.htm?id43401674106 精通MATLAB混合編程視頻講解 MATLAB各類函數視頻講解 基于MATLAB的高等數學問題求解 MATLAB函數速查視頻講解 面向對象C視頻教程 五朵金花&#xff0c;帶你輕松搞定MATLAB 金花詳情&#xff1a; 精通MA…