Codeforces 67A【模拟】
生活随笔
收集整理的這篇文章主要介紹了
Codeforces 67A【模拟】
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意: 給一個(gè)字符串代表相鄰學(xué)生的比較,L代表左邊多,R表示右邊多,=表示左右相等。
保證每個(gè)人拿糖>=1,在分糖最少的情況下,輸出每個(gè)學(xué)生所分得的糖。 思路: 模擬一下,第一個(gè)人一開(kāi)始拿1個(gè),然后模擬下去,如果是=,那就=前面的,如果是R,那就比前面的多一個(gè),如果是L,最好的情況就是拿1個(gè),但是有可能前面那個(gè)也是1,那么就往前更新,如果符號(hào)是=,前面那個(gè)等于現(xiàn)在的,如果是R,那么直接跳出,不用往前更新了,因?yàn)轫樞虻母卤旧砭捅戎暗拇罅?#xff0c;如果是L只要判斷一下前面的是不是和當(dāng)前的相等,是的話,前面的就要+1,不是還是跳出就好了;
#include <bits/stdc++.h> using namespace std; typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int>PII; const double eps=1e-5; const double pi=acos(-1.0); const int INF=0x3f3f3f3f;/* 老師分糖,給成績(jī)好的人糖多。 給一個(gè)字符串代表學(xué)生拿糖的規(guī)律,有三種符號(hào),L代表左邊的人比自己高,R表示右邊的高,=表示左右相等。 在保證分糖最少的情況下,輸出每個(gè)學(xué)生所分得的糖。 */char stu[1010]; int dp[1010];int main() {int n,len;scanf("%d",&n);scanf("%s",stu+1);len=n;dp[0]=1;for(int i=1;i<len;i++){if(stu[i]=='=')dp[i]=dp[i-1];else if(stu[i]=='R')dp[i]=dp[i-1]+1;else{if(dp[i-1]>1)dp[i]=1;else{dp[i]=1;dp[i-1]++;for(int j=i-1;j>=1;j--){if(stu[j]=='=')dp[j-1]=dp[j];else if(stu[j]=='L'){if(dp[j-1]==dp[j])dp[j-1]++;elsebreak;}elsebreak;}}}}for(int i=0;i<n;i++){printf("%d ",dp[i]);}return 0; }
保證每個(gè)人拿糖>=1,在分糖最少的情況下,輸出每個(gè)學(xué)生所分得的糖。 思路: 模擬一下,第一個(gè)人一開(kāi)始拿1個(gè),然后模擬下去,如果是=,那就=前面的,如果是R,那就比前面的多一個(gè),如果是L,最好的情況就是拿1個(gè),但是有可能前面那個(gè)也是1,那么就往前更新,如果符號(hào)是=,前面那個(gè)等于現(xiàn)在的,如果是R,那么直接跳出,不用往前更新了,因?yàn)轫樞虻母卤旧砭捅戎暗拇罅?#xff0c;如果是L只要判斷一下前面的是不是和當(dāng)前的相等,是的話,前面的就要+1,不是還是跳出就好了;
#include <bits/stdc++.h> using namespace std; typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int>PII; const double eps=1e-5; const double pi=acos(-1.0); const int INF=0x3f3f3f3f;/* 老師分糖,給成績(jī)好的人糖多。 給一個(gè)字符串代表學(xué)生拿糖的規(guī)律,有三種符號(hào),L代表左邊的人比自己高,R表示右邊的高,=表示左右相等。 在保證分糖最少的情況下,輸出每個(gè)學(xué)生所分得的糖。 */char stu[1010]; int dp[1010];int main() {int n,len;scanf("%d",&n);scanf("%s",stu+1);len=n;dp[0]=1;for(int i=1;i<len;i++){if(stu[i]=='=')dp[i]=dp[i-1];else if(stu[i]=='R')dp[i]=dp[i-1]+1;else{if(dp[i-1]>1)dp[i]=1;else{dp[i]=1;dp[i-1]++;for(int j=i-1;j>=1;j--){if(stu[j]=='=')dp[j-1]=dp[j];else if(stu[j]=='L'){if(dp[j-1]==dp[j])dp[j-1]++;elsebreak;}elsebreak;}}}}for(int i=0;i<n;i++){printf("%d ",dp[i]);}return 0; }
轉(zhuǎn)載于:https://www.cnblogs.com/keyboarder-zsq/p/6777500.html
總結(jié)
以上是生活随笔為你收集整理的Codeforces 67A【模拟】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++11 笔记
- 下一篇: Ninject之旅之十一:Ninject