预计分数:100+?+30=130+?

实际分数:100+25+30=155

T1

https://www.luogu.org/problem/show?pid=T15920

DP裸题,用dp[i][0]表示到达i,第i个位置不选,dp[i][1]表示到达i,第i个选的最大值

对于每一个询问,只有最高位为1的时候是有限制的,我们用now维护

转移也比较好写

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#define LL long long
using namespace std;
const LL MAXN=1e6+;
const LL INF=0x7fffff;
inline LL read()
{
char c=getchar();LL flag=,x=;
while(c<''||c>'') {if(c=='-') flag=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-,c=getchar();return x*flag;
}
LL n,m;
char s[MAXN];
LL a[MAXN];
LL maxpos;//最高位的位置
LL dp[MAXN][];
bool flag=;
LL fastpow(LL a,LL p)
{
LL base=;
while(p)
{
if(p&) base=base*a;
a=a*a;
p>>=;
}
return base;
}
int main()
{
// freopen("maximum.in","r",stdin);
// freopen("maximum.out","w",stdout);
n=read();
if(n<=)
{
for(LL i=;i<=n;i++) a[i]=read();
scanf("%s",s);
LL ls=strlen(s);
for(LL i=;i<=ls-;i++)
if(s[i]=='')
m+=fastpow(,i);
LL ans=;
for(LL i=;i<=m;i++)
{
LL p=i,now=;
for(LL j=;j<=;j++)
if(p&(<<j))
now+=a[j+];
// cout<<now<<endl;
ans=max(ans,now);
}
printf("%lld",ans);
}
else
{
for(LL i=;i<n;i++) a[i]=read();
for(LL i=;i<n;i++)
{
dp[i][]=max(dp[i-][],dp[i-][]);
dp[i][]=max(dp[i][],dp[i][]+a[i]);
}
//for(LL i=0;i<n;i++) printf("%d ",dp[i][0]);printf("\n");
//for(LL i=0;i<n;i++) printf("%d ",dp[i][1]);printf("\n");
scanf("%s",s);
LL ls=strlen(s);
LL now=;// 已经选了的限制位
LL ans=;
for(LL i=ls-;i>=;i--)
{
if(s[i]=='')//最高位
{
flag=;
ans=max(ans,max( dp[i-][] ,dp[i-][]) +now);
if(a[i]>) now+=a[i];
}
else if(flag==) ans=max(ans,max(dp[i][],dp[i][]));
}
ans=max(ans,now);
printf("%lld",ans);
}
return ;
} /* 4
-1 1 2 0
0010 //2
*/

T2

考场上推出一个很逗比的结论,

首先二分一个值,对于每一个点,如果要修改的话,那么now+val,now,now-val这三个值一定有一个是最优的。

这个用dp应该能水60分。。。

不过没时间写了,打了25的暴力

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#define LL long long
using namespace std;
const LL MAXN=1e6+;
const LL INF=0x7fffff;
inline LL read()
{
char c=getchar();LL flag=,x=;
while(c<''||c>'') {if(c=='-') flag=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-,c=getchar();return x*flag;
}
LL n,k;
LL ans=,maxval=-INF,minval=INF;
LL a[MAXN];
LL dfs(LL now,LL val,LL spend)
{
if(spend>k) return ;
if(now==n)
{
LL now=-INF;
for(LL i=;i<=n-;i++)
now=max(now,abs(a[i]-a[i+]));
if(now<=val) return ;
return ;
}
if(abs(a[now+]-a[now])>val)
{
LL pre=a[now+];
a[now+]=a[now]+val;
if( dfs(now+,val,spend+) ) return ;
a[now+]=a[now];
if( dfs(now+,val,spend+) ) return ;
a[now+]=a[now]-val;
if( dfs(now+,val,spend+) ) return ;
a[now+]=pre;
}
if(dfs(now+,val,spend)) return ;
return ;
}
LL check(LL val)//最小值
{
LL now=,spend=;
if(abs(a[]-a[])>val)
{
if(k==) return ;
LL pre=a[];
a[]=a[]+val; if( dfs(now+,val,spend+) ) return ;
a[]=a[]; if( dfs(now+,val,spend+) ) return ;
a[]=a[]-val; if( dfs(now+,val,spend+) ) return ;
a[]=pre;
if( dfs(now,val,spend) ) return ;
}
else if( dfs(now+,val,) ) return ;
return ;
}
int main()
{
// freopen("minimum.in","r",stdin);
// freopen("minimum.out","w",stdout);
n=read();k=read();
if(k>=n-)
{
printf("");return ;
}
for(LL i=;i<=n;i++) a[i]=read(),maxval=max(a[i],maxval),minval=min(minval,a[i]);
LL l=,r=maxval-minval;
LL ans=;
while(l<=r)
{
LL mid=l+r>>;
if(check(mid)) ans=mid,r=mid-;
else l=mid+;
}
printf("%lld",ans);
return ;
} /* 5 2
1 2 1 2 1
//0 5 1
1 3 1 2 1
//1 2 0
1 4
//3 4 1
1 3 5 7
//2 4 3
1 3 5 7
//0 4 2
1 3 5 7
//2
*/

T3

分块瞎搞。。

Day6下午题解1的更多相关文章

  1. qbzt day6 下午 模拟赛

    我太菜了 T2 给定一张有向图,每个点有点权.试找到一条路径,使得该路径上的点权最 大值减去点权最小值最大,问这个差最大是多少.   话说这个题第一个想到的思路是tarjan缩点+拓扑排序来着... ...

  2. 济南day3

    连续几天都有点炸 预计的分拿不到,调整好心态,考试的时候多想一下,think twice,code once 唉,什么情况啊 题解链接 0+0+0 T1读错题输出反了 n*m%2判断是否==1 T2 ...

  3. upc组队赛18 THE WORLD【时间模拟】

    THE WORLD 题目链接 题目描述 The World can indicate world travel, particularly on a large scale. You mau be l ...

  4. 蓝桥杯练习 Day6 题解

    蓝桥杯练习 Day6 题解 A 题意:给你一个等式ax+by = c,问你x,y是否有整数解. 思路:gcd(a,b) = t,如果方程有解,那么\((a/t)*x + (b/t)*y = c/t\) ...

  5. 培训补坑(day7:线段树的区间修改与运用)(day6是测试,测试题解以后补坑QAQ)

    补坑咯~ 今天围绕的是一个神奇的数据结构:线段树.(感觉叫做区间树也挺科学的.) 线段树,顾名思义就是用来查找一段区间内的最大值,最小值,区间和等等元素. 那么这个线段树有什么优势呢? 比如我们要多次 ...

  6. 2014年亚洲区域赛北京赛区现场赛A,D,H,I,K题解(hdu5112,5115,5119,5220,5122)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 下午在HDU上打了一下今年北京区域赛的重现,过了5题,看来单挑只能拿拿铜牌,呜呜. ...

  7. ZOJ Monthly, June 2014 月赛BCDEFGH题题解

    比赛链接:点击打开链接 上来先搞了f.c,,然后发现状态不正确,一下午都是脑洞大开,, 无脑wa,无脑ce...一样的错犯2次.. 硬着头皮搞了几发,最后20分钟码了一下G,不知道为什么把1直接当成不 ...

  8. Noip 2014酱油记+简要题解

    好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...

  9. 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)

    心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...

随机推荐

  1. 三 Client 如何找到正确的 Region Server

    客户端在进行put.delete.get等操作的时候,它都需要数据到底存在哪个Region Server上面,这个定位的操作是通过 Connection.locateRegion方法来完成的. loc ...

  2. JNI学习积累之三 ---- 操作JNI函数以及复杂对象传递

    本文原创,转载请注明出处:http://blog.csdn.NET/qinjuning 在掌握了JNI函数的使用和相关类型的映射后,以及知晓何利用javah工具生成对应的jni函数以及如何生成动态 链 ...

  3. poj--1637--Sightseeing tour(网络流,最大流判断混合图是否存在欧拉图)

    Sightseeing tour Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Sub ...

  4. 打印机共享 : 客户端 连接服务器打印机时提示"无法连接到打印机“

    1.就是重启一下服务器端的Print Spooler服务就行了,这么简单! 2.修改打印机的共享名 操作无法完成(错误0x00000709).再次检查打印机名称,并确保打印机已连接到网络.(xp系统本 ...

  5. 【Django】ORM操作#2

    目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 ...

  6. 编程里的API是什么意思?

    API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码 ...

  7. 【Henu ACM Round#16 D】Bear and Two Paths

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先搞一条a到b的路径 a c x3 x4 x5....xn-2 d b 然后第二个人的路径可以这样 c a x3 x4 x5...x ...

  8. 数据库SQL Server2012笔记(四)——多表查询、子查询、分页查询、用查询结果创建新表和外连接

    1.多表查询 1)笛卡尔集: select  *  from  表名1,表名2 select  *  from  表名1.表名2  where   表名1.字段名=表名2.字段名 注: 若有两张表有同 ...

  9. mongodb适用和不适用的应用场景

    近期考虑把订单历史数据从Oracle数据库迁移到Nosql数据库做历史数据查询和分析,一天千万级数据.打算使用mongodb数据库.使用nodejs做查询和统计API,对并发请求量要求低,不知道有没有 ...

  10. hdu 5375 - Gray code(dp) 解题报告

    Gray code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...