T1 毛一琛

考虑折半搜索,每个数的系数只能是-1,0,1之中的一个,因此可以先通过的搜索分别搜索出两边每个状态的和以及数字的选择情况。

然后将后一半的状态按照和排序,枚举前一半的每一个选择情况的状态,将该选择情况下所有状态按和排序,然后通过双指针求出所有合法状态。

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4
 5 int n,mid,ans,a[30],num,tmp[1<<11];
 6 int tot=1,pre[60010],son[60010],now[1<<11];
 7 bool b[1<<21];
 8
 9 int cnt;
10 struct Node{int sum,set;}f[60010];
11
12 bool cmp(Node a,Node b){return a.sum<b.sum;}
13
14 void DFS1(int dep,int sum,int set){
15     if(dep==mid+1){
16         tot++;pre[tot]=now[set];
17         now[set]=tot;son[tot]=sum;
18     }
19     else{
20         DFS1(dep+1,sum,set);
21         DFS1(dep+1,sum+a[dep],set|(1<<(dep-1)));
22         DFS1(dep+1,sum-a[dep],set|(1<<(dep-1)));
23     }
24 }
25
26 void DFS2(int dep,int sum,int set){
27     if(dep==n+1){
28         ++cnt;
29         f[cnt].sum=sum;f[cnt].set=set;
30     }
31     else{
32         DFS2(dep+1,sum,set);
33         DFS2(dep+1,sum+a[dep],set|(1<<(dep-1)));
34         DFS2(dep+1,sum-a[dep],set|(1<<(dep-1)));
35     }
36 }
37
38 int main(){
39     scanf("%d",&n);mid=n/2;
40     for(int i=1;i<=n;i++)scanf("%d",&a[i]);
41     DFS1(1,0,0);DFS2(mid+1,0,0);
42     sort(f+1,f+cnt+1,cmp);
43     for(int i=0;i<=(1<<mid)-1;i++){
44         num=0;
45         for(int p=now[i];p;p=pre[p])
46             tmp[++num]=son[p];
47         sort(tmp+1,tmp+num+1);
48         for(int j=1,k=1;j<=cnt;j++){
49             while(k<=num&&tmp[k]<f[j].sum)
50                 k++;
51             if(k==num+1)break;
52             if(tmp[k]==f[j].sum)
53                 b[i|f[j].set]=1;
54         }
55     }
56     for(int i=1;i<=(1<<n)-1;i++)
57         if(b[i])ans++;
58     printf("%d\n",ans);
59     return 0;
60 }

T2 毛二琛

考虑排列p中的每个数怎样才能被移动到该到的地方。 问题转化为一个大小为n-1的排列,某些地方限定了相邻两数的大小关系。 直接DP即可,fi表示前i个数,第i个数在前i个数中是第j小的。前缀和优化可以做到O(n^2)

T3 毛三琛

暴力枚举x然后二分最大重量,复杂度为O(nPlogn)。

考虑对x枚举的顺序随机一下,这样枚举到一个x时候,可以先去check一下是否比目前的最优解要优,如果是,那么再去二分,否则直接continue。 由于一个随机排列中比前面所有数都大的数的数量期望为log,所以复杂度为O(nP+nlognlogP)。

我不会随机算法,考场的时候只拿了暴力分。。哭晕

转载于:https://www.cnblogs.com/olm2598827139/p/9800867.html

10.16 多校联测相关推荐

  1. 2017.10.26 四校联测D1

    题目比以前的题不知道高明到哪里去了,虽然std有错+数据有问题 T1 地精部落原题 #include<iostream> #include<cstdio> using name ...

  2. Interview:算法岗位面试—10.16下午—上海某公司算法岗位(偏图像算法,国内顶端医疗行业)技术面试之一点技术都没问

    Interview:算法岗位面试-10.16下午-上海某公司算法岗位(偏图像算法,国内顶端医疗行业)技术面试之一点技术都没问 反思:时间把控,应该更好一点,讲解内容,应该更全面一点,最重要的是,讲解的 ...

  3. 杂记2017.10.16

    杂记2017.10.16 ---------------- 2017.4.11 1,pivot是UI的图形中心.0.5,0.5表示该UI的原点在其图形正中 0,0表示该UI的原点在其图形左上角. 2, ...

  4. ubuntu安装有道云笔记_Ubuntu 安装Node 10.16 跑 Nodeppt 加Hexo博客再来个为知笔记私有云...

    几个月前偶然看到NodePPT的霸气标语 U work so hard, but 干不过 write PPTs 当时觉得挺好玩的,后来在自己的Windows笔记本上安装了,效果也确实不错,但是在Ubu ...

  5. Java黑皮书课后题第10章:*10.16(被2或3整除)找出所有被2或3整除的有50个十进制位数的前10个数字

    10.16(被2或3整除)找出所有被2或3整除的有50个十进制位数的前10个数字 法一 破题 代码 运行结果 法二 破题 代码 运行结果 法一 破题 本题通过基本数据类型无解(求不出来,不是没有解) ...

  6. 10.15 iptables filter表小案例10.16/10.17/10.18 iptables nat表应用

    2019独角兽企业重金招聘Python工程师标准>>> 10.15 iptables filter表小案例 iptables 命令.语法总结 iptables-nvL //查看ipt ...

  7. 2,8,10,16进制转换

    先上个例子,方便以后复习,例子看不明白,说明算法已经忘了,再看详细分解 2->8 (1000)2 = 分解为001.000 左边=0*2^2+0*2^1+1*2^0=1 右边=0*2^2+0*2 ...

  8. mysql 39 t.id 39_ERROR 2003 (HY000): Can#39;t connect to MySQL server on #39;10.16.115.101#39; (1...

    ubuntu安装之后mysql,使用apt-get安装命令,默认为同意只本地访问 root@idata1:~/software# mysql -uroot -p123456 -h10.16.115.1 ...

  9. https 加端口_Ubuntu 安装Node 10.16 跑 Nodeppt 加Hexo博客再来个为知笔记私有云

    几个月前偶然看到NodePPT的霸气标语 U work so hard, but 干不过 write PPTs 当时觉得挺好玩的,后来在自己的Windows笔记本上安装了,效果也确实不错,但是在Ubu ...

最新文章

  1. JAVA基础2-输出语句
  2. 存在于一维空间的稳定分子
  3. write()和read()
  4. 我在阿里收获的N个成长
  5. [剑指offer]面试题第[63]题[Leetcode][第121题][JAVA][买卖股票的最佳时机][动态规划][暴力]
  6. MIT科学家正在教AI感受电影中的喜怒哀乐
  7. 幻方c语言程序,幻方算法 C语言描述
  8. 开发工具-Hijson
  9. SQL查询语句大全(大佬总结,必看)
  10. 【渝粤教育】电大中专混凝土结构_1作业 题库
  11. arch linux引导不启动_archlinux安装Steam启动不了
  12. java阴历阳历_Java 阴历阳历转换
  13. 如何快速发表一篇SCI论文
  14. 7-112 约分最简分式
  15. 保研被鸽,去了自己不理想的学校怎么办?
  16. Vue 使用 yarn 报错
  17. 小孩子初次办身份证需携带什么资料?年龄有要求吗?
  18. [转]清华大学计算机考研经验谈
  19. 编写一个java类,用来表示出部队中 军 师 旅 团这种树状数据结构,使上级能检索到下级,下级也能检索到上级
  20. day19 part1:网络安全态势感知

热门文章

  1. 华中C语言程序简答题,华中科技大学0911年C语言程序设计试卷.doc
  2. html多语言国际化,gMIS吉密斯i18n多语言国际化更新
  3. 事物与持久化_揭开Redis面纱,发布订阅、事务、安全、持久化
  4. u盘文件看得见却打不开_【U盘】国产开源U盘启动制作工具
  5. 循序渐进linux——基础知识、服务器搭建、系统管理、性能调优、集群应用_第四讲,Proxmox部署与应用...
  6. java 微信jssdk签名_JAVA生成微信JSSDK接口签名
  7. mysql 安装完成后需要做的配置
  8. 评估微型计算机的主要指标,微型计算机的工作过程和主要性能指标.doc
  9. android黑色半透明dialog背景,Android开发中Dialog半透明背景消失
  10. wpf 语音通话_WPF+WCF一步一步打造音频聊天室(三):语音聊天