2018.8.23 练习赛

  • T1 三级包
  • 题意:带数量限制的0/1背包问题,但是容量极大,没办法dp。
  • 正解是分为两部分状态压缩;但是实际上暴搜加上卡时(100000000)就能过
  •  1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<ctype.h>
     6 using namespace std;
     7 int f[50][50];
     8 int n,m,k,w[50],ans,tot;
     9
    10 template<typename T>
    11 void read(T &x) {
    12     char tt;
    13     bool flag=0;
    14     while(!isdigit(tt=getchar())&&tt!=‘-‘);
    15     tt==‘-‘?(x=0,flag=1):(x=tt-‘0‘);
    16     while(isdigit(tt=getchar())) x=x*10+tt-‘0‘;
    17 }
    18
    19
    20 void dfs(int num,int now,int x) {
    21     ++tot;
    22     ans=max(ans,x);
    23     if(tot>100000000) return;
    24     if(now>k) return;
    25     if(num+1<=n&&x+w[now]<=m) dfs(num+1,now+1,x+w[now]);
    26     dfs(num,now+1,x);
    27 }
    28 int cmp(int a,int b) {
    29     return a>b;
    30 }
    31 int main() {
    32     read(n),read(m);
    33     read(k);
    34     for(int i=1; i<=k; i++) read(w[i]);
    35     sort(w+1,w+k+1,cmp);
    36     int s=0;
    37     for(int i=1; i<=n; i++) s+=w[i];
    38     if(s<=m) printf("%d\n",s),exit(0);
    39     dfs(0,1,0);
    40     printf("%d\n",ans);
    41 }

  • T2 三级甲
  • 题意:求给定数列中,所有区间长度为k的最小值之和
  • 通过预处理a[I]的贡献计算每次询问
  • 代码:待补
  • T3 三级头
  • 题意:给定一棵树,完成三种操作:1.查询点x子树中严格大于y的点个数;2,指定点x为根;3.修改点x的值为y
  • 分块,维护块中有序,每次询问二分查找,更新用插入排序,更新的复杂度为,写起来有点毒瘤……
  • 代码:待补

原文地址:https://www.cnblogs.com/KatouKatou/p/9526049.html

时间: 2024-07-30 03:19:09

2018.8.23 练习赛的相关文章

2018.1.23 7周2次课

七周二次课(1月23日) 10.6 监控io性能 10.7 free命令 10.8 ps命令 10.9 查看网络状态 10.10 linux下抓包 10.6 监控io性能 1. iostat来对linux硬盘IO性能进行检测 使用iostat,需要先安装sysstat ,即yum -y install sysstat iostat可以产生三种类型的报告:CPU利用情况报告.设备利用情况报告.网络文件系统利用情况报告. iostat命令格式可概述为: iostat[参数][时间][次数] 其中,时

2018.3.23 13周5次课

十三周五次课(3月23日) 13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复 13.4 mysql用户管理 MySQL创建用户以及授权 授权给ip grant all on *.* to 'user1'@'127.0.0.1' identified by 'passwd'; all表示所有的权限(如读.写.查询.删除等操作):on:后面跟的数据库名:有2个*,前者表示所有的数据库,后者表示所有的表:to:授权给后面的用户:user1:用户名:@'127.

2018.4.23 17周4次课

十七周4次课(4月23日) 20.20 告警系统主脚本 20.21 告警系统配置文件 20.22 告警系统监控项目 20.20 告警系统主脚本 创建告警系统的目录: [[email protected] /usr/local/sbin]# mkdir mon [[email protected] /usr/local/sbin]# ls mon  nginx_log_rotate.sh [[email protected] /usr/local/sbin]# cd mon [[email pro

随手记一 2018/04/23 Ajax基础了解

1.什么是ajax? 主要目的是用来实现客户端和服务器之间的异步通信,实现页面的局部刷新 2.同步和异步! 同步:当多个线程同时向一个数据发送请求时,必须是A先执行完毕才可以给B,会出现阻塞的情况,但是属于线程安全的,避免了死锁 异步:当多个线程同时想一个数据发送请求时,资源虽然给的是A,但是B也可以访问,这样效率就比同步的高 3.Ajax的执行过程 1).创建一个XMLHttpRequets 2)  .创建一个新的HTTP请求,并且指定请求方法,已经URL 3).设置响应请求HTTP请求状态的

2018.8.18练习赛

HDU 2089 不要62 数据量比较小,还是直接暴力吧. 1 #include<stdio.h> 2 int a[1000010]; 3 int F(int m); 4 int main() 5 { 6 int i,sum,n,m; 7 for(i=1;i<=1000000;i++) 8 a[i]=F(i); 9 while(scanf("%d%d",&n,&m)!=EOF) 10 { 11 if(n==0&&m==0) 12 bre

2018.8.22 练习赛

T1 井字棋 题意:给定一井字棋残局,问结果 状压记忆化暴搜,博弈 1 #include<stdio.h> 2 #include<cstdlib> 3 #include<algorithm> 4 #include<cstring> 5 using namespace std; 6 int po[20],ch[256]; 7 int f[100000][3]; 8 int judge(int s) 9 { 10 int g[10]; 11 for(int i=

2018.8.25 练习赛

T1 试卷 题面: 试卷(paper .cpp/.in/.out) 1s 512MB 题目描述 THH为了回答SF之间,决定在之后的m天中刷很多理综卷子,于是他收集到了 n套理综试卷,每套试卷鄒是不同的. 为了体现概率的根本性,THH 决定随机选择一一个刷题方案,但是为了不让自己某一天太过无聊,他要求每天至少要刷一套试卷,同时为了不让自己过度劳累,他决定这n套题不需要全部刷完.THH当然想知道,总共有多少种可能的刷题方案. THH当然知道答案,但是他希望你帮他验证一下,由于THH可能会刷很多题,

2018.2.23 省选模拟赛

从这里开始 Problem A cycle Problem B meal Problem C naive Problem A cycle 判断是否有经过一个点的负环,我们可以跑最短路.判断这个点到自己的最短路是否是负数. 于是可以二分环大小跑dfs版spfa. 于是可以分层图做时间复杂度四方的dp. (YYR给的数据水得吓人,这两个做法居然都跑过了.然后都被我和jmr卡掉了) 注意到如果一个点走不超过$k$条边回到自己的最短路的长度是负数,那么走不超过$k + 1$条边也是. 因此我们可以二分答

数据结构----顺序表的增和遍历(2018/10/23)

数据结构包含顺序表和链表 顺序表方便改和查 链表便于增删 顺序表的增和遍历: 代码一: 1 using System; 2 namespace deaiWith 3 { 4 class MySeqList<T> 5 { 6 //实际的元素个数 7 private int _flag; 8 //存储的空间 9 private T[] _ints; 10 public void AddItem(T Item) //增加元素到末尾 ,追加 11 { 12 if (_flag >= _ints.