终于轮到自己比赛了,结果只过了最水的第一题,手速不够快还没进前300……我就囧了。
感觉比前两天的题难一些,好歹那两场我还能做三题……大概自己的知识点掌握的还是太片面了吧。
第三题dp未果。
最后一题很沙茶的用了强连通……看网上大神是用并查集做的,最近我也试一下吧。
自己水平还远远不行,回去继续练!
Hdu 4510
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4510
这个第一题我很沙茶地用模拟法做的,20多分钟1A,水题还这么久说明水平远远不行啊。
#include <cstdio>
#include <algorithm>
using namespace std;
int main ()
{
#ifdef ONLINE_JUDGE
#else
freopen("read.txt","r",stdin);
#endif
int T;
scanf("%d",&T);
while (T--)
{
int HH,hh,MM,mm,SS,ss;
scanf("%d:%d:%d",&HH,&MM,&SS);
scanf("%d:%d:%d",&hh,&mm,&ss);
int ah,am,as;
as=((SS-ss)%60+60)%60;
if (ss-SS>0)
mm+=(ss-SS)/60+1;
am=((MM-mm)%60+60)%60;
if (mm-MM>0)
hh+=(mm-MM)/60+1;
ah=((HH-hh)%12+12)%12;
printf("%02d:%02d:%02d\n",ah,am,as);
}
return 0;
}
看网上大神是全部换算成秒做的,比赛时我果断没想到……
以下代码思路参考自:http://blog.csdn.net/ice_crazy/article/details/8709160
#include <cstdio>
#include <algorithm>
using namespace std;
int main ()
{
#ifdef ONLINE_JUDGE
#else
freopen("read.txt","r",stdin);
#endif
int T;
scanf("%d",&T);
while (T--)
{
int HH,hh,MM,mm,SS,ss;
scanf("%d:%d:%d",&HH,&MM,&SS);
scanf("%d:%d:%d",&hh,&mm,&ss);
int time1=HH*3600+MM*60+SS;
int time2=hh*3600+mm*60+ss;
int ans=time1-time2;
while (ans<0)
ans+=3600*12;
HH=ans/3600;
ans%=3600;
MM=ans/60;
SS=ans%60;
printf("%02d:%02d:%02d\n",HH,MM,SS);
}
return 0;
}