昨天真是累了一天,是我到北邮后最累的一天。。。
前一天晚上接到宸瀚的电话,说让我早上8点和他一起到本部,有一个迎接南太平洋大学校长到我校参观的晚会让我们去实习做中控,哎,原以为早上去就是为了中控的,结果突然想起,前几天他给我说了学校的编程新生赛,我们报了名,今天就是正式考试的日子。
╮(╯▽╰)╭,自从2010年上半年意外发生,从此远离OI,就没怎么碰过编程了,自己也不愿意去接触,总有种伤心地感觉。但是周四的时候,在宸瀚极力鼓励下,我还是帮了名,呵呵,有一项是填写AC的题数,我还可以打开巴蜀的OJ看了看,自己有690道题在那里压着呢,就填了个690,还真没想到为昨天买下了伏笔。
到了本部,找到了919,看了看贴在墙上的名单,在最后几个中我找到了自己的名字,名字旁边竟然还有个手写的690,额,难道我成了他们的重点关注对象???晕。哎,自己也不管这么多,只是想来玩玩。
坐在电脑前,开着Dev,熟悉的属于我自己的黑色界面风格,哎,往年的场景历历在目,高中的那些周末,那些寒假,我们一起做过的题……
虽然说是禁止了U盘,但是我的竟然插上了,哎,我的纸质资料都在家里,能有的都在U盘里了,哎,学长们,理解下哈。
话说有八道题,按照ACM的升气球模式,呵呵,我倒没经历过气球呢。
冥思苦想,第一个写出来的应该是
没想那么多,DP已经忘完了,所以就模拟:
/*
Problem Id: 307
Submit time: 2012-02-26 11:49:13
User_id: 10163
Memory:144K Time:18MS
Language:G++ Result:Accepted
*/
#include<iostream>
using namespace std;
int n,m;
int a[10];
void calc(int x)
{
int i;
while( x>0 )
{
a[x%10]++;
x/=10;
}
}
void doit()
{
int i,j;
for( i=n ;i<=m ;i++ ) calc(i);
for( i=0 ;i<9 ;i++ ) cout<<a[i]<<" ";cout<<a[9];cout<<endl;
}
int main()
{
while( scanf("%d%d",&n,&m)!=EOF )
{
memset(a,0,sizeof(a));
doit();
}
return 0;
}
AC的第二题:
简单模拟,由于很久没写代码了,还是写了一会儿,如下:
/*
Problem Id: 301
Submit time: 2012-02-26 12:11:42
User_id: 10163
Memory:148K Time:20MS
Language:G++ Result:Accepted
*/
#include<iostream>
using namespace std;
const double HALF=0.5;
long long a,n;
int m;
int d[1001];
long long sqr(long long a,long long b)
{
int i,j,k;
long long ans=a;
d[0]=0;
i=b;
while( i>0 )
{
d[++d[0]]=i%2;
i/=2;
}
for( i=d[0]-1 ;i>0 ;i-- )
{
ans*=ans;
if( d[i] ) ans*=a;
}
return ans;
}
void Doit()
{
long long i,j,k;
long long SUM=0;
long long tmp,tmp1;
for( i=m+1 ; ;i++ )
{
a=sqr(2,i);
tmp1=n+a/2;
tmp=tmp1/(a);
if( tmp<1 ) break;
else SUM+=tmp;
}
cout<<SUM<<endl;
}
int main()
{
while( cin>>n>>m )
{
Doit();
}
return 0;
}
然后呢,就是同一个题,只不过弱版和强版的:
我都是转化为LIS来做的,很奇特的想法……弱版:
/*
Problem Id: 305
Submit time: 2012-02-26 12:54:25
User_id: 10163
Memory:144K Time:2MS
Language:G++ Result:Accepted
*/
#include<iostream>
using namespace std;
int n;
int a[101];
int b[101];
int d[101];
int f[101];
bool c[101];
int F(int a,int b)
{
if( a-b >0 ) return 1;
if( a-b==0 ) return 0;
if( a-b <0 ) return -1;
}
void Doit()
{
int i,j,k;
int cnt=0;
int Max=-0x7FFFFFFF;
for( i=2 ;i<=n ;i++ ) d[i]=b[i]=F(a[i],a[i-1]);
d[1]=b[1]=-b[2];
if( b[1]==-1 )
{
cnt+=3;
d[1]+=cnt;
}
for( i=2 ;i<=n ;i++ )
{
if( b[i]==-1 && b[i-1]!=-1 ) cnt+=3;
d[i]+=cnt;
}
for( i=2 ;i<=n ;i++ ) if( d[i]==d[i-1] ) c[i]=1;
/*
for( i=1 ;i<=n ;i++ )
if( !c[i] )
cout<<d[i]<<" ";cout<<endl;
*/
for( i=2 ;i<=n ;i++ )
if( !c[i] )
for( j=1 ;j<i ;j++ )
if( !c[j] )
if( d[i]>=d[j] && f[j]+1>f[i] )
f[i]=f[j]+1;
for( i=1 ;i<=n ;i++ )
if( Max<f[i] && !c[i] )
Max=f[i];
if( Max<3 ) cout<<"1\n";
else
cout<<Max<<endl;
}
int main()
{
while( cin>>n )
{
for( int i=1 ;i<=n ;i++ )
{
cin>>a[i];
f[i]=1;
b[i]=0;
c[i]=0;
d[i]=0;
}
Doit();
}
// system("pause");
return 0;
}
强版:
/*
Problem Id: 306
Submit time: 2012-02-26 15:18:57
User_id: 10163
Memory:2192K Time:425MS
Language:G++ Result:Accepted
*/
#include<iostream>
using namespace std;
const int MAXN=100001;
int n;
int a[MAXN];
int b[MAXN];
int d[MAXN];
int f[MAXN];
int dp[MAXN];
bool c[MAXN];
int F(int a,int b)
{
if( a-b >0 ) return 1;
if( a-b==0 ) return 0;
if( a-b <0 ) return -1;
}
int find(int aim,int st,int ed){
int i=st,j=ed;
int p=0;
while( i<=j ){
int mid=(i+j)/2;
if( dp[mid]>aim ) j=mid-1;
else{
p=mid;
i=mid+1;
}
}
return p;
}
void Doit()
{
int i,j,k;
int cnt=0;
int Max=-0x7FFFFFFF;
int m=1;
for( i=2 ;i<=n ;i++ ) if( a[i]==a[i-1] ) c[i]=1;
for( i=2 ;i<=n ;i++ ) if( !c[i] ) a[++m]=a[i];
n=m;
for( i=2 ;i<=n ;i++ )
d[i]=b[i]=F(a[i],a[i-1]);
d[1]=b[1]=-b[2];
if( b[1]==-1 )
{
cnt+=3;
d[1]+=cnt;
}
for( i=2 ;i<=n ;i++ )
{
if( b[i]==-1 && b[i-1]!=-1 ) cnt+=3;
d[i]+=cnt;
}
memset(c,0,sizeof(c));
for( i=2 ;i<=n ;i++ ) if( d[i]==d[i-1] ) c[i]=1;
dp[1]=d[1];
k=1;
for( i=2 ;i<=n ;i++ )
if( !c[i] )
{
int p=find(d[i],1,k);
f[i]=++p;
dp[p]<?=d[i];
k>?=p;
Max>?=f[i];
}
if( Max<3 ) cout<<"1\n";
else
cout<<Max<<endl;
}
int main()
{
while( cin>>n )
{
for( int i=1 ;i<=n ;i++ )
{
cin>>a[i];
f[i]=1;
b[i]=0;
c[i]=0;
d[i]=0;
dp[i]=0x7FFFFFFF;
}
Doit();
}
return 0;
}
哎,还是留个图片留做纪念吧(看见我的四个气球木有吖,(*^__^*) 嘻嘻…………)
![](http://hi.csdn.net/attachment/201202/27/0_1330347344Q7pD.gif)
PS:晚上回校晕死我了,差点吐了……