预计分数: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维护

转移也比较好写

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<queue>
  6. #include<algorithm>
  7. #define LL long long
  8. using namespace std;
  9. const LL MAXN=1e6+;
  10. const LL INF=0x7fffff;
  11. inline LL read()
  12. {
  13. char c=getchar();LL flag=,x=;
  14. while(c<''||c>'') {if(c=='-') flag=-;c=getchar();}
  15. while(c>=''&&c<='') x=x*+c-,c=getchar();return x*flag;
  16. }
  17. LL n,m;
  18. char s[MAXN];
  19. LL a[MAXN];
  20. LL maxpos;//最高位的位置
  21. LL dp[MAXN][];
  22. bool flag=;
  23. LL fastpow(LL a,LL p)
  24. {
  25. LL base=;
  26. while(p)
  27. {
  28. if(p&) base=base*a;
  29. a=a*a;
  30. p>>=;
  31. }
  32. return base;
  33. }
  34. int main()
  35. {
  36. // freopen("maximum.in","r",stdin);
  37. // freopen("maximum.out","w",stdout);
  38. n=read();
  39. if(n<=)
  40. {
  41. for(LL i=;i<=n;i++) a[i]=read();
  42. scanf("%s",s);
  43. LL ls=strlen(s);
  44. for(LL i=;i<=ls-;i++)
  45. if(s[i]=='')
  46. m+=fastpow(,i);
  47. LL ans=;
  48. for(LL i=;i<=m;i++)
  49. {
  50. LL p=i,now=;
  51. for(LL j=;j<=;j++)
  52. if(p&(<<j))
  53. now+=a[j+];
  54. // cout<<now<<endl;
  55. ans=max(ans,now);
  56. }
  57. printf("%lld",ans);
  58. }
  59. else
  60. {
  61. for(LL i=;i<n;i++) a[i]=read();
  62. for(LL i=;i<n;i++)
  63. {
  64. dp[i][]=max(dp[i-][],dp[i-][]);
  65. dp[i][]=max(dp[i][],dp[i][]+a[i]);
  66. }
  67. //for(LL i=0;i<n;i++) printf("%d ",dp[i][0]);printf("\n");
  68. //for(LL i=0;i<n;i++) printf("%d ",dp[i][1]);printf("\n");
  69. scanf("%s",s);
  70. LL ls=strlen(s);
  71. LL now=;// 已经选了的限制位
  72. LL ans=;
  73. for(LL i=ls-;i>=;i--)
  74. {
  75. if(s[i]=='')//最高位
  76. {
  77. flag=;
  78. ans=max(ans,max( dp[i-][] ,dp[i-][]) +now);
  79. if(a[i]>) now+=a[i];
  80. }
  81. else if(flag==) ans=max(ans,max(dp[i][],dp[i][]));
  82. }
  83. ans=max(ans,now);
  84. printf("%lld",ans);
  85. }
  86. return ;
  87. }
  88.  
  89. /*
  90.  
  91. 4
  92. -1 1 2 0
  93. 0010
  94.  
  95. //2
  96. */

T2

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

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

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

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

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<queue>
  6. #include<algorithm>
  7. #define LL long long
  8. using namespace std;
  9. const LL MAXN=1e6+;
  10. const LL INF=0x7fffff;
  11. inline LL read()
  12. {
  13. char c=getchar();LL flag=,x=;
  14. while(c<''||c>'') {if(c=='-') flag=-;c=getchar();}
  15. while(c>=''&&c<='') x=x*+c-,c=getchar();return x*flag;
  16. }
  17. LL n,k;
  18. LL ans=,maxval=-INF,minval=INF;
  19. LL a[MAXN];
  20. LL dfs(LL now,LL val,LL spend)
  21. {
  22. if(spend>k) return ;
  23. if(now==n)
  24. {
  25. LL now=-INF;
  26. for(LL i=;i<=n-;i++)
  27. now=max(now,abs(a[i]-a[i+]));
  28. if(now<=val) return ;
  29. return ;
  30. }
  31. if(abs(a[now+]-a[now])>val)
  32. {
  33. LL pre=a[now+];
  34. a[now+]=a[now]+val;
  35. if( dfs(now+,val,spend+) ) return ;
  36. a[now+]=a[now];
  37. if( dfs(now+,val,spend+) ) return ;
  38. a[now+]=a[now]-val;
  39. if( dfs(now+,val,spend+) ) return ;
  40. a[now+]=pre;
  41. }
  42. if(dfs(now+,val,spend)) return ;
  43. return ;
  44. }
  45. LL check(LL val)//最小值
  46. {
  47. LL now=,spend=;
  48. if(abs(a[]-a[])>val)
  49. {
  50. if(k==) return ;
  51. LL pre=a[];
  52. a[]=a[]+val; if( dfs(now+,val,spend+) ) return ;
  53. a[]=a[]; if( dfs(now+,val,spend+) ) return ;
  54. a[]=a[]-val; if( dfs(now+,val,spend+) ) return ;
  55. a[]=pre;
  56. if( dfs(now,val,spend) ) return ;
  57. }
  58. else if( dfs(now+,val,) ) return ;
  59. return ;
  60. }
  61. int main()
  62. {
  63. // freopen("minimum.in","r",stdin);
  64. // freopen("minimum.out","w",stdout);
  65. n=read();k=read();
  66. if(k>=n-)
  67. {
  68. printf("");return ;
  69. }
  70. for(LL i=;i<=n;i++) a[i]=read(),maxval=max(a[i],maxval),minval=min(minval,a[i]);
  71. LL l=,r=maxval-minval;
  72. LL ans=;
  73. while(l<=r)
  74. {
  75. LL mid=l+r>>;
  76. if(check(mid)) ans=mid,r=mid-;
  77. else l=mid+;
  78. }
  79. printf("%lld",ans);
  80. return ;
  81. }
  82.  
  83. /*
  84.  
  85. 5 2
  86. 1 2 1 2 1
  87. //0
  88.  
  89. 5 1
  90. 1 3 1 2 1
  91. //1
  92.  
  93. 2 0
  94. 1 4
  95. //3
  96.  
  97. 4 1
  98. 1 3 5 7
  99. //2
  100.  
  101. 4 3
  102. 1 3 5 7
  103. //0
  104.  
  105. 4 2
  106. 1 3 5 7
  107. //2
  108. */

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. bootstrap结合google code prettify的问题

    发现prettify不能显示行号,于是上网找了解决方法: 只使用prettify的js的文件,不使用css文件,另外添加这段css: .com { color: #93a1a1; } .lit { c ...

  2. 解决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 ...

  3. 炜煌E30 E31微型热敏打印机 STM32 串口驱动

    设置为汉字模式 十六进制 命令:1C    26 USART_SendData(USART2,0x1C); while(USART_GetFlagStatus(USART2,USART_FLAG_TC ...

  4. cocoapods的安装,使用,卸载,以及你可能会遇到的坑..

    首先, 不会用cocoapods的话如过你接手某些新项目是用cocoapods写的你会疯, 其次他真的非常好用, 当然某些坑也是存在的,比方你用它导入了AFNetwork然后你须要改动一些AF的内部的 ...

  5. Bloxorz I (poj 3322 水bfs)

    Language: Default Bloxorz I Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5443   Acce ...

  6. Android实战简易教程-第二十六枪(基于ViewPager实现微信页面切换效果)

    1.头部布局文件top.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  7. .vscode folder

    https://stackoverflow.com/questions/32964920/should-i-commit-the-vscode-folder-to-source-control Che ...

  8. LDAP实现企业异构平台的统一认证

    LDAP实现企业异构平台的统一认证      技术是为应用服务的,没有应用,技术就无用武之地.同样光配置完LDAP服务器没有任何意义,只有把所有需要认证的环节,只有纳入LDAP系统中,才能使它发挥应有 ...

  9. 原型,构造函数,实例,__proto__

    再说说__proto__,这个孩子性格慢向,所以即使在现代浏览器广为支持得今天也不建议使用,性能特别慢,而且影响所有来自该[[prototype]]的对象.只是拿出来了解了解: 1.它是个啥? 原型对 ...

  10. 紫书 例题 9-12 UVa 12186 (树形dp)

    这道题还是比较简单的,对于当前节点,算出每个儿子需要的人数 然后再算出当前节点需要多少个人数,然后排个序加上去就好了. #include<cstdio> #include<vecto ...