1026 程序运行时间

解决代码
注意一下if(sec-s>=0.5) s++;不能写成>0.4了,因为[0.4,0.5)之间的值也是4舍的部分。
#include<bits/stdc++.h>
using namespace std;
int main(){
long long int a,b;
cin>>a>>b;
long double sec=1.0*(b-a)/100;
long long int s=sec;
if(sec-s>=0.5) s++;
int ss=0,m=0,h=0;
h=s/3600;
m=s%3600/60;
ss=(s%3600)%60;
printf("%02d:%02d:%02d",h,m,ss);
return 0;
}
1025 反转链表

解决代码
1.首先,我没有审清题目,地址为五位数,所以可以用int储存,从而可以用数组索引当做链表地址把链表串起来。我一开始用的str,到分离出链表这一步只能够每次迭代n个结点,TLE测试点5超时。
2.我再次没有审清题目,题目说的是每k个结点翻转一次,而不是前k个,不能好像看懂了样例就开写,应该仔细审题。
3.不得不说,reverse()很方便。
#include<bits/stdc++.h>
using namespace std;
struct node{
int add,value,aft;
};
node no[100005];
vector<node> seq;
int main(){
int first,n,num;
cin>>first>>n>>num;
int start=0;
for(int i=0;i<n;i++){
int x,y,z;
cin>>x>>z>>y;
no[x].add=x;
no[x].value=z;
no[x].aft=y;
}
//初始化数据
int i=first;
while(no[i].aft!=-1)
{
seq.push_back(no[i]);
i=no[i].aft;
}
seq.push_back(no[i]);
//分离出整条链表
for(int i=0;i<(seq.size()-seq.size()%num);i+=num){
reverse(seq.begin()+i,seq.begin()+i+num);
}
//翻转操作
for(int i=0;i<seq.size();i++){
if(i+1==seq.size()){
printf("%05d %d -1",seq[i].add,seq[i].value);
break;
}
printf("%05d %d %05d\n",seq[i].add,seq[i].value,seq[i+1].add);
}
//输出处理
}
版权声明:本文为qq_45929428原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。