2015 Fall HIT Weekly Training 2
2015-10-24 21:04
459 查看
在错过了第一次之后,终于准时参加了第二次。
18:30-20:30的新手练习题,我居然真的就做了两个小时,差点没AC
A.YY, and YY again
读取string时会停在空格,所以用getline就行。
B.Box of Bricks
这年头,思路比这再简单的数学题真是不多见了。
计算∑(a[i]<p)(p-a[i])就行了。p是最后的高度。
C.Not A Water Problem
首先是那个诡异Hint:That isn't a real water problem,but I promise that there's only one trick.
一看就知道这道题暗藏杀机,开始时候使用while(scanf()),妥妥的TLE。
奥,原来就trick就是EOF啊,果断改,试了!EOF、getchar() != EOF 、(ch = getchar()) != EOF。果断都不管用,花式WA。。。
然后恍然大悟,signed int,果然是个暗示啊,abs(-2^31)不能用int,然后换LL,还是各种WA。。。
在最后的两分钟,开始各种尝试,终于当我换回了while(cin)的时候,它红了。
。。。。。。
D.整数的排序
果断的sort
E.Fibonacci Numbers
看见这题瞬间就想起了那年哪月,翔神教我的矩阵快速幂求斐波那契。。。REBMYSMLY
偷偷的百度了lrj的bign,ctrl+c, ctrl+p。
想着有lrj庇佑,这题肯定一次AC,然而。。。
经典坑爹,教科书式的坑爹,测试数据有多组,但他就是不告诉你。
18:30-20:30的新手练习题,我居然真的就做了两个小时,差点没AC
A.YY, and YY again
读取string时会停在空格,所以用getline就行。
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int main(void) { string st; int x; while(getline(cin, st)){ x = 0; for(int i = 0; i < st.length(); ++i) if(st[i] >= 'A' && st[i] <= 'Z') x += st[i] - 'A' + 1; if(x > 100) cout<<"INVALID"<<endl; else cout<<x<<endl; } return 0; }
B.Box of Bricks
这年头,思路比这再简单的数学题真是不多见了。
计算∑(a[i]<p)(p-a[i])就行了。p是最后的高度。
#include<cstdio> int a[100]; int main(void) { int N, k = 1; int p; int ans; scanf("%d", &N); while(N > 0){ if(k > 1) printf("\n"); p = 0; ans = 0; for(int i = 0; i < N; ++i){ scanf("%d", &a[i]); p += a[i]; } p /= N; for(int i = 0; i < N; ++i) if(a[i] < p) ans += p - a[i]; printf("Set #%d\n", k++); printf("The minimum number of moves is %d.\n", ans); scanf("%d", &N); } return 0; }
C.Not A Water Problem
首先是那个诡异Hint:That isn't a real water problem,but I promise that there's only one trick.
一看就知道这道题暗藏杀机,开始时候使用while(scanf()),妥妥的TLE。
奥,原来就trick就是EOF啊,果断改,试了!EOF、getchar() != EOF 、(ch = getchar()) != EOF。果断都不管用,花式WA。。。
然后恍然大悟,signed int,果然是个暗示啊,abs(-2^31)不能用int,然后换LL,还是各种WA。。。
在最后的两分钟,开始各种尝试,终于当我换回了while(cin)的时候,它红了。
。。。。。。
#include<cstdio> #include<iostream> using namespace std; #define abs(a) ((a)>0)?(a):(-(a)) int main(void) { long long x; while(cin>>x){ cout<<(abs(x))<<endl; } return 0; }
D.整数的排序
果断的sort
#include<cstdio> #include<algorithm> #include<iostream> #include<cstdlib> int a[20]; int main(void) { int N; scanf("%d", &N); for(int i = 0; i < N; ++i){ for(int j = 0; j < 10; ++j) scanf("%d", &a[j]); std::sort(a, a+10); for(int j = 0; j < 9; ++j) printf("%d ", a[j]); printf("%d\n", a[9]); } return 0; }
E.Fibonacci Numbers
看见这题瞬间就想起了那年哪月,翔神教我的矩阵快速幂求斐波那契。。。REBMYSMLY
偷偷的百度了lrj的bign,ctrl+c, ctrl+p。
想着有lrj庇佑,这题肯定一次AC,然而。。。
经典坑爹,教科书式的坑爹,测试数据有多组,但他就是不告诉你。
#include<cstdio> #include<iostream> #include<cstring> using namespace std; #define MAXN 3010 struct bign{ int len, s[MAXN]; bign() { memset(s, 0, sizeof(s)); len = 1; } bign(int num) { *this = num; } bign(const char* num) { *this = num; } bign operator = (int num) { char s[MAXN]; sprintf(s, "%d", num); *this = s; return *this; } bign operator = (const char* num) { len = strlen(num); for(int i = 0; i < len; i++) s[i] = num[len-i-1] - '0'; return *this; } string str() const { string res = ""; for(int i = 0; i < len; i++) res = (char)(s[i] + '0') + res; if(res == "") res = "0"; return res; } bign operator + (const bign& b) const{ bign c; c.len = 0; for(int i = 0, g = 0; g || i < max(len, b.len); i++) { int x = g; if(i < len) x += s[i]; if(i < b.len) x += b.s[i]; c.s[c.len++] = x % 10; g = x / 10; } return c; } void clean() { while(len > 1 && !s[len-1]) len--; } bign operator * (const bign& b) { bign c; c.len = len + b.len; for(int i = 0; i < len; i++) for(int j = 0; j < b.len; j++) c.s[i+j] += s[i] * b.s[j]; for(int i = 0; i < c.len-1; i++){ c.s[i+1] += c.s[i] / 10; c.s[i] %= 10; } c.clean(); return c; } bign operator - (const bign& b) { bign c; c.len = 0; for(int i = 0, g = 0; i < len; i++) { int x = s[i] - g; if(i < b.len) x -= b.s[i]; if(x >= 0) g = 0; else { g = 1; x += 10; } c.s[c.len++] = x; } c.clean(); return c; } bool operator < (const bign& b) const{ if(len != b.len) return len < b.len; for(int i = len-1; i >= 0; i--) if(s[i] != b.s[i]) return s[i] < b.s[i]; return false; } bool operator > (const bign& b) const{ return b < *this; } bool operator <= (const bign& b) { return !(b > *this); } bool operator == (const bign& b) { return !(b < *this) && !(*this < b); } bign operator += (const bign& b) { *this = *this + b; return *this; } }; istream& operator >> (istream &in, bign& x) { string s; in >> s; x = s.c_str(); return in; } ostream& operator << (ostream &out, const bign& x) { out << x.str(); return out; } int main(void) { int N; bign a1, a2; while(cin>>N){ a1 = 1; a2 = 1; for(int i = 3; i <= N; i += 2){ a1 = a1 + a2; a2 = a1 + a2; } if(N & 1) cout<<a1<<endl; else cout<<a2<<endl; } return 0; }
相关文章推荐
- Coursera_Stanford_ML_ex6_支持向量机(SVM) 作业记录
- regular polygon can be drawn only by straightedge and compass
- POJ-1995 Raising Modulo Numbers
- AI顶级会议以及期刊
- container_of()宏
- _pActualRawDllMain cannot be in a R/W section
- Daily Scrum (2015/10/23)
- 2015年10月18日-10月24日作业:mairadb, vsftp, nfs, samb
- 创建maven项目时报错:Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.4
- uva11029 - Leading and Trailing
- intel_rapl: no valid rapl domains found in package 0 virtualbox ubuntu
- ZOJ 2060----Fibonacci Again
- 《STL源码剖析》迭代器以及Traits设计
- aidl 中通过RemoteCallbackList 运用到的回调机制: service回调activity的方法
- 苹果AirPlay浅析
- 写博客之aim
- leetcode 125 Vaild Palindrome
- LeetCodeOJ_205_Submission Details
- Contains Duplicate II - LeetCode
- leetcode先刷_Climbing Stairs