zoukankan      html  css  js  c++  java
  • 20210615总结

    20210615总结

    怎么说呢,体验极差。

    一开始看的 T1 ,没想到状压,大概在 7:50 感觉是背包硬算概率,设 (f[i][j]) 表示第 (i) 个数加成了 (j) 的概率。但这玩意没法算答案,因为不知道是什么时候做的,没法处理一个时间两个数都加的冲突。8:30 然后就放了放,去看T2。题解中是用了枚举那些步骤操作了 (a_i) ,这样就可以处理了同一个时间不能操作2个数的问题,而且时间 (m) 只有 10,很适合状压,一般的状压是对物品数 (n) 状压,我以为是按照时间枚举,就是到了时间 (i) 每个数的状态,这样假了。

    很快想了一个 (n^4) 的算法 8:40?,码了很久,大概在9:20?,然后想到能用单调栈优化成 (n^2) 的,这个码的很快 9:40左右,拍了 100 组,没拍出来问题,感觉稳了,自闭了。后来被卡成 0 分了,原因:那种处理方法需要有点才能枚举到矩形,可能有些情况需要换一下 ((x,y)) 才能枚举到那个答案的矩形。干他娘的。

    然后去看T3了,woc DDP?怀疑是老师故意出给我的。还有2个小时左右,打算先把递推式写出来,因为DDP要用矩阵乘法,dp式子不能太复杂,就尽量想一些简单的dp,最后实在不行了,打算写一个麻烦的dp,代码大概长这个样子

    void dfs(int x)
    {
    	memset(f[x],-0x3f,sizeof f[x]);
    	f[x][1]=0;
    	Graph(x){
    		dfs(y);
    		LL temp=-inf;
    		for(int j=1;j<=L;j++)
    			temp=max(temp,f[y][j]);
    		for(int j=2;j<=L;j++)
    			f[x][j]=max(f[x][j],f[y][j-1]-temp);
    		f[x][1]+=temp;
    	}
    	for(int i=2;i<=L;i++)
    	f[x][i]+=f[x][1];
    	for(int i=1;i<=L;i++)
    	f[x][i]+=w[x][i];
    }
    

    这玩意写成递推形式好难啊,我是真不会,题解还真这样转换的。

    然后我就自闭了,写了个很麻烦的地推形式,矩阵大概 14*14,那么没修改一次大概就是 54880 次运算,然后我就自闭了。只有一直在考虑优化这个矩阵大小,到最后就没了。最后只把暴力交了上去。

    反思

    想了想,其实对于T3,(L=2) 和链的情况的递推式不是很麻烦,没有那么多max啥的,算了一下大概有65分,下回这种T3就不应该硬搞100分的,还是太那啥了,而且能力也不够。

  • 相关阅读:
    深入了解SQLServer系统数据库工作原理(转)
    什么是动态语言(转)
    ASP.NET 2.0客户端回调的实现分析
    什么是“分布式应用系统”
    SQLServer数据库安全管理机制详解
    什么是 CLR(转)
    docker容器下的asp.net core项目发布运维
    VLAN技术
    用getDrawingCache方法获取ImageView中的图像需要注意的问题
    交换机的工作原理
  • 原文地址:https://www.cnblogs.com/zYzYzYzYz/p/14887695.html
Copyright © 2011-2022 走看看