继续存档

早上来补了一下昨天的题,不过肯定这两天的没法完全补起来

T1:

经典思路:关于位运算的题讨论每一位的贡献

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. int t,mod=1e9+;;
  5. long long l,r,all,cnt,ans;
  6. long long count(long long x,int k){
  7. long long num=;
  8. num+=x/(1ll<<(k+));
  9. x-=(1ll<<(k+))*num;
  10. num*=(1ll<<k);
  11. num+=((x>=(1ll<<k))?(x+-(1ll<<k)):);
  12. return num;
  13. }
  14. int main()
  15. {
  16. scanf("%d",&t);
  17. while(t--){
  18. scanf("%lld%lld",&l,&r);
  19. all=r-l+;
  20. ans=;
  21. for(int i=;i<=;i++){
  22. cnt=count(r,i)-count(l-,i);
  23. ans=(ans+cnt*(all-cnt)%mod*(1ll<<(i+))%mod)%mod;
  24. }
  25. printf("%lld\n",ans);
  26. }
  27. return ;
  28. }

T2:

优化DP刷表可以卡过去,并不是完全的正解啦:P

(我才知道bool是1bit而int是4bits…一直以来bool都用int代替的…)

关键点:必败状态不能互相转移、打表+分析发现对于每个让二元组(x,y)必败的z,x、y所占用的数字不重复且x与y的差不重复。

题解里好像有点小锅,如果存在f(x,y)=k<i,则f(x+i-k,y)、f(x,y+i-k)、f(x+i-k,y+i-k)不可能等于i。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. int t,x,y,z,maxn;
  6. bool f[][][];
  7. int main()
  8. {
  9. for(int i=;i<=;i++){
  10. for(int j=;j<=;j++){
  11. for(int k=;k<=;k++){
  12. if(!f[i][j][k]){
  13. for(int x=;x<=;x++){
  14. maxn=;
  15. if(x&)maxn=min(maxn,-i);
  16. if(x&)maxn=min(maxn,-j);
  17. if(x&)maxn=min(maxn,-k);
  18. for(int l=;l<=maxn;l++)f[i+(x&)*l][j+((x>>)&)*l][k+((x>>)&)*l]=;
  19. }
  20. }
  21. }
  22. }
  23. }
  24. scanf("%d",&t);
  25. while(t--){
  26. scanf("%d%d%d",&x,&y,&z);
  27. if(f[x][y][z])printf("Yes\n");
  28. else printf("No\n");
  29. }
  30. return ;
  31. }

T3:

关键点在于转化题目。也是一个经典的思路:遇到绝对值的问题,可以考虑把绝对值拆成正负两种作差方法分开考虑。

于是对于一些si,它会被加两次或者减两次。对于另一些si,它会加一次减一次正好抵消。首位特殊讨论。

设计dp,首先可以想到+2、-2、0这三种。但是考虑2和-2的产生就会发现2和-2肯定是间隔的XD!所以还要考虑它们的间隔状态是否合法。

通过把0的状态拆成2->-2、-2->2两种来保证转移合法。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. int n,k;
  6. int f[][][],a[];
  7. int main()
  8. {
  9. scanf("%d%d",&n,&k);
  10. for(int i=;i<=n;i++)scanf("%d",&a[i]);
  11. memset(f,-0x3f,sizeof(f));
  12. for(int i=;i<=n;i++){
  13. for(int j=;j<=;j++){
  14. f[i][][j]=;
  15. }
  16. }
  17. for(int i=;i<=n;i++){
  18. for(int j=;j<=min(i,k);j++){
  19. f[i][j][]=max(f[i-][j-][],f[i-][j][])+((j==||j==k)?:)*a[i];
  20. f[i][j][]=max(f[i-][j-][],f[i-][j][])-((j==||j==k)?:)*a[i];
  21. f[i][j][]=max(f[i][j][],f[i-][j][]);
  22. if(j!=&&j!=k)f[i][j][]=max(f[i][j][],f[i-][j-][]);
  23. f[i][j][]=max(f[i][j][],f[i-][j][]);
  24. if(j!=&&j!=k)f[i][j][]=max(f[i][j][],f[i-][j-][]);
  25. }
  26. }
  27. printf("%d\n",max(f[n][k][],f[n][k][]));
  28. return ;
  29. }

在尝试补这套题的时候发生了各种各样脑残的错误,例如“咦bool原来是1bit吗”之类的:D

脑子是个好东西 希望我有XDDDDDDDD

2019.10.25 csp-s模拟测试86 反思总结的更多相关文章

  1. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  2. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

  3. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  4. csp-s模拟测试86

    csp-s模拟测试86 分屋前的最后一次考试,我早就放弃了自己. 02:02:46 70 02:02:57 03:16:08 100 03:16:08 $T1$忘了按位计算,达哥按位计算的$T1$当时 ...

  5. 2019.8.14 NOIP模拟测试21 反思总结

    模拟测试20的还没改完先咕着 各种细节问题=错失190pts T1大约三分钟搞出了式子,迅速码完,T2写了一半的时候怕最后被卡评测滚去交了,然后右端点没有初始化为n…但是这样还有80pts,而我后来还 ...

  6. 2019.8.9 NOIP模拟测试15 反思总结

    日常爆炸,考得一次比一次差XD 可能还是被身体拖慢了学习的进度吧,虽然按理来说没有影响.大家听的我也听过,大家学的我也没有缺勤多少次. 那么果然还是能力问题吗……? 虽然不愿意承认,但显然就是这样.对 ...

  7. 2019.8.1 NOIP模拟测试11 反思总结

    延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神 ...

  8. 2019.10.25 csp-s模拟测试87 反思总结

    一次非常神奇的考试,考完试以后看着T2的0pts突然笑死我自己 太智障了这什么神奇的题意理解错误23333 T1一眼分类讨论,两眼二分,觉得分类讨论有点玄学但是出题人八成不会卡[何],然后本着对二分的 ...

  9. 2019/10/17 CSP模拟 总结

    T1 补票 Ticket 没什么好说的,不讲了 T2 删数字 Number 很后悔的是其实考场上不仅想出了正解的方程,甚至连优化都想到了,却因为码力不足只打了\(O(n^2)\)暴力,甚至还因为细节挂 ...

随机推荐

  1. Redis深度历险——核心原理与应用实践

    高可用架构」的各位老铁们,你们好!你是否还记得上个月发布的文章中,有两篇深入讲解Redis的文章,分别是和,广大粉丝读者们对这两篇文章整体评价颇高.而我就是这两篇文章的原创作者「老钱」(钱文品),我是 ...

  2. python生成word中文字体

    python生成word中文字体 我们今天用python生成word文件,主要是用到了PyRTF包生成rtf文件,由于PyRTF的包中文教程比较少,所以特此记录几篇文章,也希望给大家有一些帮助. 开始 ...

  3. jeecms v9修改后台访问地址

    将jeeadmin/jeecms/index.do 改为admin/index.do为例 修改WebContent\WEB-INF\web.xml <servlet-mapping> &l ...

  4. Python学习day42-数据库的基本操作(1)

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  5. linux 备份最近一天的文件

    #!/bin/bash #备份在最近一天修改的文件 #date 获取日期 +%Y-%m-%d 设置日期格式为yyyy-mm-dd的形式 BACKFILE=backup-$(date +%Y-%m-%d ...

  6. CAS增加免登陆(Remember Me)功能

    1. 打开deployerConfigContext.xml 在 authenticationManager 的bean中增加 <property name="authenticati ...

  7. 分布式配置中心(Spring Cloud Config)

    真有意思的一个问题,我先把我遇到的写一次 ,今天学习Spring Cloud Config  新建了三个module ,eureka-server,config-server,config-clien ...

  8. VC:不支持尝试执行的操作

    问题描述: 基于CDialogEx的对话框工程.VS2010开发环境. 调试运行到OnInitDialog()的CDialogEx::OnInitDialog()方法的时候弹出提示窗口"不支 ...

  9. Teigha克隆db的blockTableRecord里面的一个实体

    std::vector<OdDbEntityPtr> entities; OdDbBlockTableRecordPtr blkTblRcd = blockId.openObject(); ...

  10. 验证sll证书与密钥

    $crtParse = openssl_x509_parse($ssl_content); //$ssl_content 证书内容 .crt文件内容 if (!$crtParse) { return ...