0x02 枚举模拟递推

Posted AKCqhzdy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0x02 枚举模拟递推相关的知识,希望对你有一定的参考价值。

1、TYVJ1266(这站是不是已经倒闭了啊) USACO陈年老题,对于这种开关问题啊,最多只按一次,而且第一行随便按完下面的就全确定了,类似的还有固定翻转一个长度的区间,这个也是最多翻一次的而且翻的次数为n-L

2、POJ1958 四塔的汉诺塔问题。但是好像是弱化的二维DP递推,马马虎虎吧

3、bzoj1218 陈年老题,二维前缀和+老古董套路容斥

4、POJ3263 有点意思的题,假如我做的话就会强行差分约束,但是我不能确定类spfa的做法能否满足。正解是对于两个个可以相互看到的点,当然先是看作一个约束条件,他们之间的点一定比他们要至少小1。那么就是区间修改-1,用差分数组。(想到GDOI左老师的题,不定区间用差分转化)
这题还有个小点要注意。
对于两个约束区间,要么是包含关系,要么是不相交,否则矛盾。
细节还挺多

技术分享图片
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<map>
using namespace std;
map<int,bool>mp[11000];

int c[11000];
int main()
{
    int n,T_T,H,Q;
    scanf("%d%d%d%d",&n,&T_T,&H,&Q);
    while(Q--)
    {
        int l,r;
        scanf("%d%d",&l,&r);
        if(l>r)swap(l,r);
        l++,r--;
        if(r>=l&&mp[l][r]==false)
        {
            mp[l][r]=true;
            c[l]--;c[r+1]++;
        }
    }
    for(int i=1;i<=n;i++)
        c[i]+=c[i-1], printf("%d\n",H+c[i]); 
    return 0;
}
POJ3263

 

以上是关于0x02 枚举模拟递推的主要内容,如果未能解决你的问题,请参考以下文章

HRBUST 1211 火车上的人数数论解方程/模拟之枚举+递推

不要再死刷LeetCode啦,先掌握这常用的八大算法思想再说!枚举递推递归分治动态规划贪心回溯模拟

递归与递推一

递归与递推一

95. 费解的开关(Acwing)(分析+递推)

[枚举] aw116. 飞行员兄弟(二维递推+开关问题+二进制枚举)