2017/10/15周测(vjudge——BJFU周赛_6th_2nd)
来源:互联网 发布:linux操作系统移植 编辑:程序博客网 时间:2024/05/19 20:20
今天做得好惨啊,惨到我没有心情说废话。
C题
wa到怀疑人生,差不多反反复复交了六遍,我觉得还挺简单的一个题…
错误:①开了一个double类型的数组,传入的值是string[i]-‘0’,结果无法传入(就这样样例1,2都能出正确结果,微笑)
②有个地方的j写成了i(就这样样例1,2都能出正确结果,微笑)
总结:不知道这算什么样的错误,应该还是手生吧,而且用的方法也不是最直接的方法,绕的路越多,错的机会越大,除了多做几道题还能有什么办法呢…
#include<iostream>using namespace std;#include<algorithm>#include<string>int sherlock[1005];struct Moria{ int num; double data;}moria[1005];bool cmp(Moria &x, Moria &y){ return x.data < y.data;}int main(){ int n; while (scanf("%d", &n) != EOF) { int i; string s; string m; cin >> s >> m; for (i = 0; i < n; i++) sherlock[i] = s[i] - '0'; for (i = 0; i < n; i++) moria[i].data=m[i]-'0'; int mmin = n, mmax = 0; sort(moria, moria + n, cmp); sort(sherlock, sherlock + n); for (i = 0; i < n; i++) moria[i].num = 0; for (i = 0; i < n; i++) { int j; int tempmin; for (j = 0; j < n; j++) { if (!moria[j].num) { tempmin = j; break; } } int flag = 0; for (j = 0; j < n; j++) { if (moria[j].data >= sherlock[i] && !moria[j].num) { flag = 1; moria[j].num = i + 1; mmin--; break; } } if (!flag) moria[tempmin].num = i + 1; } for (i = 0; i < n; i++) moria[i].num = 0; for (i = 0; i < n; i++) { int j; int tempmin; for (j = 0; j < n; j++) { if (!moria[j].num) { tempmin = j; break; } } int flag = 0; for (j = 0; j < n; j++) { if (moria[j].data > sherlock[i] && !moria[j].num) { flag = 1; moria[j].num = i + 1; mmax++; break; } } if (!flag) moria[tempmin].num = i + 1; } for (i = 0; i < n; i++) moria[i].num = 0; cout << mmin << endl; cout << mmax << endl; } return 0;}
I题
理解题意很重要…
大意就是一个人要减小他的代码的可读性防止被黑,每一个变量名用a,b,c…依次代替,然后注意是依次,给出一个字符串,判断是不是那个修改过来的。
#include<iostream>using namespace std;#include<algorithm>#include<string>int main(){ string s; while (cin >> s) { int num[30]; memset(num, 0, sizeof(num)); int i; for (i = 0; i < s.length(); i++) num[s[i] - 'a']++; int flag = 0; int ok = 1; for (i = 25; i >= 0; i--) { if (num[i] != 0) flag = 1; if (flag&&num[i] == 0) { ok = 0; break; } } ok ? cout << "YES\n":cout << "NO\n"; } return 0;}
☝这是我wa在样例5的代码,我的想法就是把每个出现的都记录下来,然后开一个26的数组就可以,然后从后往前遍历,不能出现“空档”。
当时怎么也想不明白wa在哪里,发现自己一旦陷入一种思维误区,就特别难跳出来,这是wa在“bab”这组数据上,现在想想也是,其实我那种想法只是注意了“最终的结果”,其实每一个字母在出现的时候都应该注意顺序,而且字母一定是从a开始的,哎,脑子怎么这么笨啊…
#include<iostream>using namespace std;#include<algorithm>#include<string>#include<string.h>int main(){ string s; while (cin >> s) { int num[27]; memset(num, 0, sizeof(num)); int i; int pos=0; int ok=1; for (i = 0; i < s.length(); i++) { if(num[s[i]-'a']) num[s[i]-'a']++; else { if(s[i]-'a'+1==(pos+1)) { pos++; num[s[i]-'a']=1; } else { ok=0; break; } } } ok ? cout << "YES\n":cout << "NO\n"; } return 0;}
☝5min我就写出来了,耶,果然还是要看懂题。
A题
今天这场比赛,A题实在是有点坑,对我来说,是觉得A题能够做出来,但是可能敲和调代码会花比较多的时间,而且不是确定百分之百能够过的那种,最后选择了换一个题做,然后最后再来做这个题,结果…我本来担心会超时,结果wa在了样例6,好吧,我的方法可能就是有问题的,在题解里看到了二分…
阅读全文
0 0
- 2017/10/15周测(vjudge——BJFU周赛_6th_2nd)
- 2017/10/14周测(vjudge——BJFU周赛_6th_1st)
- 2017/10/22(vjudge--BJFU周赛第七周)
- BJFU 1002——九九乘法表
- BJFU 1004——Sudoku
- BJFU 1008——Average
- BJFU 1009——抽奖
- BJFU 1010——博弈
- BJFU 1012——素数
- Vjudge攻略——POJ1753
- Vjudge攻略——POJ2965
- BJFU 1001——整数求和
- BJFU 1006——排序输出
- BJFU 1025——Ackermann函数
- BJFU 1040——子块和
- BJFU 1069——格式化数字
- Vjudge攻略——ACdream-1099
- Vjudge
- 继承 课堂练习
- LeetCode82 Remove Duplicates from Sorted List II
- 页面无刷新更新数据
- OJ多组测试数据的输入(Java代码实现)
- 原型模型
- 2017/10/15周测(vjudge——BJFU周赛_6th_2nd)
- 新博客迁移啦
- 第十篇 Android Studio 使用常见问题
- Strust2验证
- Redundant Connection II
- 文章标题
- 如何调试python(Debugging)
- Android知识体系
- hdu 1521 指数型母函数