一个小 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命令查看重签 ...
随机推荐
- C语言函数调用栈
C语言函数调用栈 栈溢出(stack overflow)是最常见的二进制漏洞,在介绍栈溢出之前,我们首先需要了解函数调用栈. 函数调用栈是一块连续的用来保存函数运行状态的内存区域,调用函数(calle ...
- 使用BGP-blackhole解决IDC频繁遭受DDOS攻击困扰
项目背景 该项目位于某市级BGP IDC机房,机房客户多为web业务,遭受小流量攻击(10G量级)较为频繁,针对这一现象在机房core旁路部署ADS系统,牵引异常流量清洗后进行回源,该清洗方案在此不再 ...
- 【单片机】CH32V103C8T6定时器3程序实验
代码功能:每隔1毫秒进入一次定时器中断. 每隔1秒串口打印一次数据. time.c #include "time.h" #include "ch32v10x.h" ...
- 使用docker创建和运行跨平台的容器化的mssql数据库
我们一般启用sql server数据库要么选择安装SQL Server实例和管理工具(SSMS),要么用vs自带的数据库.如今net跨平台成为趋势,今天给大家介绍另一种我最近在玩的方式,即使用dock ...
- 一些实验中用过的python函数/方法(持续更新)
衡量运行时间 很多时候你需要计算某段代码执行所需的时间,可以使用 time 模块来实现这个功能. import time startTime = time.time() # write your co ...
- datax在解析完配置后,会将core.json,job.json,plugin.json合并内容
{ "common": { "column": { "dateFormat": "yyyy-MM-dd", " ...
- BI 如何让SaaS产品具有 “安全感”和“敏锐感”(上)
SaaS模式一经推出,凭借自身的高性价比.低维护成本,无需软硬件维护.无需运维等明晃晃的优点,得到了爆发式的增长,甚至全面改变了软件的开发模式.各位老总的问候语,不知从什么时候开始,都变成了:&quo ...
- torch.nn.MSELoss()函数解读
转载自:https://www.cnblogs.com/tingtin/p/13902325.html
- 开发工具-在线计算MD5
更新记录: 2022年6月8日 更新标题. 2022年6月1日 开始. 都记在这以后就不用到处找了. 在线计算MD5 https://www.sojson.com/md5/ http://www.ip ...
- .NET 处理[未能为 SSLTLS 安全通道建立信任关系]问题
更新记录 2022年4月16日本文迁移自Panda666原博客,原发布时间:2021年7月16日. 在.NET的开发过程中,发现[基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系]问题 ...