本题的正解为区间DP,可以拿到满分,转移方程如下:

F[i]=MIN{F[j]}+1
{S1[j+1][i]=0 or S2[j+1][i]=0 or ABS(S1[j+1][i]-S2[j+1][i])<=M}

部分DP:

for(i=1;i<=n;i++)for(j=1;j<=i;j++)if(abs(s1[j][i]-s2[j][i])<=m) || (s1[j][i]==0) || (s2[j][i]==0) //{满足条件}f[i]=min(f[i]f[j-1]+1); // {进行转移}

完整代码(正解):

#include<iostream>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdlib>
#define N 1400000
using namespace std;int f[N],a[N],b[N];
int maxx=1e5+6;
int n,m;int main()
{freopen("lx.in","r",stdin);freopen("lx.out","w",stdout);scanf("%d%d",&n,&m); for(int i=1;i<=n;++i){int x;scanf("%d",&x);if(x==1){a[i]=a[i-1]+1;b[i]=b[i-1];}else{a[i]=a[i-1];b[i]=b[i-1]+1;}f[i]=maxx;for(int j=i;j>=1;--j){int s1=a[i]-a[j];int s2=b[i]-b[j];if(abs(s1-s2)<=m||s2==i-j+1||s1==i-j+1)f[i]=min(f[i],f[j-1]);}f[i]++;}cout<<f[n];return 0;
}

但是如果观察不到区间DP的性质,还可以采用贪心的思想。对每一个人求出到达他所在的位置是两个教授的粉丝数之差,每次计算时从第一个人进行枚举,记录下最后一个num[i]<=m的人的位置,将包括他在内的前面所有人归为一个教室,再重新计算一次num。

代码如下(60分):

#include<iostream>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdlib>
#define N 1400000
using namespace std;int num[N],a[N],b[N];
bool check[N];
int n,m;
int pos;
int ans;void pre()
{for(int i=1;i<=n;++i){if(a[i]!=0&&b[i]!=0){if(a[i]-b[i]>=0)num[i]=a[i]-b[i];else num[i]=b[i]-a[i];}elsenum[i]=0;}
}void work()
{for(int i=1;i<=n;++i){if(num[i]<=m) pos=i;}for(int i=1;i<=n;++i){a[i]=a[i+pos]-a[pos];b[i]=b[i+pos]-b[pos];}n-=pos;ans+=1;pre();
}int main()
{freopen("orz.in","r",stdin);freopen("orz.out","w",stdout);scanf("%d%d",&n,&m);for(int i=1;i<=n;++i){int x;scanf("%d",&x);if(x==1){a[i]=a[i-1]+1;b[i]=b[i-1];}else{b[i]=b[i-1]+1;a[i]=a[i-1];}}pre();while(n!=0) work();cout<<ans;return 0;
}

这种思想可以装上指针,从后往前枚举,效率更高,而且可以得到70分。

super oj p528相关推荐

  1. super oj p52

    1.电话号码要用string读入,否则会超时 2.按字典序排列答案时应该有2种方法 (1)把字符转化成为数字数组,直接用sort快排即可 (2)把数字借用trie数的思想(没试过) 3.'-'的处理可 ...

  2. HDU OJ Super Jumping! Jumping! Jumping!

    Super Jumping! Jumping! Jumping! Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K ...

  3. 杭电OJ分类题目(3)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...

  4. 【HDU No. 4417】 超级马里奥 Super Mario

    [HDU No. 4417] 超级马里奥 Super Mario 杭电OJ 题目地址 [题意] 可怜的公主陷入困境,马里奥需要拯救他的情人.把通往城堡的道路视为一条线(长度为n ),在每个整数点i 上 ...

  5. super(Student,self).__init__()初始化的是什么东西?

    继承不是为了继承里面原来的属性和值么,不初始化的话,会有什么问题? 2015-04-04源自:python进阶 5-17642 浏览2 回答 最佳回答 2015-05-05 1 super(Stude ...

  6. Google Pixel 超分辨率--Super Resolution Zoom

    Google Pixel 超分辨率–Super Resolution Zoom Google 的Super Res Zoom技术,主要用于在zoom时增强画面细节以及提升在夜景下的效果. 文章的主要贡 ...

  7. 【译】为什么要写super(props)

    译注: 原文地址 https://overreacted.io/why-do-we-write-super-props/ 正文 我听说Hooks是新的热点.好笑的是,我想通过描述一些关于class组件 ...

  8. java super快速生成_为什么当我使用编辑器代码生成器时,eclipse会在构造函数中自动添加一个java super()方法?...

    正如@Kon在他的评论中提到的, Java中的一个空构造函数包含对超类构造函数的隐式调用. 此外,没有明确调用super()的非空构造函数将在顶部具有隐式调用. 离开super()调用是唯一的时候,如 ...

  9. java super是引用变量吗_Java中super的几种用法并与this的区别

    1.     子类的构造函数如果要引用super的话,必须把super放在函数的首位. class Base { Base() { System.out.println("Base" ...

最新文章

  1. Tomcat(三):tomcat处理连接的详细过程
  2. 13.13通过代码创建数据库和表
  3. entity framework .core常用技巧
  4. Ruby on Rails: 使用devise+cancan+rolify建立完整的权限管理系
  5. 魅族Android10内测招募答案,10款机型升级Android 10!魅族Flyme即日起内测招募
  6. centos php 错误日志,centos系统下错误日志保存在哪里
  7. SQL Server中的T-SQL RegEx命令
  8. vue组件挂载到全局方法
  9. opencore 0.6.3 华硕_钜惠嗨翻双11,颜值优选华硕GT501白色狙击手机箱
  10. 小学计算机设备报表,小学信息技术教育及电教设备自查报告
  11. SEO常用的数据名词解释
  12. 支付宝app登录授权的infoStr授权登录流程
  13. Adobe Illustrator地图设计插件mapublisher,AI制图?
  14. 【计算机体系结构】非线性流水线调度算法 C++ Python
  15. 大数据时代从繁乱冗杂中精准提取核心文本信息 × Python Tkinter 生成词云图
  16. ADS 2019 安装 仿真
  17. Web Spider 常见混淆EVAL、AA、JJ、JSFUCK
  18. 蚂蚁移动开发平台mPaaS:金融业务增长的新引擎
  19. 数学笔记23——部分分式
  20. JADE学习笔记4:Agent通信

热门文章

  1. flash spi 野火_SPI_FLASH做汉字字库芯片,测试成功
  2. 中国移动光猫怎么进网页服务器,中国移动光猫设置方法(192.168.1.1进不了光猫)...
  3. 秦皇岛达内传授零基础怎样学平面设计
  4. Android平板怎么截屏,ipad mini怎么截图 iPad/iPad mini截图技巧图解
  5. esp8266启动报错 ets Jan 8 2013,rst cause:2, boot mode:(7,7)
  6. 读书笔记-《把时间当朋友》-1
  7. 各大搜索引擎爬虫UA
  8. Unreal Engin_基础小技巧笔记
  9. 45 大事件项目 => [01] 后台管理项目ajax练习
  10. smtp java 抓包_[Wireshark]_003_电子邮件抓包分析