状态不是很好...手速不强啊
A. Queue on Bus Stop
http://codeforces.com/contest/435/problem/A
刷榜题 直接判断
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;
int i,o,p,j,k,l,n,m,ans,cur;
int a[200000],b[200000];
int main()
{
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++)
scanf("%d",&a[i]);
// for (i=1;i<=n;i++)
// scanf("%d",&b[i]);
//sort(a,n,cnp);
ans=1;cur=0;
for (i=1;i<=n;i++)
if (cur+a[i]<=m) cur+=a[i];
else {cur=a[i];ans++;}
printf("%d\n",ans);
return 0;
}
B. Pasha Maximizes
http://codeforces.com/contest/435/problem/B
贪心 观察在目前条件允许的情况下能否将最靠左的数字换得尽可能大,如果次数还有剩余,就考虑最靠左的第二位会不会尽量大……以此类推
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
int i,o,p,j,k,l,m,ans,cur,left,right,mann,ma;
long long n;
int a[2000],b[1000];
void printi()
{
for (i=1;i<=o;i++) printf("%d",a[i]);
printf("\n");
}
int main()
{
scanf("%I64d%d",&n,&m);
o=0;
while (n)
{
o++;
(a[o]=n%10);
n/=10;
}
for (i=1;i<=o/2;i++)
swap(a[i],a[o+1-i]);
left=1;right=o;
while (1)
{
p=0;
for (i=left+1;i<=right;i++)
if (a[i]>a[i-1]) p=1;
if (p==0) {printi(); return 0;}
memset(b,0,sizeof(b));
mann=a[left];
ma=left;
for (i=left+1;i<=right;i++)
{
if (mann<a[i]&&(m>=i-left)) {mann=a[i];ma=i;}
}
for (i=ma;i>left;i--)
swap(a[i],a[i-1]);
m-=ma-left;
left++;
if (left==right){printi(); return 0;}
}
return 0;
}
C. Cardiogram
http://codeforces.com/contest/435/problem/C
比较复杂道德题目,看样例,直接模拟。我用了b数组表示在横坐标为i时,纵坐标为b[i],c[i]表示方向。数据范围不大直接线性处理
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;
int i,o,p,j,k,l,n,m,ans,cur,ma,mi;
int a[2000],b[2000],c[2000];
int main()
{
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%d",&a[i]);
a[0]=0;
ma=mi=0;
o=0;;
b[0]=0;
for (i=1;i<=n;i++){
b[++o]=b[o-1];
if (i%2)c[o]=1;
else c[o]=-1;
for (j=2;j<=a[i];j++){
if (i%2)b[++o]=(b[o-1]-1);
else b[++o]=(b[o-1]+1);
if (i%2)c[o]=1;
else c[o]=-1;
if (ma<b[o]) ma=b[o];
if (mi>b[o]) mi=b[o];}
}
for (i=mi;i<=ma;i++){
for (j=1;j<=o;j++)
if (b[j]==i) if (c[j]>0) printf("/"); else printf("\\");
else printf(" ");
printf("\n");}
return 0;
}