FG的博客

FG的博客

老菜逼的博客

CSP2020-J/S

posted on 2020-10-11 18:04:45 | under 游记 |

CSP2020-J/S

坐标FJ

初赛

Day 0

测了一把2018的PJ,居然只有56分,预示着明天的不幸啊!!

Day 1

早上TG,下午PJ

不明不白去了考场,看见了clyz和同机房的神仙,蒟蒻只得坐在位置上发呆

考试开始,粗扫了一眼试卷,阅读程序第3题代码写了3页,……az

选择题:

15题看下来,确定的只有3-6道,~~剩下只能看脸(危)~~

随随便便就写了过去,自我感觉还不错(哪来的自信?

阅读程序第一题感觉还行,不算很变态,第二题是找第k大的数,我做过,但是我不会判断对错,这问题也太高深了,默默骂了一句cnm,眼看着cyh巨佬都快写完了,我只能瞎蒙乱填,哎,人家还比我低一届呢,看看,我是多么的菜

完善程序也还可以,第一题的分数背包感觉上去不是很难,但是我有几个空不是很有把握,管他呢能做出来我就很满意了,还对不对?,第二道我连题目都没看懂,写了2个空就开始口胡。

学生选择题宝典:三长一短选最短,三短一长选最长

az

反正炸了就对了,预估:30-40(wtcl

下午PJ

wyf说:今年你PJ没1=就别学了吧

压力山大

开考

选择题比早上的良心很多,除去最后两题的排列组合(怪我排列组合没学),其他都没什么问题

阅读程序

灾难就从这里开始

第一个我以为很简单,结果:一失手成千古恨,一不小心写错了个字母,然后……

第二个程序没怎么看懂,但是还算蒙了出来几个

第三个程序,由于第一个程序的小失误,导致了做到第三个程序就到了16:00,所以果断跳过去做完善程序,然后回来一看,看不懂,只剩5分钟了,乱填大法吼啊

完善程序:第一题不是很简单吗????居然还有这么良心的,但我……为什么(菜呗)第二题就有点难度了(对于dl就不是了),但是感觉比TG简单

感觉只有40-(wtcl

晚上答案一发,我对了一下,猛然发现居然有67,惊呆了,仔细一看,原来蒙的正确率有50%,i了i了

总结:虽说PJ比TG简单,但是我在PJ上还是犯了低级错误,还好PJ简单点,哎。

听说cyh可以akPJ,czyPJ有80+啊,同机房的都好强,只剩我一个老菜逼了!!

AFO,/kk

2020.10.17

啊啊啊我过了

不明白cyh咋才40.5

kzy 70,又小又比我强

lt 77 nm要点脸吧

czy大佬60没进,哎,默哀默哀

啊啊啊我过了

准备复赛吧

话说FJ分数63,我踩线64,真的好吗?

TG没过,48.5,丢脸(wtcl

TG再见,lt大佬推荐上去了

感想:

lt巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨巨
目标:PJ1=(当然可能性很小,但是没1=就AFO了)

Fighting

复赛

Day -7

改了一下码风,下面贴上P5661,即2019CSP T2的代码

#include <iostream>

using namespace std;

const int N = 1e5+7;

struct ticket{
    int t, price;
    bool used;
} a[N]; 

int head=1, tail, ans, n;

int main()
{
    cin >> n;
    for (int i = 1, op, price, t; i <= n; i ++)
    {
        bool flag = 0;
        cin >> op >> price >> t;
        if(!op)
        {
            a[++tail].price = price; 
            a[tail].t = t;
            a[tail].used = 1;
        }
        else
        {
            while (head <= tail && a[head].t+45 < t)
                head ++;
            for (int j = head; j <= tail; j ++)
            {
                if(a[j].price >= price && a[j].used)
                {
                    a[j].used = 0;
                    flag = 1;
                    break;
                }
            }
        }
        if(!flag)
            ans += price;
    }
    cout << ans << endl;
    return 0;
}

我知道很难看

Day -6

模拟赛现场

早上入门组,吐了吐了

T1,T2,T4 1h打完秒过

AK稳了,还有2.5h,就一个T3能奈我何?

随机暴毙

事实证明:乱吹牛逼会挂的

下午A组

快乐啊快乐

T1找规律秒切

T2看了一眼好麻烦,扔了

T3不清楚

T4emm,放弃再见

回头看T3

kzy大佬给了提示后用大根堆即可AC,试了试,真的,kzy好强啊!!!!!

T2看了下,发现不难,就是细胞的升级版而已

编译样例评测一遍过

啊啊啊我300pj1=稳了

晚上直接自闭

nm100分,老师说是PJ难度,我没了啊

Day 0

机房好多人上去了,我却还在家里复习(事实上并没什么用

Day 1

时代中学第四考场,键盘好评

开考前肚子痛,上楼找lzx神仙借纸,md厕所的屎还冲不掉

rp--

开题

T1:优秀的拆分

以下是我做这题的内心独白:

开场:我不会做T1

0.5h后:我不会做T1

1h后:cnm我还是不会做T1,滚蛋

做完T2回头再去做

然后发现这题我还是不会

现场口胡算法

打表大法吼啊

感觉全FZ都只有我一个这么做:

先看特判,-1的情况很明显是奇数,因为他是2的正整数幂,肯定是偶数,20pts白给,这也说明了偶数是肯定能拆分的

再看2的正整数次幂,肯定是直接输出n啊,40pts白给

再来

数据知道10^7,那么我们可以吧每一位上的2^n次方全用打表打出来,存入7个数组里,再用一个函数判断位数,然后找到第一个比他打的数,减掉他前面那个数并且输出即可,然后在判断位数,位数不够就进行下一位循环

注意:如果被减到0的时候,直接输出便可以 $return$掉

我也不知道这样行不行,但是好像常数有亿点大

出来和别人讨论后才发现,原来是二进制拆分,我危了

贴一下我T1的神奇做法

#include <iostream>
#include <cstdio>
#define inf 0x3f3f3f3f

using namespace std;

int n;
int a[8] = {2, 4, 8, inf};
int b[8] = {8, 16, 32, 64, inf};
int c[8] = {64, 128, 256, 512, inf};
int d[8] = {512, 1024, 2048, 4096, 8192, inf};
int e[8] = {8192, 16384, 32768, 65536, inf};
int f[8] = {65536, 131072, 262144, 524288, inf};
int g[8] = {524288, 1048576, 2097152, 4194304, 8388608, inf};
int cnt;

inline int num(int x)
{
    cnt = 0;
    for (int i = x; i; i /= 10)
        cnt ++; 
    return cnt;
}

int main()
{
    freopen("power.in", "r", stdin);
    freopen("power.out", "w", stdout);
    scanf("%d", &n);
    if (n % 2)
    {
        printf("-1\n");
        return 0;
    }
    while (num(n) == 7)
    {
        for (int i = 1; i <= 5; i ++)
        {
            if (n == g[i])
            {
                cout << g[i] << endl;
                return 0;
            }
            if (n < g[i])
            {
                n -= g[i - 1];
                cout << g[i - 1] << " ";
                break;
            }
        }
    }
    while (num(n) == 6)
    {
        for (int i = 1; i <= 4; i ++)
        {
            if (n == f[i])
            {
                cout << f[i] << endl;
                return 0;
            }
            if (n < f[i])
            {
                n -= f[i - 1];
                cout << f[i - 1] << " ";
                break;
            }
        }
    }
    while (num(n) == 5)
    {
        for (int i = 1; i <= 4; i ++)
        {
            if (n == e[i])
            {
                cout << e[i] << endl;
                return 0;
            }
            if (n < e[i])
            {
                n -= e[i - 1];
                cout << e[i - 1] << " ";
                break;
            }
        }
    }
    while (num(n) == 4)
    {
        for (int i = 1; i <= 5; i ++)
        {
            if (n == d[i])
            {
                cout << d[i] << endl;
                return 0;
            }
            if (n < d[i])
            {
                n -= d[i - 1];
                cout << d[i - 1] << " ";
                break;
            }
        }
    }
    while (num(n) == 3)
    {
        for (int i = 1; i <= 4; i ++)
        {
            if (n == c[i])
            {
                cout << c[i] << endl;
                return 0;
            }
            if (n < c[i])
            {
                n -= c[i - 1];
                cout << c[i - 1] << " ";
                break;
            }
        }
    }
    while (num(n) == 2)
    {
        for (int i = 1; i <= 4; i ++)
        {
            if (n == b[i])
            {
                cout << b[i] << endl;
                return 0;
            }
            if (n < b[i])
            {
                n -= b[i - 1];
                cout << b[i - 1] << " ";
                break;
            }
        }
    }
    //cout << n << endl;
    while (num(n) == 1 && n > 1)
    {
        for (int i = 1; i <= 4; i ++)
        {
            if (n == a[i])
            {
                cout << a[i] << endl;
                return 0;
            }
            if (n < a[i])
            {
                n -= a[i - 1];
                cout << a[i - 1] << " ";
                break;
            }
        }
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}

我不会二进制,呸,我连进制都不会

期望得分:100pts但是可能性比较少

T2:直播获奖

T1时间耗太久

T2直接没时间想正解

开始口胡

看了下数据

直接每次快排一遍,然后输出a(maxa(1, i * w / 100))即可

代码长度24行

时间复杂度O(n^2logn)

tt神仙用线段树%%%

lzx神仙用桶O(N)

期望得分:85pts

T3:表达式

cnm老子不会后缀表达式!!!(其实讲过,只是我忘了

暴毙现场,T3弃疗,PJ1=无望了啊

期望得分:0pts

T4:方格取数

初看以为是P1004的方格取数

难道CCF要像去年T3一样吗??

不 可 能!

一眼看过去 $dp$

先用0.5h分钟打个爆搜

dfs复杂度多少我不知道

然后调dp

调到结束我还没调出来,自闭了

期望得分:未知

总结: 这次考试的题目似乎比去年难,去年的题目T1人均手切,今年没有(好吧只有我一个没有,wtcl),T2应该比去年简单,T3比去年难多了,T4比去年简单吧

期望总得分:100pts + 85pts + 0pts + 未知 >= 185pts

看分数线吧,感觉过不去啊,不仅仅是分数线,等活挂分一下只剩下两位数了,想也不敢想,再说了,T1,T2,T4就算没挂分,我也很悬啊!!!

前途迷茫!!!

我即将AFO,嘤嘤嘤

计蒜客上160,已经AFO

用一句管理员的做结尾吧:

世上鲜花会盛开,壮丽不朽的事物会接踵到来。

退役也只能这样了,虽说难过,舍不得chr大佬,但是也只是不得已的选择了

当然,退役有一部分也是因为whk掉了,爸妈也不会很同意我学

因为他们认为,就算我PJ过了,但是后面还有TG,省选,NOI,太远了,这些离我太远了,我得付出无数的时间与精力来学习OI,他们不同意

祈祷我whk加油

曾经做c++放歌,听的基本是AW的,现在听歌就会哭,不明不白就会想起机房的事

我6年级时进来学OI

但是在暑假的时候被淘汰

在初一时我又回去,但是换了个严厉的老师,一个天天说我菜的老师

2019CSP的时候,我一切还未知

只有100分,切了T1

然后淘汰赛勉强过关

我成了全机房最菜的

于是我开始努力,别人都听懂了但是我却没有,我在那问,遭受别人的冷嘲热讽

原本以为努力1年能超过别人

模拟赛我都没掉出前三

可命运之神冷笑一番,我还是PJ2=

到头来却还是机房最菜的

我曾两次进出时代,第一次是我在第一次学OI前,第二次是今天AFO时

老菜逼啊老菜逼,你以为你已经超过了别人,到头来却还是输了

Was it all in my fantasy?

I don't know

Maybe it was,我这一年付出了许许多多的努力,我也看到了进步

Maybe it wasn't,因为到头来我还是pj2=,去年也是2=,我还是和去年一样

退役了,不知道以后在clqz看见cyh和czy大佬我要怎么说

也许他们会嘲讽我,也许不会,但无论哪一种,我都不好应对

我 AFO 失去了很多,朋友,友情,以及内心的一些东西似乎也丢了

无论是内心的不甘心还是一种落差感,都磨平了我内心的火焰

I lost many things.

I will fall into the darkside

but I'm not alone

初中时代的友情也不知道能发展多久,lyx和cyt,目前看来关系不错,但是总感觉没有chr友好,我也不知道会怎样

可能是我太幼稚了

属于老菜逼的时代结束了

All the things fall down.

当然一个时代的结束意味着一个时代的开启

希望kzy和cyh大佬能继续

I will take aim and fire away and I'm on my way.