A. Alternative Thinking

这个标的是dp,但是我感觉就只能算思维题,不是特别难,

你仔细想想就知道,你先求出01这样子满足条件的个数,如果要进行改变,最多只可以增加两个,也可以增加一个或者不增加。

如果有连续的两个1或者0那么肯定至少可以增加一个,如果有两个不同的00 或者11  或者是两个11连续 或者两个00不连续 或者三个相同的0或者1都是可以增加两个的。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>
#define inf 0x3ff3f3f
using namespace std;
const int maxn = 1e6 + ;
char a[maxn];
int num[maxn]; int main()
{
int n;
scanf("%d", &n);
scanf("%s", a + );
int len = strlen(a + );
int ans = ;
int f = ;
for(int i=;i<=len;i++) num[i] = a[i] - '';
int flag = num[];
for(int i=;i<=len;i++) if (num[i] == !flag) flag = num[i], ans++;
for (int i = ; i < len; i++) if (num[i] == num[i + ]) f = ;
//printf("%d\n", ans);
int ex = ;
if(f) printf("%d\n", ans);
else
{
for(int i=;i<len;i++)
{
if(num[i]==num[i+])
{
ex++;
int x = i;
while (num[x] == num[x + ]) x++;
i = x;
}
}
for (int i = ; i < len - ; i++) if (num[i] == num[i + ] && num[i] == num[i + ]) ex = ;
if (ex >= ) printf("%d\n", ans + );
else printf("%d\n", ans + );
}
return ; }
/*
56
10101011010101010101010101010101010101011010101010101010
*/

A

A. Pride

这个题目不是很难,思维题,这个题目有几种情况要考虑,

第一个是存在1的情况,那么答案就是n-flag,flag表示1的数量。

第二个就是看他们的所有数gcd是不是等于1 如果不是那么就输出-1

第三个就是gcd==1 所以但是没有1 这个时候我们就可以找到每一个一段进行gcd==1 把所有的段都保存下来,然后求最小的数值让他gcd==1

找到之后就再加上n-1即可。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <algorithm>
#include <vector>
#include <iostream>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn = 2e3 + ;
queue<int>que;
int a[maxn]; int gcd(int a,int b)
{
return b == ? a : gcd(b, a%b);
} int main()
{
int n;
scanf("%d", &n);
int flag = ;
for (int i = ; i <= n; i++) {
scanf("%d", &a[i]);
if (a[i] == ) flag++;
}
if(flag)
{
printf("%d\n", n - flag);
return ;
}
flag = ;
int ans = a[];
int ax = a[];
for(int i=;i<=n;i++)
{
if (gcd(a[i], a[i - ]) == ) flag = ;
ans = gcd(ans, a[i]);
ax = gcd(ax, a[i]);
if(ans==)
{
que.push(i);
ans = a[i + ];
}
}
if (flag) printf("%d\n", n);
else if (ax != ) printf("-1\n");
else
{
int an = inf;
while(!que.empty())
{
int num = ;
int u = que.front(); que.pop();
int ex = a[u]; u--;
while(ex!=)
{
ex = gcd(ex, a[u]);
u--;
num++;
}
an = min(an, num);
}
printf("%d\n", n - + an);
}
return ;
}

A

dp 20190617的更多相关文章

  1. BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 4142  Solved: 1964[Submit][Statu ...

  2. 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...

  3. AEAI DP V3.7.0 发布,开源综合应用开发平台

    1  升级说明 AEAI DP 3.7版本是AEAI DP一个里程碑版本,基于JDK1.7开发,在本版本中新增支持Rest服务开发机制(默认支持WebService服务开发机制),且支持WS服务.RS ...

  4. AEAI DP V3.6.0 升级说明,开源综合应用开发平台

    AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...

  5. BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4026  Solved: 1473[Submit] ...

  6. [斜率优化DP]【学习笔记】【更新中】

    参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroS ...

  7. BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][St ...

  8. px、dp和sp,这些单位有什么区别?

    DP 这个是最常用但也最难理解的尺寸单位.它与“像素密度”密切相关,所以 首先我们解释一下什么是像素密度.假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算 ...

  9. android px转换为dip/dp

    /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public int dipTopx(Context context, float dpValue) { final floa ...

随机推荐

  1. 如何提高你使用windows的逼格(windows用成Linux的赶脚)

    一.准备工作 作为一个整洁而有内涵的人,电脑桌面一定要清洁 二.桌面整洁了,软件怎么打开呢?     方案一 方案二.敲重点   我们可以使用终端指令打开windows安装的任意软件: 打开Windo ...

  2. AJ学IOS(17)UI之纯代码自定义Cell实现新浪微博UI

    AJ分享,必须精品 先看效果图 编程思路 代码创建Cell的步骤 1> 创建自定义Cell,继承自UITableViewCell 2> 根据需求,确定控件,并定义属性 3> 用get ...

  3. 【翻译】创建String 使用“”还是构造函数(new String)

    在java中创建String,通常有以下两种方法. String x = "abc"; String y = new String("abc"); 它们之间有什 ...

  4. 动态规划_01背包_从Dijikstra和Floyd入手,彻底理解01背包

    dp一直是短板,现在从最基础的地方开始补 给定背包总容量 M ,n个商品选择,分别有价值vi,占量wi,从中取商品放入背包,令.容量和W=Σwi不超过M,令背包中的价值和V=Σvi最大 然后取法有很多 ...

  5. RocketMQ存储机制与确认重传机制

    引子 消息队列之前就听说过,但一直没有学习和接触,直到最近的工作流引擎项目用到,需要了解学习一下.本文主要从一个初学者的角度针对RocketMQ的存储机制和确认重传机制做一个浅显的总结. 存储机制 我 ...

  6. redis:key命令(二)

    设置一个key:set name hello 获取一个key的值:get name 查看所有的key:keys * 查看key是否存在:exists name 移动key到指定库:move name ...

  7. MySQL不香吗,为什么还要有noSQL?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是分布式专题的第14篇文章,我们一起来看看NoSQL数据库. 其实我很早就想写写分布式数据库相关的文章,既是我现在正在学习的,也是我很感 ...

  8. jeecg ant design vue一级菜单跳到外部页面——例如跳到百度

    需求:点击首页跳到百度新打开的页面 找到SideMenu.vue   对应的inde.js找到renderMenuItem 函数.加一个判断 if(menu.meta.url=='https://ww ...

  9. thinkphp5 --接口实例

    这是我自己构思的案例,写的不好请多多指教. 后台接口的代码: public function index() { $res = array(); header("Access-Control ...

  10. Oracle数据库字段保留3位小数,程序读出来显示4位小数

    需求 项目需求从字段2位小数,改成3位小数,这事儿好办,数据库噼里啪啦敲了一行代码,发现居然报错,原因是不能修改字段精度问题,然后使用了冒泡排序,搞定 --新增临时字段 ,); --将原字段内容拷贝至 ...