一个小 Trick
平方变两次
一个状态 \(S\) 有一个贡献,所有状态 \(S\) 组成集合 \(U\) .
然后我们要统计下面这个东西
\]
然后我们就可以看作是选两个 \(U\) 里的 \(S_1, S_2\),然后 \(S_1=S_2\) 的方案数 .
这样就把一个带平方的贡献问题转化成一个简单的选择了 .
让我们看一个实例:
两个字符串 \(S,T\) .
整一个仅含 \(1, 2\) 的序列 \(\{a\}\),用以下步骤生成一个字符串 \(U\):
- 扫描序列 \(\{a\}\) .
- 目前扫到了 \(x\):
- 如果 \(x\) 是 \(1\),从 \(S\) 的末尾拿一个字符放到 \(U\) 的开头,然后把 \(S\) 末尾那个字符删了 .
- 如果 \(x\) 是 \(2\),从 \(T\) 的末尾拿一个字符放到 \(U\) 的开头,然后把 \(T\) 末尾那个字符删了 .
然后最后 \(S,T\) 都删没了得到的 \(U\) 就是生成出来的字符串 .
所有只有 \(n\) 个 \(1\),\(m\) 个 \(2\) 的序列是合法的 .
令 \(f(X)\) 为序列 \(X\) 能被多少给合法序列生成 .
求
\[\sum_X f^2(X)
\]对 \(1024523\) 取模 .
\(1\le n,m\le 500\) .
题解:
平方变两次,于是变成生成两次生成了相同的串的方案数 .
直接大力普及组 DP,令 \(dp_{i,j,k,l}\) 表示第一次 \(S\) 取 \(i\) 个,\(T\) 取 \(j\) 个;第一次 \(S\) 取 \(k\) 个,\(T\) 取 \(l\) 个的答案 .
然后轻松转移把 .
显然 \(i+j=k+l\),于是可以滚掉一维度 .
于是这道题就被 \(O(n^2m)\) 解决了 .
一些类似的题目:
- BJOI2017 机动训练
- UOJ #667 提问系统(需要把原 Trick 推广到单项式)
- AGC013E Placing Squares
一个小 Trick的更多相关文章
- 通过一个小Trick实现shader的像素识别/统计操作
2018/12/14日补充:后来发现compute shader里用AppendStructuredBuffer可以解决这类问题,请看这里:https://www.cnblogs.com/hont/p ...
- Python2 下 Unicode 的一个小bug
关于Python的编码问题已经是老生常谈了,此处主要是介绍一个罕见的问题,也算是Python2的一个bug了(Python3不会有此问题). 在有时候我们去爬取网页或者调用一些第三方库获取文本的时候, ...
- 一些计数小Trick
一些计数小Trick 虽然说计数问题如果不是特别傻逼的话想做出来基本随缘. 但是掌握一些基本的计数方法还是十分有必要的. 想到了就更新. 1. 对于排列的DP问题,一般是不能够按照位置一个一个放的,一 ...
- 语法上的小trick
语法上的小trick 构造函数 虽然不写构造函数也是可以的,但是可能会开翻车,所以还是写上吧.: 提供三种写法: 使用的时候只用: 注意,这里的A[i]=gg(3,3,3)的"gg&qu ...
- file_put_contens小trick
file_put_contents tricks 0x01 trick1 来自于P神的实例: <?php $text = $_GET['text']; if(preg_match('[<& ...
- Python multiprocessing 基础使用和小trick
最近进行数据预处理时(噪声插入),单进程严重影响实验周期,故学习了multiprocessing并发执行不同数据集的处理,加快执行效率.现于此进行一些简单记录以供日后参考. 1. 基础: From m ...
- Redola.Rpc 的一个小目标
Redola.Rpc 的一个小目标 Redola.Rpc 的一个小目标:20000 tps. Concurrency level: 8 threads Complete requests: 20000 ...
- UniversalImageLoader的一个小问题
最近在使用UniversalImageLoader时遇到了一个小问题,多个地方同时通过ImageLoader.getInstance().loadImage(url, new ImageSize(dp ...
- 与大家分享robotium一个小问题。Test run failed:Instrumentation run failed due to 'java.lang.ClassNotFoundException'
今天和大家分享robotium一个小问题. 我们在运行自已经搭好的框架时,有可能会出现一个找不到类的错误(如上图所示). 问题是重签名工具给出的activity有误,这时我们可以用Appt命令查看重签 ...
随机推荐
- Java学习笔记-基础语法Ⅴ
学习一些Java常用的API Math:包含执行基本数字运算的方法 如果没有构造方法,一般类的成员都是静态的,通过类名可以直接调用 Java中有两种random函数,Math.Random()函数能够 ...
- Spark——Standalone 环境安装及简单使用
Standalone 环境安装 将 spark-3.0.0-bin-hadoop3.2.tgz 文件解压缩在指定位置(/opt/module) tar -zxvf spark-3.0.0-bin-ha ...
- 通过CSS让图片变的清楚
image { width: 100%; height: 100%; border-radius: 10upx; //让图片变清楚 image-rendering: -moz-crisp-edges; ...
- 【Unity Shader】syntax error: unexpected token 'struct' at line x 错误解决办法
以下代码处出现了syntax error: unexpected token 'struct' at line 33的错误 struct a2v { float4 vertex_position : ...
- CF Divan and Kostomuksha
题意:NKOJ CF 思路:首先发现贪心不了.因此dp.然后这题需要维护的就\(g_i\)和\(sum{g_i}\) 状态:\(dp[i]\): 当前最后一个为\(g_i\)的最大值 \(dp[i]= ...
- SQL数据库操作总结
1. 如何增加(创建)数据库 语法 CREATE DATABASE database_name 2.如何增加(创建)数据表 语法 CREATE TABLE table_name { column_na ...
- JAVA - 线程同步和线程调度的相关方法
JAVA - 线程同步和线程调度的相关方法 wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁:wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等 ...
- 无鼠标打开Windows设备管理
转载:https://blog.csdn.net/weixin_39946767/article/details/118644619
- 构建基于React18的电子表格程序
背景 2022年3月29日,React正式发布18.0.0.本次升级内容包括开箱即用的改进,如自动批处理.新的API(如startTransition)和支持Suspense 的流式服务器端渲染.关于 ...
- C#/VB.NET 在Word转PDF时生成目录书签
当我们在转换Word文档到PDF格式时,想保留Word文档的标题作为PDF书签,那么应该如何操作呢?那么本文将以C#及VB.NET代码为例,介绍如何在Word转PDF时生成目录书签.下面是具体方法和步 ...