10月wish me luck

时间:2021-07-10 17:44:04

10/13

明天开始的三天

就要跟历史地理化学说拜拜了

以诚待之

好运

10/20

P三角形计数:一看就是叉积。因为去年迪子讲过。但是我已经忘记了。所以重新写了一遍。把所有的点有序化,将三角形面积转化为两个的叉积。因为要把绝对值去掉,所以每次都要做一遍快排。Then,不难发现它们具有前缀和性质。就可以敲起来了。

bzoj4557侦察守卫:R老师讲的时候没听懂。。百度题解发现了很精妙的写法。。想法差不多RT了。。。

#include<cstdio>
#include<algorithm>
#define N 1000010
#define inf 1000000000
using namespace std;
][],f[][];
void add(int u,int v){
    edgenum++;vet[edgenum]=v;next[edgenum]=head[u];head[u]=edgenum;
}
void dfs(int u,int ff){
    g[u][D+]=inf;
    )f[u][]=g[u][]=cost[u];
    ;i<=D;i++)g[u][i]=cost[u];
    int e=head[u];
    ){
        int v=vet[e];
        if(v!=ff){
            dfs(v,u);
            ;j--)
             g[u][j]=min(g[u][j+],min(g[u][j]+f[v][j],g[v][j+]+f[u][j+]));
            f[u][]=g[u][];
            ;j<=D+;j++){
                f[u][j]=min(f[u][j-],f[u][j]+f[v][j-]);
            }
        }
        e=next[e];
    }
}
int main()
{
    scanf("%d%d",&n,&D);
    ;i<=n;i++)scanf("%d",&cost[i]);
    scanf("%d",&M);
    ;i<=M;i++)scanf(;
    ;i<n;i++){
        int u,v;
        scanf("%d%d",&u,&v);
        add(u,v);add(v,u);
    }
    dfs(,);
    printf(][]);
} 

bzoj4557

10月wish me luck

10/21

最近要干的活好多啊。。。。

P字符消除:hash+定理。今天太忙了,题解以后补。

初赛球rp++

百度了一下主定理:

/////以上格式被吞了。。。QAQ

个人计算机操作系统是单用户操作系统,其主要特点是在某一时间为单个用户服务。
早期的DOS操作系统是单用户单任务操作系统,Windows XP 则是单用户多任务操作系统,Linux 、UNIX是多用户多任务操作系统。
现在常用的Windows操作系统都是多用户的操作系统,早期的DOS操作系统是单用户单用户操作系统,使用最广泛的的win7是多用户操作系统,其次还包括如UNIX、Linux操作系统属多用户多任务操作系统。关于单用户操作系统包括Microsoft 的MS DOS,windows 9X(95,98,ME),windows 2000。
 
 
10/25
吐槽一下,马上都要联赛了,居然还被各种事务忙摊了。。。我要学习啊啊啊。。。
惨啊。。。。。
 
 
10/26
只有txt的题解先贴一下:
《diyiti》
观察到数据随机
因此操作3的期望次数是100000/3次,每次询问长度的期望是|S|/6
事实上直接暴力仅仅需要5s就能出解。
时限有2s。
考虑压位,对于每64个分为一组。
(0,0)(0,1)(1,0)(1,1)
这些都可以通过位运算来解决。
常数很小,可以在2s内出解。
《dierti》
假设已经知道原数列,那么将该数列排序,一定是从前往后第i个与从后往前第i个分为一组,总共n/2组,考虑dp,dp[i][j][k]表示已经到第i个,从前往后第i个数为j,从后往前第i个数为k,转移可以从dp[i-1][j-x][k+y]中转移得到,其中x,y>=0,可以通过前缀和做到2000^3,注意到很多j,k其实是不可能成为答案的,能够有机会作为状态的只有2000lg(2000)对数,因此复杂度可以降为2000^2lg(2000)。
《disanti》
假设左边有n个数,右边有n个数,那么可能的完备匹配有n!种,n^2条边可能对答案都有(n-1)!次贡献。
观察到k<=20,考虑容斥,即每条不见的边是否被选进答案里。
那么总答案为Σans*(-1)^t,其中t为我选择的边的条数。ans为当前已知存在的边集的情况下的答案。
完备匹配的个数和价值总和的做法类似。
 
 
10/30

XJOJ上面的比赛早上没有看到。。。下午登陆了一下居然被人冒充了。。。。>_<心情复杂。

T1string:考虑所有有k处不同字符串组成的trie,统计T之前有几个。逐位操作,对于第i位,k表示还需要k位不同的。每次走T的字符串,分情况讨论:c<T[i],c!=Str[i],C(n-i,k-1)*25^(k-1);c<T[i],c=Str[i],C(n-i,k)*25^k;最后整个T走完了ans++;PS:数据有点弱的。奇错无比的程序可以拿20分~

T2跑跑步:可以发现(不要问我为什么发现),对于i同学所有可以走到的点,一定是gcd(a[i],n)的倍数。枚举所有n的约数d,如果d是某个gcd(a[i],n)的倍数,说明i这个人一定可以跑跑跑跑到d*K所有位置(K为任意整数∈【0,n/d】)。但是个别d*K的位置可能会被重复算,所以只保留phi(n/d)个,剩下的之后肯定可以算到了~——%%%数论之神shy

T3tree:突然发现最近做的题目中树形DP多了起来。。隐隐有种flag的预感<。)#)))≦自己先设计了一个状态,只能想到f[i][j]表示以i为根,最多取j个选择点,只能做到O(nlim^2)。。。题解中给出的状态是f[i][j]表示在当前“已经结束dfs的结点中”选择j个的最优效益,f[i][j]=max{f[i][j],f[v][j-1]+value[v]};(这下真的很精妙!!!学习了),另外看到C_SUNSHINE等人用到了题解之中第二种方法,看不懂。

10月wish me luck

bzoj2687:《交与并》。写道题像跳了个大坑。sorry to orzliyicheng....N次提交wa飞....。这道题总体可以分为三个步骤:发现答案必然是两个区间的并*交;将包含与非包含关系的操作分开来求;单调队列。有两个参数不好G(),我傻逼地以为不维护队尾也是可以的,结果为submit贡献了一堆分母。包含过程中,二分查找包含它的最大区间;至于非包含,神奇的证明它具有决策单调性,DPDP一下!

10/31(继续更交与并

10月wish me luck

要赶紧更这道题。。。因为YD现在要去卡时了QAQ。。。我马上就要time垫底了QAQ。。。

整个机房里四个人的做法包揽了全场倒5.。。。。。excited。。。。我们就是这么拽。。。

翻一番orzliyicheng的提交记录可以发现惨不忍睹,我经历了一个从sb不维护队尾的单调队列->sb二分求包含答案->类似分治求g函数的痛苦过程。。。。几次想放弃掉了

因为网上只有一篇题解而且比较高 妙,我很佩服他们YY的这些方法。。。。%%%ywn0726,and,这道题有以下两个结论:

1.两个区间必然是答案

2.转移具有单调性

(嘴巴选手依旧不会证明,嘴巴也不会证明 

相关文章