Day6下午题解1
预计分数: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的更多相关文章
- qbzt day6 下午 模拟赛
我太菜了 T2 给定一张有向图,每个点有点权.试找到一条路径,使得该路径上的点权最 大值减去点权最小值最大,问这个差最大是多少. 话说这个题第一个想到的思路是tarjan缩点+拓扑排序来着... ...
- 济南day3
连续几天都有点炸 预计的分拿不到,调整好心态,考试的时候多想一下,think twice,code once 唉,什么情况啊 题解链接 0+0+0 T1读错题输出反了 n*m%2判断是否==1 T2 ...
- upc组队赛18 THE WORLD【时间模拟】
THE WORLD 题目链接 题目描述 The World can indicate world travel, particularly on a large scale. You mau be l ...
- 蓝桥杯练习 Day6 题解
蓝桥杯练习 Day6 题解 A 题意:给你一个等式ax+by = c,问你x,y是否有整数解. 思路:gcd(a,b) = t,如果方程有解,那么\((a/t)*x + (b/t)*y = c/t\) ...
- 培训补坑(day7:线段树的区间修改与运用)(day6是测试,测试题解以后补坑QAQ)
补坑咯~ 今天围绕的是一个神奇的数据结构:线段树.(感觉叫做区间树也挺科学的.) 线段树,顾名思义就是用来查找一段区间内的最大值,最小值,区间和等等元素. 那么这个线段树有什么优势呢? 比如我们要多次 ...
- 2014年亚洲区域赛北京赛区现场赛A,D,H,I,K题解(hdu5112,5115,5119,5220,5122)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 下午在HDU上打了一下今年北京区域赛的重现,过了5题,看来单挑只能拿拿铜牌,呜呜. ...
- ZOJ Monthly, June 2014 月赛BCDEFGH题题解
比赛链接:点击打开链接 上来先搞了f.c,,然后发现状态不正确,一下午都是脑洞大开,, 无脑wa,无脑ce...一样的错犯2次.. 硬着头皮搞了几发,最后20分钟码了一下G,不知道为什么把1直接当成不 ...
- Noip 2014酱油记+简要题解
好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...
- 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)
心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...
随机推荐
- bootstrap结合google code prettify的问题
发现prettify不能显示行号,于是上网找了解决方法: 只使用prettify的js的文件,不使用css文件,另外添加这段css: .com { color: #93a1a1; } .lit { c ...
- 解决MAC下PHP连接MYSQL错误Warning: mysql_connect(): No such file or directory in conn.php
今天在mac上用php去连接mysql数据库,出现了 mac PHP Warning: mysql_connect(): [2002] No such file... 详细例如以下所看到的: Dir ...
- 炜煌E30 E31微型热敏打印机 STM32 串口驱动
设置为汉字模式 十六进制 命令:1C 26 USART_SendData(USART2,0x1C); while(USART_GetFlagStatus(USART2,USART_FLAG_TC ...
- cocoapods的安装,使用,卸载,以及你可能会遇到的坑..
首先, 不会用cocoapods的话如过你接手某些新项目是用cocoapods写的你会疯, 其次他真的非常好用, 当然某些坑也是存在的,比方你用它导入了AFNetwork然后你须要改动一些AF的内部的 ...
- Bloxorz I (poj 3322 水bfs)
Language: Default Bloxorz I Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5443 Acce ...
- Android实战简易教程-第二十六枪(基于ViewPager实现微信页面切换效果)
1.头部布局文件top.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- .vscode folder
https://stackoverflow.com/questions/32964920/should-i-commit-the-vscode-folder-to-source-control Che ...
- LDAP实现企业异构平台的统一认证
LDAP实现企业异构平台的统一认证 技术是为应用服务的,没有应用,技术就无用武之地.同样光配置完LDAP服务器没有任何意义,只有把所有需要认证的环节,只有纳入LDAP系统中,才能使它发挥应有 ...
- 原型,构造函数,实例,__proto__
再说说__proto__,这个孩子性格慢向,所以即使在现代浏览器广为支持得今天也不建议使用,性能特别慢,而且影响所有来自该[[prototype]]的对象.只是拿出来了解了解: 1.它是个啥? 原型对 ...
- 紫书 例题 9-12 UVa 12186 (树形dp)
这道题还是比较简单的,对于当前节点,算出每个儿子需要的人数 然后再算出当前节点需要多少个人数,然后排个序加上去就好了. #include<cstdio> #include<vecto ...