程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> CF CROC-MBTU 2012, Final Round div 2

CF CROC-MBTU 2012, Final Round div 2

編輯:C++入門知識

最近狀態好差啊。水題都A不掉了。
特別是B題,一個大水題。就是細節需要注意一下,沒想到最後沒過數據。。。
然後把代碼改了一行就A了。。抓狂啊!!
A題。
[cpp]
#include <iostream> 
#include <cstdio> 
#include <algorithm> 
#include <string> 
#include <cmath> 
#include <cstring> 
#include <queue> 
#include <set> 
#include <vector> 
#include <stack> 
#include <map> 
#include <iomanip> 
#define PI acos(-1.0) 
#define Max 2005 
#define inf 1<<28 
#define LL(x) (x<<1) 
#define RR(x) (x<<1|1) 
#define FOR(i,s,t) for(int i=(s);i<=(t);++i) 
#define ll long long 
using namespace std; 
 
 
int a[10000]; 
int b[10000]; 
void solveA() 

    int n; 
    cin>>n; 
    int num=0; 
    for(int i=1;i<=n;i++) 
    cin>>a[i]; 
    int xx=0; 
    int pre=0; 
    for(int i=1;i<=n;i++) 
    { 
        if(a[i]<0) 
        { 
            xx++; 
        } 
        if(xx>=3) 
        { 
            b[num++]=i-1-pre; 
            pre+=b[num-1]; 
            xx=1; 
        } 
        if(i==n) 
        { 
            b[num++]=i-pre; 
        } 
    } 
    cout<<num<<endl; 
    for(int i=0;i<num;i++) 
    cout<<b[i]<<" "; 
    cout<<endl; 

int main() 

    solveA(); 
    return 0; 

B,這題是寫的又長有臭,惡心死我了。
[cpp] 
#include <iostream> 
#include <cstdio> 
#include <algorithm> 
#include <string> 
#include <cmath> 
#include <cstring> 
#include <queue> 
#include <set> 
#include <vector> 
#include <stack> 
#include <map> 
#include <iomanip> 
#define PI acos(-1.0) 
#define Max 2005 
#define inf 1<<28 
#define LL(x) (x<<1) 
#define RR(x) (x<<1|1) 
#define FOR(i,s,t) for(int i=(s);i<=(t);++i) 
#define ll long long 
using namespace std; 
 
 
 
char a[200]; 
string ans[10]; 
void solveB() 

    int n; 
    cin>>n; 
    while(n--) 
    { 
        string x; 
        cin>>x; 
        int l=x.length(); 
        int pos=x.find("::"); 
        if(pos==-1) 
        { 
            int num=0; 
            bool flag=0; 
            for(int i=0; i<l; i++) 
            { 
                int index=-1; 
                if(x[i]==':') 
                { 
                    if(flag) 
                        cout<<":"; 
                    flag=1; 
                    for(int j=0; j<4-num; j++) 
                        cout<<"0"; 
                    for(int j=i-num; j<i; j++) 
                        cout<<x[j]; 
                    num=0; 
                    index=i; 
                } 
                else 
                { 
                    num++; 
                } 
            } 
            cout<<":"; 
            for(int i=0; i<4-num; i++) 
                cout<<0; 
            for(int i=l-num; i<l; i++) 
                cout<<x[i]; 
            cout<<endl; 
        } 
        else 
        { 
            int sum=0; 
            int bre=-1; 
            int num=0; 
            for(int i=0; i<10; i++)ans[i].clear(); 
            for(int i=0; i<l; i++) 
            { 
                if(i==pos+1) 
                { 
                    bre=sum; 
                    continue; 
                } 
                if(x[i]==':') 
                { 
                    for(int j=0; j<4-num; j++) 
                        ans[sum]+='0'; 
                    for(int j=i-num; j<i; j++) 
                        ans[sum]+=x[j]; 
                    sum++; 
                    num=0; 
                } 
                else 
                { 
                    num++; 
                } 
            } 
            if(pos!=l-2) 
            { 
                for(int j=0; j<4-num; j++) 
                    ans[sum]+='0'; 
                for(int j=l-num; j<l; j++) 
                    ans[sum]+=x[j]; 
                sum++; 
            } 
            //   for(int i=0;i<sum;i++) 
            //  cout<<ans[i]<<endl; 
            if(sum) 
            { 
                bool flag=0; 
 
                for(int i=0; i<sum; i++) 
                { 
                    if(i==bre) 
                    { 
                        for(int j=0; j<8-sum; j++)//就是這裡出了問題。 
                        { 
                            if(flag)cout<<":";//一開始就這行寫錯了。。滿盤皆輸。。。A水題切記要仔細仔細再仔細啊!!! 
                            flag=1; 
                            cout<<"0000"; 
                        } 
                    } 
                    if(flag) 
                        cout<<":"; 
                    flag=1; 
                    cout<<ans[i]; 
                } 
                if(pos==l-2) 
                    for(int i=0; i<8-sum; i++) 
                    { 
                        if(flag) 
                            cout<<":"; 
                        flag=1; 
                        cout<<"0000"; 
                    } 
                cout<<endl; 
            } 
            else 
            { 
                cout<<"0000"; 
                for(int i=0; i<7; i++) 
                    cout<<":0000"; 
                cout<<endl; 
            } 
        } 
 
    } 

int main() 

    solveB(); 
    return 0; 

C,看了之後其實有思路了,就是被B題搞惡心了。還沒去實現。
D
E

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved