?
用数组做可以不用反转直接输出来,但是判断每段首尾挺麻烦,用STL的reverse实在方便。
?
#include1026 注意秒要四舍五入#include #include #include using namespace std; typedef pair P; P coll[100010]; struct node { int addr, data, next; }; vector LK; int main() { int n, k, head, addr, data, next; while(~scanf(%d%d%d, &head, &n, &k)) { LK.clear(); for(int i = 0; i < n; i++) { scanf(%d%d%d, &addr, &data, &next); P p; p.first = data; p.second = next; coll[addr] = p; } int cnt = 0, index = head; while(index != -1) { LK.push_back((node){index, coll[index].first, coll[index].second}); index = coll[index].second; cnt++; } int t = cnt/k; for(int i = 0; i < t; i++) reverse(LK.begin()+i*k, LK.begin()+(i+1)*k); t = LK.size(); for(int i = 0; i < t-1; i++) printf(%05d %d %05d , LK[i].addr, LK[i].data, LK[i+1].addr); printf(%05d %d -1 , LK[t-1].addr, LK[t-1].data); } return 0; }
?
?
#include1027 算了,也不解释了#include using namespace std; int main() { int C1, C2; while(~scanf(%d%d, &C1, &C2)) { int second = 1.0*(C2-C1)/100+0.5; int hour = second/3600; second %= 3600; int minute = second/60; second %= 60; printf(%02d:%02d:%02d , hour, minute, second); } return 0; }
?
?
#include1028 时间比较,注意重载比较运算符,边界问题注意#include #include using namespace std; int main() { int n; char c; while(~scanf(%d %c, &n, &c)) { int x = sqrt(2.0*(n+1))-1; if(x % 2 == 0) x--; for(int i = x; i >= 1; i -= 2) { for(int j = 0; j < (x-i)/2; j++) printf( ); for(int j = 0; j < i; j++) printf(%c, c); printf( ); } for(int i = 3; i <= x; i += 2) { for(int j = 0; j < (x-i)/2; j++) printf( ); for(int j = 0; j < i; j++) printf(%c, c); printf( ); } printf(%d , n-(x+1)*(x+1)/2+1); } return 0; }
?
?
#include1029 字符串细节#include #include #include using namespace std; struct date { int year, month, day; bool operator > (const date& rhs) const { if(year != rhs.year) return year > rhs.year; if(month != rhs.month) return month > rhs.month; return day > rhs.day; } bool operator >= (const date& rhs) const { if(year != rhs.year) return year > rhs.year; if(month != rhs.month) return month > rhs.month; return day >= rhs.day; } }; vector name, bir; int main() { int n; while(cin >> n) { date mind, maxd, tmp, dlow, dhigh; string nm, br; maxd.year = 1814; maxd.month = 9; maxd.day = 6; mind.year = 2014; mind.month = 9; mind.day = 6; dlow = maxd; dhigh = mind; int id1 = 0, id2 = 0, cnt = 0; name.clear(); bir.clear(); for(int i = 0; i < n; i++) { cin >> nm >> br; name.push_back(nm); bir.push_back(br); tmp.year = (br[0]-'0')*1000+(br[1]-'0')*100+(br[2]-'0')*10+br[3]-'0'; tmp.month = (br[5]-'0')*10+br[6]-'0'; tmp.day = (br[8]-'0')*10+br[9]-'0'; if(tmp > dhigh || dlow > tmp) continue; if(mind >= tmp) { mind = tmp; id1 = i; } if(tmp >= maxd) { maxd = tmp; id2 = i; } cnt++; } if(cnt > 0) cout << cnt << << name[id1] << << name[id2] << endl; else cout << 0 << endl; } return 0; }
?
?
#include1030 排序,将不可以的一个个排除#include #include #include using namespace std; char s1[82], s2[82]; bool alpha[27], dig[12], space; int main() { while(~scanf(%s, s1)) { scanf(%s, s2); memset(alpha, false, sizeof(alpha)); memset(dig, false, sizeof(dig)); space = false; for(int i = 0; s2[i] != ''; i++) { if(isdigit(s2[i])) { dig[s2[i]-'0'] = true; } else if(isalpha(s2[i])) { if(s2[i]>='a' && s2[i]<='z') s2[i] += 'A'-'a'; alpha[s2[i]-'A'] = true; } else if(s2[i] == '_') space = true; } for(int i = 0; s1[i] != ''; i++) { if(isdigit(s1[i])) { if(!dig[s1[i]-'0']) { printf(%c, s1[i]); dig[s1[i]-'0'] = true; } } else if(isalpha(s1[i])) { if(s1[i]>='a' && s1[i]<='z') s1[i] += 'A'-'a'; if(!alpha[s1[i]-'A']) { printf(%c, s1[i]); alpha[s1[i]-'A'] = true; } } else if(s1[i] == '_') { if(!space) { printf(_); space = true; } } } printf( ); } return 0; }
?
?
#include#include #include using namespace std; int n, p; long long a[100010]; int main() { while(~scanf(%d%d, &n, &p)) { for(int i = 0; i < n; i++) scanf(%lld, &a[i]); sort(a, a+n); int ans = 0, j = 0; long long tmp = a[0]*p; for(int i = 0; i < n; i++) { while(j < i && tmp < a[i]) tmp = a[++j]*p; if(ans < i-j+1) ans = i-j+1; } printf(%d , ans); } return 0; }
?
?