最近狀態好差啊。水題都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