题目大意:就是在[0,1]区间掉石头的时候,Squirrel Liss就在逃,石头都是往区间的中间砸,然后Squirrel Liss就左右左右的逃.求把石头从左到右的石头编码输出来
思路:一开始用模拟真心NC,精度完全过不了但就是眼睁睁的跳进坑里..后来看大大的解题报告晓得这么一个规律:
当选择左边的时候,那么之后掉下来的石头一定是在之前的石头的左边
当选择右边的时候,那么之后掉下来的石头一定是在之前的石头的右边(因为人走哪边石头就砸哪边)
AC program:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int position[1000010];
char s[1000010];
int main()
{
scanf("%s",s);
int len=strlen(s);
int left=0,right=len-1;
for(int i=0;i<len;i++)
{
if(s[i]=='l')
position[right--]=i+1;
else
position[left++]=i+1;
}
for(int i=0;i<len;i++)
{
printf("%d\n",position[i]);
}
//system("pause");
return 0;}
本文解析了一道关于石头躲避的编程题,通过分析Squirrel Liss如何在石头落下时选择左右移动来避免被击中,进而找出所有石头从左到右的编号顺序。介绍了高效的解题思路与AC代码实现。
,
respectively. So you should print the sequence: 3, 5, 4, 2, 1.
1135

被折叠的 条评论
为什么被折叠?



