zoukankan      html  css  js  c++  java
  • CF1110D Jongmah

    传送门

    我觉得这个题特别水啊,就是自己不会写而已
    只要想到每三个连续的可以转化,这题就差不多了
    所以每种连续的最多出现2次,直接dp就行了
    代码:

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    void read(int &x) {
    	char ch; bool ok;
    	for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;
    	for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
    }
    #define rg register
    const int maxn=1e6+10;
    int n,m,a[maxn],b[maxn],f[maxn][3][3],ans;
    int main()
    {
    	read(n),read(m);
    	for(rg int i=1;i<=n;i++)read(a[i]),b[a[i]]++;
    	for(rg int i=1;i<=m;i++)
    		for(rg int x=0;x<=2;x++)
    			for(rg int y=0;y<=2;y++)
    				for(rg int z=0;z<=2;z++)
    					if(b[i]>=x+y+z)f[i][x][y]=max(f[i][x][y],f[i-1][z][x]+(b[i]-x-y-z)/3+y);
    	printf("%d
    ",f[m][0][0]);
    }
    
  • 相关阅读:
    golang语法要点笔记
    环境配置
    实现chrome多用户独立cookie
    Golang遇到的问题记录
    php preg_replace去除html xml 注释
    C 基础
    多种写法
    mysql 查看当前数据库
    sql group by
    sql CONCAT()
  • 原文地址:https://www.cnblogs.com/lcxer/p/10364237.html
Copyright © 2011-2022 走看看