测试赛3部分题题解及总结
A,贪心题,思路是遇到1就翻转,看最后能不能把所有的反成0
B,找规律,不考虑黑白的话总共有ans = (n-7)*(m-7)种情况。如果ans是偶数,则正好有ans/2个。如果是奇数,则要根据右下角而定,右下角是0则有ans/2 + 1个,否则有ans/2个
C,数学题,Polla昨晚后给我讲的,分两种情况,设半径为r。一、w做圆柱体的高,此时r <= w/2 && 2*pi*r <= (h - 2*r) => r = min(w/2, h/(2*pi + 2)); 二,h那条边作为圆柱的高。
2*pi*r <= w并且得到体积方程:F(r) = pi*r*r*(h - 2*r) = -2*pi*r*r*r + pi*r*r*h. 求导得 f(r) = -6*pi*r*r + 2*h*pi*r 领f(r) = 0求出F(r)取最大值时r = h/3; 所以r = min(w/2, h/3);
然后从这两种情况里边找一个体积最大的情况。
D,水题
E,二叉树。Polla的代码相当简洁,自惭行愧啊。。。
附代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 10010;
struct node {
char data;
node *lc, *rc;
};
typedef struct node *Bintree;
Bintree q[N*100];
char s[N], ans[N];
int n;
void creat(Bintree &T) {
if(islower(s[n])) {
T = new node;
T->data = s[n--]; T->lc = NULL; T->rc = NULL;
} else {
T = new node;
T->data = s[n--];
creat(T->rc);
creat(T->lc);
}
}
/*void disp(Bintree T) {
if(T) {
disp(T->lc);
printf("%c", T->data);
disp(T->rc);
}
}*/
void bfs(Bintree T) {
int f = 0, r = 0;
q[r] = T; ans[r++] = T->data;
Bintree u;
while(f < r) {
u = q[f++];
if(u->lc != NULL) {q[r] = u->lc; ans[r++] = u->lc->data;}
if(u->rc != NULL) {q[r] = u->rc; ans[r++] = u->rc->data;}
}
for(int i = r-1; i >= 0; --i) printf("%c", ans[i]);
cout << endl;
}
void clear(Bintree &T) {
if(T->lc) clear(T->lc);
if(T->rc) clear(T->rc);
delete T;
}
int main() {
//freopen("data.in", "r", stdin);
int t;
scanf("%d", &t);
while(t--) {
Bintree T;
memset(s, 0, sizeof(s));
scanf("%s", s);
n = strlen(s) - 1;
creat(T);
bfs(T);
clear(T);
}
return 0;
}
F,estar过的,据说是RMQ。本菜还没搞出来。
开学以来第一次组队做比赛,还没有太多组队做的感觉。以后的多练习,多配合。开始分题是Polla(强哥)前三,我中三,estar后二。
应该是运气好,D题是道水题。不过还是20分钟才过,如果这种题在TC上的也用20分钟的话,那我那场比赛就不用做了,等着rating暴跌吧!手速!手速!手速!!然后没几分钟Polla过B题,是道找规律的题。estar一直在看F,而且很神的以为F是最后一题,还很猥琐的跟我说F是道RMQ,以前做过。我过了D题后也在看F。数据量很大,第一反应就是线段树区间合并。可是我的线段树水平烂的就像刚烤熟的地瓜,突然掉到地上,然后被踩了一脚一样。。。在我纠结有没有其他方法避开线段树时。estar跟我说F过了。Polla在做C题,计算几何,不知道是精度问题还是怎么回事,一直没过。然后我看E题,编译原理里边的算法。建二叉树,然后从右往左,从上往下层次遍历,不过没能没能实现,话说本菜连最后只纠结出怎么建树来。后来跟Polla讨论,没几分钟他敲过了。最后省得时间也不多了,Polla还是在做C题,最后用高数里的推公式求导过了。不得不说这题真的很神。很遗憾的是A题没过。官方说那是道贪心。碰到黑的就翻,能翻过就输出次说,翻不过就输出-1。。。这纯属折腾人!这么像搜索的一道题,比赛的时候谁敢这样写。
总体感觉就是本菜太水了!编码能力,思路,各种能力。有大牛说100行以内的代码不用调,100行以上的代码2,3分钟调完。差距啊!