8-9 DAIRY

来源:互联网 发布:淘宝几块钱包邮的秘密 编辑:程序博客网 时间:2024/06/06 00:05

今天考试好像没有出现什么问题,除了不会做就没有啥了= =还是值得庆祝一下应试能力的提升

最近要好好学一下linux ubuntu的各类操作,为考试做准备

考试 8:00-12:00 & 讲题14:00-14:40
T1 30分 除了n方暴力实在是绞尽脑汁没想出其他做法,然后自己稍微优化了一下,结果没什么用,还是30分。
T2 0分 暴力dfs写挂了,个人认为对dfs不熟练占一大部分原因,主要体现在回溯,dfs(now+1)后的取消标记一类事情没有深刻理解。。?
T3 0分 看到莫比乌斯函数就放弃了,而且那个数学公式也不是很懂….最后十分钟想打一下10%的,但是发现理解不了公式,连循环都不知道写啥就交卷了….数学功底还是要很扎实啊….(不过这题朱老师说是个好(nan)题

大概讲不到15分钟的正解,其余时间都是听其他同学部份份的做法与思路,正解部分过得很快,未完全懂。

讲课14:40-17:30
朱老师今天讲的是动态规划(常见题型、基本模型、举例) 我还是不太理解“最长公共子序列”中的状态转移方程,但是手推的时候觉得这个方程没错,只是不知道怎么证明是对的。
认识了多种类型的动态规划。线性(一条线or两条线or k条线)、区间型、平面(矩阵)型,还未讲树型和图型….我还有一个收获就是对状态、阶段 和 dp数组的维度有了更多的认识。

改题19:00-22:00
同学建议我备联赛就只要改T1,然后我兴高采烈地又看了一遍solution。最后总结,我还是先复习一下线段树?或者什么别的知识点?感觉就是:道理我都懂,代码打不出。
于是我算好时间,开始打虫食算。22:00打完往博客里一丢就回来了,然后写今天的日记。虫食算还有很多编译错误和细节错误blabla,没时间改了,先贴在这里(按昨天的思路打的代码):

【p1092 虫食算】

#include<bits/stdc++.h>using namespace std;int n, tmp, tmp_next;char s1[30], s2[30], s3[30];struct node{    char ch;    int num;//字母对应的数字}s[90];char numb[35];//数字对应的字母int pp(int number, int charr){    if(numb[number]) return 1;    return 0;}int checknum(int m){//数字是否匹配字母    if(numb[m] >= 'A' && numb[m] <= 'Z') return 1;    return 0;}int checkchar(node letter){    if(letter.num >= 0 && letter.num <= n) return 1;    return 0;}void pp(node letter, int m){    letter.num = m;    numb[m] = letter.ch;}void failpp(node letter, int m){    letter.num = 30;    numb[m] = ' ';}void dfs(int now){    if(now % 3 == 2){        if(now == (3*n-1)){            if(tmp_next != 0) return;        }        tmp = s[now-1].num + s[now-2].num;        tmp_next = tmp - n;        if(checkchar(s[now])){            if(s[now].num != ((tmp + tmp_next) % n)) return;            else{                tmp_next = (tmp + tmp_next)/n;                dfs(now+1);                failpp(s[now], (tmp + tmp_next) % n);            }        }        else{            if(checknum((tmp+tmp_next)%n)) return;            tmp_next = tmp / n;            pp(s[now], (tmp + tmp_next) % n);            dfs(now+1);            failpp(s[now], s[now].num);        }    }    if(now % 3 == 1 || now % 3 == 0){        if(!(checkchar(s[now]))){            for(int i = 0; i <= 9; i++){                if(!(checknum(i))){                    s[now].num = i;                    numb[i] = s[now].ch;                }            }        }        dfs(now+1);        numb[s[now].num] = ' ';        s[now].num = 30;    }}int main(){    freopen("p1092.in", "r", stdin);    freopen("p1092.out","w",stdout);    scanf("%d", &n);    for(int i = 0; i <= 9; i++) numb[i] = ' ';    int j = 0;    for(int i = 0; i < n; i++){        scanf("%c", &s1[i]);        s[3 * j].ch = s1[j];        s[3 * j].num = 13;        j++;    }    j = 0;    for(int i = 0; i < n; i++){        scanf("%c", &s2[i]);        s[3 * j + 1].ch = s2[j];        s[3 * j + 1].num = 13;        j++;    }    j = 0;    for(int i = 0; i < n; i++){        scanf("%c", &s3[i]);        s[3 * j + 2].ch = s3[j];        s[3 * j + 2].num = 13;]        j++;    }    tmp = 0;    dfs(0);    return 0;               }

最近要把noip知识点的一个课件全部学(复习)完….已经列了个计划,但是要牺牲睡眠时间…

原创粉丝点击