CodeChef Factorial to Square (分块决策)

Description

给定一个n,要求在[1,n]中删除一些数,并使剩下的数的乘积是一个完全平方数,同时要求乘积最大,求删除方案数.
\(n\leq 3000\)

Solution

  • 首先要构造出最优解,考虑把所有数相乘,发现如果某个质因数出现的奇数次,那就必须要删掉一个.那么只用在[1,n]中把该质数删除即可,得到的就是乘积最大的完全平方数.

  • 现在考虑构造方案. 要求被删除的数包含所有必删质因数,并且只能出现一次. 那么就可以抽象成一个01串.

  • 现在把质因数分类处理,\(<\sqrt{n}\)的为一块,发现这样的质数只有13个,将这些数状压.

  • 剩下的数就暴力枚举,对于一个质因数\(x\geq\sqrt{n}\),他的倍数不会超过\(\sqrt{n}\)个,那么对于每个x,枚举它的倍数做一次背包,同时预处理剩下的数的合法情况,进行转移,复杂度为\(O(n*2^{13})\).

CodeChef Organize The Wallet (dp构造与转移)

Description

一共有7种面值的纸币,现在给定一个长度为n的纸币排列序列,要求进行一些插入操作,使得序列每种面值都是排列在一起的.求最小移动步数.
\(n\leq 100000\)

Solution

  • 插入操作的性质:如果把一张纸币拿出来,那么可以把它放到任意位置.
  • 可以考虑枚举放置顺序
    1. 如果在当前状态要放的纸币种类和当前位置的纸币种类不同,那就一定要把这个纸币抽走.
    2. 如果相同,那就不移动
    3. 如果该数应该出现在前面,那就插入到前面.
  • 转移方程大概为:
    1. \(chkmin(dp[i][j][k],dp[i-1][j][k]) (Col[i]=k)\)
    2. \(chkmin(dp[i][j][k],dp[i-1][j][k]+1) (Col[i]!=k,Col[i]\in j)\)
    3. \(chkmin(dp[i][j|Col[i]][Col[i]],dp[i-1][j][k]) (Col[i]\notin j)\)
    4. \(chkmin(dp[i][j][k],dp[i-1][j][k]+1)(Col[i]\notin j)\)

状压dp做题笔记的更多相关文章

  1. 【bzoj3195】【 [Jxoi2012]奇怪的道路】另类压缩的状压dp好题

    (上不了p站我要死了) 啊啊,其实想清楚了还是挺简单的. Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期 ...

  2. 7月15日考试 题解(链表+状压DP+思维题)

    前言:蒟蒻太弱了,全打的暴力QAQ. --------------------- T1 小Z的求和 题目大意:求$\sum\limits_{i=1}^n \sum\limits_{j=i}^n kth ...

  3. 【bzoj1087】【互不侵犯King】状压dp裸题(浅尝ACM-D)

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=54329606 向大(hei)佬(e)势力学(di ...

  4. POJ 3254 - Corn Fields - [状压DP水题]

    题目链接:http://poj.org/problem?id=3254 Time Limit: 2000MS Memory Limit: 65536K Description Farmer John ...

  5. hdu 1185 状压dp 好题 (当前状态与上两行有关系)

    /* 状压dp 刚开始&写成&&看了好长时间T0T. 状态转移方程 dp[i][k][j]=Max(dp[i][k][j],dp[i-1][l][k]+num[i][j]);( ...

  6. poj 3254 状压dp入门题

    1.poj 3254  Corn Fields    状态压缩dp入门题 2.总结:二进制实在巧妙,以前从来没想过可以这样用. 题意:n行m列,1表示肥沃,0表示贫瘠,把牛放在肥沃处,要求所有牛不能相 ...

  7. 二维状压DP经典题

    炮兵阵地 题目链接 题目大意:在n*m的地图上放置炮兵,每个炮兵的攻击范围是上下左右两格内,有两种不同的地形,山地(用"H" 表示),平原(用"P"表示),只有 ...

  8. 洛谷 P1879 玉米田(状压DP入门题)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 相关变量解释: int M,N; int plant[maxn][maxn];/ ...

  9. HihoCoder - 1048 状压DP 经典题

    hihocoder题解说的十分清晰了,这份代码就是从讲解里学习的 方案数就是不断枚举合法状态下横放竖放或两者均可 合法判断的依据是记录当前行和下一行的状态 防止重复枚举的方法是先按行后按列 递归基瞎写 ...

随机推荐

  1. Java反射:Web学习的灵魂

    反射:Web学习的灵魂 我们从最初的 javac -HelloWorld.java,到面向对象部分,我们可以将Java代码在计算机中经历的阶段分为三部分:Scource源代码阶段 -- Class类对 ...

  2. Oracle数据库连接工具的使用(二)

    一.SQL Plus介绍 1.简介 Oracle的sql plus是与oracle进行交互的客户端工具.在sql plus中,可以运行sql plus命令与sql语句. 我们通常所说的DML.DDL. ...

  3. Qt Pro相关

      Qt项目pro文件相关知识总结和记录 pro文件中使用相对路径需要注意的地方 INCLUDE_PATH 后接的路径./代表的是pro所在目录 LIBS 后接的./是可执行文件所在的目录,该目录会被 ...

  4. 【AtCoder】diverta 2019 Programming Contest

    diverta 2019 Programming Contest 因为评测机的缘故--它unrated了.. A - Consecutive Integers #include <bits/st ...

  5. 使用Google提供的ZXing Core,Java生成、解析二维码

    1.maven项目中,pom.xml中引入ZXing Core工具包: <!-- https://mvnrepository.com/artifact/com.google.zxing/core ...

  6. HDU 4417-Super Mario-线段树+离线

    Description Mario is world-famous plumber. His "burly" figure and amazing jumping ability ...

  7. CSP/NOIP c++常用模板

    蒟蒻目前还是提高组选手,模板将会持续更新! 目录: 线段树 对拍 exgcd st 树状数组 树剖 dijsktra spfa tarjan 匈牙利 埃筛 差分树状数组 dinic 快速幂取余 Exg ...

  8. AtCoder Beginner Contest 144 题解

    传送门 $cf$ 自闭了,打 $abc$ 散散心 A - 9x9 ...这个有什么好讲的吗,题目看懂就会做了 #include<iostream> #include<cstdio&g ...

  9. 复习二叉数 pat l2-006 数的遍历

    L2-006. 树的遍历   给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(<=30),是二叉树中结点 ...

  10. CSS 实现居中 + 清除浮动

    一.水平居中 1.行内元素:text-align:center; 2.块级元素:margin:0 auto; 3.绝对定位和移动:absolute + transform 4.绝对定位和负边距:abs ...