湖南集训day2

难度:☆☆

/*显然可以前缀和*/
#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的更多相关文章
- 主席树 || 可持久化线段树 || BZOJ 3653: 谈笑风生 || Luogu P3899 [湖南集训]谈笑风生
题面:P3899 [湖南集训]谈笑风生 题解: 我很喜欢这道题. 因为A是给定的,所以实质是求二元组的个数.我们以A(即给定的P)作为基点寻找答案,那么情况分两类.一种是B为A的父亲,另一种是A为B的 ...
- P3900 [湖南集训]图样图森破
P3900 [湖南集训]图样图森破 链接 分析: 感觉像个暴力. 可以枚举回文串的回文中心,即枚举一个串,枚举一个串的位置作为回文中心,然后求出这个串内的回文串的长度. 此时如果回文串两端都没有到这个 ...
- WC集训DAY2笔记 组合计数 part.1
目录 WC集训DAY2笔记 组合计数 part.1 基础知识 组合恒等式 错排数 卡特兰数 斯特林数 伯努利数 贝尔数 调和级数 后记 补完了几天前写的东西 WC集训DAY2笔记 组合计数 part. ...
- 2019暑期金华集训 Day2 线性代数
自闭集训 Day2 线性代数 高斯消元 做实数时,需要找绝对值最大的作为主元,以获取更高精度. 在欧几里得环(简单例子是模合数)意义下也是对的.比如模合数意义下可以使用辗转相除法消元. 欧几里得环:对 ...
- 暑假集训Day2 互不侵犯(状压dp)
这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...
- 2022寒假集训day2
day1:学习seach和回溯,初步了解. day2:深度优化搜索 T1 洛谷P157:https://www.luogu.com.cn/problem/P1157 题目描述 排列与组合是常用的数学方 ...
- 考前停课集训 Day2 非
因为太长了 所以一天一天分开发 Day2 昨天晚上没开黑车 没脱衣服就睡了 可能是我难受了…… 新的一天. 早上好. 我没去晨跑,早上先和团长集合了,没看见rkbudlo来 于是就先吃饭了 去机房的时 ...
- 长沙雅礼中学集训-------------------day2
怎么说呢,今天的题特别的神奇,因为emmmmmm,T1看不懂(一直到现在还没有理解明白期望概率什么的),T2题面看不懂+扩展欧几里得求逆元怎么求我忘了,T3哇,终于看懂一题了,然而写了个50分的程序但 ...
- 集训Day2
雅礼集训2017Day2 T1 给你一个水箱,水箱里有n-1个挡板,水遵循物理定律 给你m个条件,表示第i个格子上面y+1高度的地方有或没有水 现在给你无限的水从任意地方往下倒,问最多满足多少条件 n ...
随机推荐
- 【linux】【CPU】【x86】平台说明
节选自 <鸟哥的linux私房菜> http://cn.linux.vbird.org/linux_basic/0520rpm_and_srpm_1.php 操作硬件平台:这是个很好玩的地 ...
- 科学计算库Numpy——numpy.ndarray
创建ndarray 元素类型 对于ndarray结构来说,里面所有的元素必须是同一类型的,如果不是的话,会自动的向下进行转换. 元素类型所占字节数 数组维数 元素个数 数组的维度 数组中填充固定值 索 ...
- selenium +python web自动化测试环境搭建
基础框架搭建 1.安装python 2.安装selenium cmd输入pip install selenium 问题:在python中输入from selenium import webdriver ...
- 安装VS2010 无法打开数据文件deffactory.dat
VS2010旗舰版可用Key: YCFHQ9DWCYDKV88T2TMHG7BHP 解压VS2010安装ISO文件,找到setup\deffactory.dat文件,用记事本打开,将里面内容清空,将以 ...
- MySQL安装与配置介绍
MySQl介绍 官方站点:http://www.mysql.com/ MySQL是一个开放源码的小型关联式数据库管理系统.目前MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速 ...
- emacs设置字体
* C-h f set-default-font set-default-font is an alias for `set-frame-font' in `frame.el'. (set-defau ...
- selenium2等待元素加载
1.硬性等待 Thread.sleep(8000); 所谓的硬性等待就是,执行完相应操作就等待我设置的8s.无论网速快与慢,网速快的话,也许5s就打开网页了,可是程序必须接着等待剩下的3秒. 网速慢的 ...
- CDH4 journalnode方式手工安装手册之一
一. 环境部署概况 cdh-master 172.168.10.251 cdh-node1 172.168.10.251 cdh-no ...
- action属性和data属性组合事例
- java内存模型学习
根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 虚拟机的内存模型分为两部分:一部分是线程共享的,包括 Java 堆和方法区:另一部分是线程私有的,包括虚拟 ...