跳一跳
思路:简单模拟
Code:
#include<bits/stdc++.h>
using namespace std;
int a[35]={0};
int main()
{
a[0]=0;
for(int i = 1;i<=35;i++) a[i]=a[i-1]+2;
int op,sum=0,ls=0;
while(scanf("%d",&op)&&op)
{
if(op==1) ls=0,sum+=1;
else
{
ls++;sum+=a[ls];
}
}
printf("%d\n",sum);
return 0;
}
碰撞的小球
思路:简单模拟
Code:
#include <bits/stdc++.h>
using namespace std;
struct node
{
int F, S, p;
} a[105];
int vis[1005];
bool cmp(node a, node b)
{
return a.F < b.F;
}
bool out(node a, node b)
{
return a.p < b.p;
}
int main()
{
int i, n, l, t;
scanf("%d%d%d", &n, &l, &t);
for(i = 0; i < n; i++)
{
scanf("%d", &a[i].F);
a[i].S = 1; a[i].p = i;
}
while(t--)
{
sort(a, a + n, cmp);
for(i = 0; i < n-1; i++)
{
if(a[i].F == a[i + 1].F)
a[i].S *= (-1), a[i + 1].S *= (-1);
}
if(a[0].F == 0) a[0].S *= (-1);
if(a[n - 1].F == l) a[n - 1].S *= (-1);
for(i = 0; i < n; i++) a[i].F += a[i].S;
}
sort(a, a + n, out);
for(i = 0; i < n; i++) printf("%d%c", a[i].F, i == n - 1 ? '\n' : ' ');
}
/*
10 22 30
14 12 16 6 10 2 8 20 18 4
*/