寒假集训总结

DAY 1

模拟

emmmm

哇塞,模拟暴力太快乐了

???

这是啥???乒乓球怎么打???嗯???还有分制???

orz

DAY 2

搜索,二分,背包

导弹拦截

(啊只得了4分的暴力终于变成了200分的正解

DAY 3

背包,lower_bound

(导弹拦截里也有所应用

(stl大法好

多重背包

(qwq原来那个背包的课件还是只看了01和完全

DAY 4

栈,队列,并查集,线段树,最小生成树,链表

(没错学了一堆图论还有数据结构

中位数线段树做法

(虽然这道题大家都用堆但是我是因为学线段树才加这道题的,任务计划中呆了将近3个月终于a掉了

DAY 5

LCA,Dijkstra,匈牙利算法

(继续图论,蛮快乐的

二分图匹配

(上课讲找对象还是很欢乐的

DAY 6

欧拉回路,st表,单调栈,单调队列

(单调栈的单调队列都令人头大

DAY 7

数论

乘法逆元

(数论真的很难,组合数那道题,难倒了qq姐及dtx大佬

(哦而且组合数那道题大概懂了,但是不想再写一遍题解,so,flag还是倒了23333

DAY 8

en

终于来到了

良(凉)心模拟233333

难度

while(1)noip --?

我炸了dbq我太水了我不配坐在大佬旁边

t1

string

明明都想出来了求lcm

可是为什么没有暴力比对字符串???

明明不会t

你找个毛规律啊zz

#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
#define maxn 3010
#define ll long long

char s1[maxn],s2[maxn];

ll gcd(ll x,ll y) {
    if(y == 0)
        return x;
    return gcd(y,x % y);
}

ll lcm(ll x,ll y) {
    return x * y / gcd(x,y);
}

int main() {
//    freopen("string.in","r",stdin);
//    freopen("string.out","w",stdout);
    ll l,n,m,ans = 0;
    scanf("%lld%lld%lld",&l,&n,&m);
    for(int i = 1; i <= n; i++)
        cin >> s1[i];
    for(int i = 1; i <= m; i++)
        cin >> s2[i];
    //scanf("%s",s1);
    //scanf("%s",s2);
    /*    for(int i = 1; i <= n; i++)
            for(int j = 1; j <= m; j++)
                if(s1[i] == s2[j])
                    ans = ans + (l / lcm(m,n)) * lcm(m,n)/(abs(i - j) + 1);
                    */
    ll k = lcm(m,n);
    int qwq = 1,qaq = 1;
    for(int i = 1; i <= k; i++) {
        if(s1[qwq++] == s2[qaq++])
            ans++;
        if(qwq > n)
            qwq -= n;
        if(qaq > m)
            qaq -= m;
    }
    ans = ans * l / k;
    printf("%lld",ans);
    return 0;
}

t2

大概就是斐波那契

 然鹅,矩阵快速幂,我就这样不会写了【微笑【微笑【微笑

t3

path

最短路

单向边嗷嗷嗷我锤死我自己好了

啊而且记录特殊路的方法也有问题

#include<cstdio>
#include<queue>
using namespace std;
#define maxm 600010
#define INF 1000000000
#define inf 2147483647
#define maxn 100010

struct EDGE {
    int nxt,to,weight;
} edge[maxm];

priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q;
int head[maxn],cnt;
int dis[maxn];
int total;
bool vis[maxn];

void add(int x,int y,int z) {
    edge[++cnt].to = y;
    edge[cnt].nxt = head[x];
    head[x] = cnt;
    edge[cnt].weight = z;
}

int main() {
    freopen("path.in","r",stdin);
    freopen("path.out","w",stdout);
    int a,b,n,s,t;
    scanf("%d%d%d%d%d",&n,&a,&b,&s,&t);
    for(int i = 1; i <= a; i++) {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        add(x,y,z);
    }
    for(int i = 1; i <= b; i++) {
        int x,y;
        scanf("%d%d",&x,&y);
        add(x,y,INF);
    }
    for(int i = 1; i <= n; i++)
        dis[i] = inf;
    q.push(make_pair(0,s));
    dis[s] = 0;
//    printf("%d",q.empty());
    while(!q.empty()) {
        int u = q.top().second;
        q.pop();
        if(vis[u])
            continue;
        vis[u] = 1;
        for(int i = head[u]; i; i = edge[i].nxt) {
            int v = edge[i].to;
            //    printf("qwq %d\n",v);
            if(dis[v] > dis[u] + edge[i].weight) {
                dis[v] = dis[u] + edge[i].weight;
                //    printf("qwq %d %d\n",edge[i].weight,v);
                q.push(make_pair(dis[v],v));
           //     if(edge[i].weight == INF)
             //       total++;
            }
        }
    }
    printf("%d %d",dis[t] / INF,dis[t] % INF);
    return 0;
}
/*
5 3 1 1 5
2 3 3
3 5 4
2 5 9
1 2
*/

 emmm这个代码也不知道对不对现这么放着吧

DAY 9

树形dp,hash,trie字典树

(开始大部分都是不会的东西了www

(trie树真的挺简单的

DAY 10

未完待续。。。

无论如何都要矫(xia)情(bai)一下

这几天,真的很棒,远离学习,远离课业,沉寂在电脑和代码中,真切地有了名为“宅”的感觉,虽然跟宅完全不同

但是这次寒假集训真的带给了我很多

比如八卦,比如jqe学长,比如爆炸的分数。。。

emmmm

夸一夸企鹅学长吧

他真的超认真,超负责,不停的备课讲课答疑debug

他笑起来很有感染力,课堂的氛围也很欢乐,还有经常换的似乎没什么区别但仍旧很帅气的衬衫

真的超喜欢了

这样美好的平衡,认真而快乐

希望,以后还能再见

最后,我是不会说qe学长不让说教的比xx(只可意会不可言传)好的事的【划死

猜你喜欢

转载自www.cnblogs.com/sevenyuanluo/p/10319300.html