难度:☆☆

/*显然可以前缀和*/
#include<iostream>
#include<cstdio>
#include<cstring> #define N 100007 using namespace std;
int n,m,ans,cnt;
int a[N],sum[N];char s[N]; int main()
{
freopen("reverse.in","r",stdin);
freopen("reverse.out","w",stdout);
scanf("%s",s);n=strlen(s);ans=N+N;
if(n==)
{
printf("0\n");
return ;
}
for(int i=;i<n;i++) a[i+]=s[i]==''?:;
for(int i=;i<=n;i++) sum[i]=sum[i-]+a[i];
for(int i=;i<=n;i++)
{
ans=min(ans,sum[i]+n-i-(sum[n]-sum[i]));
}
printf("%d\n",ans);
return ;
}

/*
枚举,用vis一个二进制数组表示当前数每一位的状态,出现或者不出现。
然后把二进制转为十进制,cnt[十进制]+1。
最后因为要求多少对,所以答案累加C(i,2)。
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define size 1024 using namespace std;
int n,cnt[size],vis[];
int Use[]={,,,,,,,,,};
long long ans; int main()
{
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
cin>>n;
int start,End;
for(int i=;i<=n;i++)
{
start=i;End=;memset(vis,,sizeof vis);
while(start) vis[start%]=,start/=;
for(int j=;j<=;j++) if(vis[j]) End+=Use[j];
cnt[End]++;
}
for(int i=;i<size;i++) ans+=1ll*cnt[i]*(cnt[i]-)/;
cout<<ans<<endl;
fclose(stdin);fclose(stdout);
return ;
}

/*
做法类似最长上升子序列
线段树可以优化到70,不会写没治...
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib> #define N 10000007 using namespace std;
int dp[N],a[N],cnt[N];
int n,k,ans; int main()
{
freopen("wave14.in","r",stdin);
freopen("wave.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
for(int i=;i<=n;i++) dp[i]=cnt[i]=;
for(int i=;i<=n;i++)
{
for(int j=;j<=i;j++)
{
if(abs(a[j]-a[i])>=k)
{
if(cnt[j]%== && a[i]<a[j])
{
if(dp[i]<dp[j]+) dp[i]=dp[j]+,cnt[i]=cnt[j]+;
}
else if(cnt[j]%!= && a[i]>=a[j])
{
if(dp[i]<dp[j]+) dp[i]=dp[j]+,cnt[i]=cnt[j]+;
}
else dp[i]=max(dp[i],dp[j]);
}
}
}
printf("%d\n",dp[n]);
fclose(stdin);fclose(stdout);
return ;
}

30分暴力dp

/*
很神奇。
贪心,在满足k的限制下,偶数项尽量大,奇数项尽量小。
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define N 2000007 using namespace std;
int a[N];
int n,k,m,ans,cur; inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int main()
{
n=read();k=read();
for(int i=;i<n;i++) a[i]=read();
ans=,m=,cur=a[];
for(int i=;i<n;i++)
{
if(m)
if(cur-a[i]>=k)
m=,ans++,cur=a[i];
else cur=max(cur,a[i]); else
if(a[i]-cur>=k)
m=,ans++,cur=a[i];
else cur=min(cur,a[i]);
}
printf("%d\n",ans);
return ;
}

湖南集训day2的更多相关文章

  1. 主席树 || 可持久化线段树 || BZOJ 3653: 谈笑风生 || Luogu P3899 [湖南集训]谈笑风生

    题面:P3899 [湖南集训]谈笑风生 题解: 我很喜欢这道题. 因为A是给定的,所以实质是求二元组的个数.我们以A(即给定的P)作为基点寻找答案,那么情况分两类.一种是B为A的父亲,另一种是A为B的 ...

  2. P3900 [湖南集训]图样图森破

    P3900 [湖南集训]图样图森破 链接 分析: 感觉像个暴力. 可以枚举回文串的回文中心,即枚举一个串,枚举一个串的位置作为回文中心,然后求出这个串内的回文串的长度. 此时如果回文串两端都没有到这个 ...

  3. WC集训DAY2笔记 组合计数 part.1

    目录 WC集训DAY2笔记 组合计数 part.1 基础知识 组合恒等式 错排数 卡特兰数 斯特林数 伯努利数 贝尔数 调和级数 后记 补完了几天前写的东西 WC集训DAY2笔记 组合计数 part. ...

  4. 2019暑期金华集训 Day2 线性代数

    自闭集训 Day2 线性代数 高斯消元 做实数时,需要找绝对值最大的作为主元,以获取更高精度. 在欧几里得环(简单例子是模合数)意义下也是对的.比如模合数意义下可以使用辗转相除法消元. 欧几里得环:对 ...

  5. 暑假集训Day2 互不侵犯(状压dp)

    这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...

  6. 2022寒假集训day2

    day1:学习seach和回溯,初步了解. day2:深度优化搜索 T1 洛谷P157:https://www.luogu.com.cn/problem/P1157 题目描述 排列与组合是常用的数学方 ...

  7. 考前停课集训 Day2 非

    因为太长了 所以一天一天分开发 Day2 昨天晚上没开黑车 没脱衣服就睡了 可能是我难受了…… 新的一天. 早上好. 我没去晨跑,早上先和团长集合了,没看见rkbudlo来 于是就先吃饭了 去机房的时 ...

  8. 长沙雅礼中学集训-------------------day2

    怎么说呢,今天的题特别的神奇,因为emmmmmm,T1看不懂(一直到现在还没有理解明白期望概率什么的),T2题面看不懂+扩展欧几里得求逆元怎么求我忘了,T3哇,终于看懂一题了,然而写了个50分的程序但 ...

  9. 集训Day2

    雅礼集训2017Day2 T1 给你一个水箱,水箱里有n-1个挡板,水遵循物理定律 给你m个条件,表示第i个格子上面y+1高度的地方有或没有水 现在给你无限的水从任意地方往下倒,问最多满足多少条件 n ...

随机推荐

  1. CentOS7搭建DNS服务器

    DNS是域名系统(Domain Name System)的缩写,它的作用是将主机名解析成IP(正向解析),从IP地址查询其主机名(反向解析). DNS的工作原理(1)客户机发出查询请求当被询问到有关本 ...

  2. Linux学习-Tarball 的管理与建议

    使用原始码管理软件所需要的基础软件 从原始码的说明我们晓得要制作一个 binary program 需要很多咚咚的呢!这包括底下这些基础的软件: gcc 或 cc 等 C 语言编译程序 (compil ...

  3. jmeter jdbc各字段的含义

    JDBC采样器各选项的含义如下: 1.Variable Name 其中的Variable Name和上面JDBC Connection Configuration中的Variable Name相同,这 ...

  4. sql获取指定表所有列名及注释

    SELECT b.name as 字段名 ,Type_name(b.xusertype) as 字段类型, Isnull(c.VALUE,'') as 字段说明FROM sysobjects a jo ...

  5. 记一次运行spark程序遇到的权限问题

    设置回滚点在本地运行时正常,在集群时就报错,后来是发现ceshi这个目录其他用户没有写的权限,修改其他用户的权限就好了 hdfs dfs - /ceshi

  6. Python 爬取图书图片和地址

    #-*- coding:utf-8 -*- import xlwt import urllib import re def getHtml(url): page = urllib.urlopen(ur ...

  7. 聊聊、Nginx 初始化错误信息

    这篇文章我们继续学习 main 方法,我们先来看看 ngx_debug_init() 这个方法. 从方法名我们也知道,debug初始化.我们先看看方法位置在哪.我们来断点在这个方法上面. Functi ...

  8. c++中set容器的功能及应用。

    set的特性是,所有元素都会根据元素的键值自动排序(默认为升序),set中不允许两个元素有相同的键值. set基本操作: 1.头文件 #include<set>. 注:一定要加上using ...

  9. hdu6097[二分+解析几何] 2017多校6

    /*hdu6097[二分+解析几何] 2017多校6*/ #include <bits/stdc++.h> using namespace std; ; struct node{ doub ...

  10. 【Luogu】P3157动态逆序对(树状数组套主席树)

    题目链接 md第一道在NOILinux 下用vim做的紫题.由于我对这个操作系统不是很熟悉,似乎有什么地方搞错了,md调死.(我还打了两遍代码,调了两个小时) 但是这道题并不难,就是树状数组套上主席树 ...