T1

模拟,80?

#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<ctime>
using namespace std;
typedef long long LL;
const int N=1e5+;
int a[N],n,len;
char s[N];
int w[N],maxn;
LL f[N],tot;
int main()
{
freopen("maximum.in","r",stdin);
freopen("maximum.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
cin>>(s+);
for(int i=;i<=n;i++)
{
w[i]=s[i]-'';
if(w[i]) maxn=i;
}
for(int i=;i<=maxn;i++)
{
f[i]=f[i-];
if(a[i]>) f[i]+=a[i];
}
w[]=;tot=;
while(maxn>=)
if(w[maxn])
{
if(a[maxn]<=)
{
cout<<(f[maxn-]+tot)<<endl;
return ;
}
tot+=a[maxn];
while(!w[maxn-]) maxn--;
maxn--;
}
cout<<tot<<endl;
return ;
}

first 80

#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<ctime>
using namespace std;
typedef long long LL;
const int N=1e5+;
int a[N],n,len;
char s[N];
int w[N],maxn;
LL f[N],tot=,ans=;
int main()
{
freopen("maximum.in","r",stdin);
freopen("maximum.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
cin>>(s+);
for(int i=;i<=n;i++)
{
w[i]=s[i]-'';
if(w[i]) maxn=i;
}
f[]=;
for(int i=;i<=maxn;i++)
{
f[i]=f[i-];
if(a[i]>) f[i]+=a[i];
}
w[]=;tot=;
for(int i=maxn;i>=1;i--)
if(w[i])
{
// printf("%lld %lld\n",i,tot+f[i-1]);
ans=max(ans,tot+f[i-1]);
tot+=a[i];
}
cout<<ans<<endl;
return ;
}
w[]=;tot=;LL all=f[maxn];
while(maxn>=)
{
if(a[maxn]<=)
{
cout<<(f[maxn-]+tot)<<endl;
return ;
}
tot+=a[maxn];
while(!w[maxn-]) maxn--;
maxn--;
}

调了半天,我终于发现了错误所在。

说实话:我错的真不怨,我感觉很高兴,因为我找到了自己的思维误区。

怎么说呢:最大值可能出现在这些情况中的任意一个:

        1除了最高位对应的数外,其他任意位上数的组合。(最高位是0)

        2第二高的为0,其他的任意位上的数的组合。(最高位是1)

        3第三高的为0,其他位上任意数的组合。(前两高的是1)

        ............   这道题中的 最高位 是指 m的二进制位为1的。

做的时候还不如取个max那,我只是想当然的认为:

  当最高位是是负数时,前面的一定比后面的要更优。(这是对的,但是)

  我却认为这时,不加这个最高位的负数的结果是最优的。

其实不然,这时,对于不加这位的结果前面都算过,这一次却不一定是最优的!!!!!!

T2

二分+dp

奇怪的贪心。

#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<ctime>
using namespace std;
const int N=;
int a[N],b[N];
int n,k;
int L,R,mid,ans;
bool check(int x)
{
int sum=,sum0=1e9+;
for(int i=;i<=n;i++)
a[i]=b[i];
a[n+]=a[n];
for(int i=;i<=n;i++)
{
if(abs(a[i]-a[i-])>x)
{
if(a[i]>a[i-])
{
a[i]=a[i-]+x;
sum++;
}else
if(a[i-]>a[i])
{
a[i]=a[i-]-x;
sum++;
}
}
}
int i=,j=n;
for(int i=;i<=n;i++,j--)
a[i]=b[j];
a[n+]=a[n];
for(int i=;i<=n;i++)
{
if(abs(a[i]-a[i-])>x)
{
if(a[i]>a[i-])
{
a[i]=a[i-]+x;
sum0++;
}else
if(a[i-]>a[i])
{
a[i]=a[i-]-x;
sum0++;
}
}
}
sum=min(sum,sum0);
return sum<=k;
}
int main()
{
freopen("minimum.in","r",stdin);
freopen("minimum.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
{
scanf("%d",&b[i]);
R=max(R,b[i]);
}
if(k>=n-)
{
cout<<<<'\n';
return ;
}
L=,R;
while(L<=R)
{
mid=(L+R)/;
if(check(mid)) R=mid-,ans=mid;
else L=mid+;
}
cout<<ans<<'\n';
return ;
}

first 30

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
int n,k;
int a[],f[];
int L,R,mid;
bool check(int x)
{
f[]=;
int ans=n;//最大不超过n
for(int i=;i<=n;i++)
{
f[i]=i;
for(int j=;j<i;j++)
if(abs(a[i]-a[j])<=(1LL*x*(i-j)))
f[i]=min(f[i],f[j]+(i-j-));
ans=min(ans,f[i]+n-i);
}
return ans<=k;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
L=,R=1e9+;
while(L<R-)
{
mid=(L+R)>>;
if(check(mid)) R=mid;
else L=mid;
}
if(check(L)) printf("%d\n",L);
else printf("%d\n",R);
return ;
}

二分+dp判断

T3

#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<ctime>
using namespace std;
const int N=1e3+;
char s[N];
int n,x,y,len;
int q,l,r;
int A[N],B[N];
bool ok[N][N];
int main()
{
freopen("sequence.in","r",stdin);
freopen("sequence.out","w",stdout);
scanf("%d%d%d",&n,&x,&y);
cin>>(s+);
for(int i=;i<=n;i++)
{
A[i]=A[i-];B[i]=B[i-];
if(s[i]=='A') A[i]++;
else B[i]++;
}
for(int i=;i<=n;i++)
for(int j=i;j<=n;j++)
{
int Asum,Bsum;
Asum=A[j]-A[i-];Bsum=B[j]-B[i-];
if(1LL*Asum*y==1LL*Bsum*x) ok[i][j]=;
} scanf("%d",&q);
while(q--)
{
scanf("%d%d",&l,&r);
int L=r-l+;
for(L;L>=;L--)
for(int i=l;i+L-<=r;i++)
if(ok[i][i+L-])
{
printf("%d\n",L);
L=,i=r+;break;
}
}
return ;
}

first

待续。。。。。。

1用和为0,判断,链表查询,O( n q)。

2分块。

3可持久线段树。。。难写。

最短 函数线段树

Day6 下(的更多相关文章

  1. Linux:Day6(下) vim编辑器

    vim编辑器 简介: vi:Visual Interface,文本编辑器 文本:ASCII,Unicode 文本编辑种类: 行编辑器:sed 全屏编辑器:nano,vi VIM - Vi IMprov ...

  2. 清北考前刷题day6下午好

    /* 贪心 负数一定不取 枚举最高位是1 且答案取为0的 位置, 更新答案. */ #include<iostream> #include<cstdio> #include&l ...

  3. day--6_python常用模块

    常用模块: time和datetime shutil模块 radom string shelve模块 xml处理 configparser处理 hashlib subprocess logging模块 ...

  4. Python函数-导入模块的顺序及原理

    引入 当python导入模块,执行import语句时,到底进行了什么操作?按照python的文档,她执行了如下的操作: 第一步,创建一个新的module对象(它可能包含多个module) 第二步,把这 ...

  5. C++程序结构---1

    C++ 基础教程Beta 版 原作:Juan Soulié 翻译:Jing Xu (aqua) 英文原版 本教程根据Juan Soulie的英文版C++教程翻译并改编. 本版为最新校对版,尚未定稿.如 ...

  6. day6、Linux下如何找出7天以前的文件删除

    有些时候,由于系统产生的日志文件,使服务器的磁盘空间紧张,所以怎么删除7天以前的日志文件及让系统只保留7天以内的日志文件 方法一 使用命令:find + |xargs + ls 命令方法:find / ...

  7. Python之路,Day6 - Python基础6

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  8. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  9. pytho day6 <正则表达式、常用模块、反射>

    本节介绍: 一:正则表达式: 正则表达并不是python 独有的.在各个语言里都有该语法的介绍.正则表达是处理字符串的强大的处理工具.拥有自己的独特的 处理方法.和处理引擎.虽然性能没有python ...

随机推荐

  1. vmware vmware esxi5.x安装方法及解决错误

    vmware Esxi5.x安装指南 vmware Esxi5文档中心官网地址: http://pubs.vmware.com/vsphere-55/index.jsp?topic=%2Fcom.vm ...

  2. GoogLeNet InceptionV2/V3/V4

    仅用作自己学习 这篇文章中我们会详细讲到Inception V2/V3/V4的发展历程以及它们的网络结构和亮点. GoogLeNet Inception V2        GoogLeNet Inc ...

  3. javaweb访问hdfs的一些错误

    javaweb 与 HDFS 坑 前提:javaweb 项目,hdfs中的数据文件,导入访问hdfs的jar包,eclipse调试 问题:在×××.java代码中正常访问hdfs,浏览jsp时调用×× ...

  4. thinkPHP3.2.3 框架

    3.2.3开发文档https://pan.baidu.com/disk/home?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&am ...

  5. <aop:aspectj-autoproxy proxy-target-class="false"/>导致出现404状态码

    今天干活的时候,由于是一个web应用,想在每次发送请求和返回响应的时候记录日志,也就是代理Controller,想起了之前的spring AOP,于是按照之前的配置配置好了,可是发现每次前端发送请求都 ...

  6. java中\r ,\n,\t等的含义

    \t 相当于tab,缩进,制表符\n NewLine 换行 \f 换页符 \r 回车 \" 转义 “\\ 转义 \

  7. Python内置函数、作用域、闭包、递归

    1.几个可能用到的内置函数 2.函数内变量的作用域 3.内嵌函数和闭包 4.递归函数 1.常见的内置函数 常见的内置函数:    查看内置函数:        print(dir(__builtins ...

  8. POJ3074 Sudoku 剪枝深(神?)搜

    emm...挺秀的...挺神的? 每行,每列,每宫用一个二进制数表示选或没选的状态,刚开始设没选为1,然后更改状态的时候异或一下就好了: 这样可以通过lowbit取出每一个没有选过的数:(妙啊? 关于 ...

  9. django权限二(多级菜单的设计以及展示)

    多级权限菜单设计级标题栏 我们现在只有数据展示,要进入其他url还需要手动的输入路径,非常的麻烦,所以我们要设计 一个导航栏以及侧边多级菜单栏,这个展示是通过stark组件的设计的增删改查页面,而 每 ...

  10. Linux下如何使用Wireshark进行抓包

    1. 安装wireshark Ubuntu 14.04.3 缺省安装后, 不包含Wireshark抓包软件,因此首先需要手工进行Wireshark的安装:     apt-get update apt ...