标签:
//只AC了20%。说的就是11个位置一字型排开0-10。扔硬币到这些位置,然后有个帽子可以每次移动最多一个位置,初始位置5。
//思考:相当于遍历一个3叉树。
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
struct coins
{
int x;
int T;
};
int main ()
{
int n,i,j,k;
coins coins1[100000]={0};
int m=0;
coins top;
cin>>n;
for (i=0; i<n; i++)
{
cin>>coins1[i].x>>coins1[i].T;
if (coins1[i].x >10 || coins1[i].x < 0)
{
cout<<0;
return 1;
}
}
vector<coins> stackk;
coins ini;
ini.x = 5;
ini.T = 0;
stackk.push_back(ini);
while(!stackk.empty())
{
top.x = stackk.back().x;
top.T = stackk.back().T;
stackk.pop_back();
for (int k=0; k<n; k++)
{
if (coins1[k].T == top.T+1 && abs(coins1[k].x - top.x)<=1)
{
stackk.push_back(coins1[k]);
if (coins1[k].T > m)
m = coins1[k].T;
}
}
}
cout <<m;
return 0;
}
//第三题:说坐电梯,可以选择地梯,楼梯下楼,电梯花费时间分为移动一层t1,开门t2,关门t3;走楼梯每层t4,求最快的下楼方法。
//思考:最快的方式应该是人按下地梯的同时自己也走楼梯,然后与地梯再某层相遇。AC竟然为0 /(ㄒoㄒ)/~~粗心大意写错了一个运算符。没时间就是苦逼啊。不知道现在这代码能
//AC多少。
// #include <iostream>
// using namespace std;
//
// int main() {
// int n;
// int m;
// int t1;
// int t2;
// int t3;
// int t4;
// cin>>n>>m>>t1>>t2>>t3>>t4;
// int time= (n-1)*t4;
// int stepN = 0;
// if(n>=m)
// {
// stepN = (n-m)*t1/t4;
// int absMToN = n-m - stepN;
// while(stepN!=absMToN*t1/t4){
// stepN = absMToN*t1/t4;
// absMToN = n-m-stepN;
// }
// }
// else {
// stepN = ((m-n) *t1/t4);
// int absMToN = m + n +stepN;
// while(stepN!=absMToN*t1/t4)
// {
// stepN = absMToN*t1/t4;
// absMToN=m-n+stepN;
// }
// }
// n=n-stepN;
// int absNM=0;
// if(n>=m){
// absNM = n-m;
// }
// else{
// absNM=m-n;
// }
// int tempTime = (absNM - n - 1)*t1+2*t2+t3;
// if(time>=tempTime)
// cout<< tempTime<<endl;
// else{
// cout<< time <<endl;
// }
// return 0;
// }
第二题,感觉最难,也没有提交了,不能AC测试了,我还是准备练习一下ACM吧。
很久没写代码了,看来要加强练习了。
标签:
原文地址:http://www.cnblogs.com/ele-oy/p/4886605.html