联系绝对值的几何意义/分类讨论,不难发现若$n$张奖券上的数从小到大依次为$a_{i}$,则收益为$\sum_{i=1}^{\frac{n}{2}}a_{i+\frac{n}{2}}-a_{i}$

假设确定了这$nk$个数字,设这从小到大依次为$a_{i}$,容易发现答案最大不会超过$\sum_{i=1}^{\frac{nk}{2}}a_{i+\frac{nk}{2}}-a_{i}$;同时,如果存在$x>y$满足$a_{x}$为负号且$a_{y}$为正号,就交换$(a_{x},a_{y})$,最终一定可以取到最大值

再考虑如何确定这$nk$个数字,先取出每一个组中最小的数,符号都为负,然后贪心$\frac{nk}{2}$次选择一组将符号为负且最大(原值)的数替换为未被选择的最大的数,使得收益(即两数之和)最大,并用set维护即可

还有构造方案的问题,由于前者已经证明了必然存在方案,那么随便构造一轮后,这个子问题类似的依然可以证明存在方案,因此每一轮可以任意构造,先优先考虑全是正号/负号的组,其余组再任意选择即可

 1 #include "tickets.h"
2 #include<bits/stdc++.h>
3 using namespace std;
4 #define N 1505
5 vector<vector<int> >a;
6 priority_queue<pair<int,int> >q;
7 int n,m,mn[N],mx[N],p[N];
8 long long find_maximum(int k,vector<vector<int> >c){
9 a=c;
10 n=a.size();
11 m=a[0].size();
12 for(int i=0;i<n;i++){
13 a[i].push_back(0);
14 for(int j=m;j;j--)a[i][j]=a[i][j-1];
15 a[i][0]=0;
16 }
17 for(int i=0;i<n;i++){
18 mn[i]=k;
19 q.push(make_pair(a[i][mn[i]]+a[i][m],i));
20 }
21 for(int i=0;i<n*k/2;i++){
22 int x=q.top().second;
23 q.pop();
24 mn[x]--;
25 mx[x]++;
26 if (mn[x])q.push(make_pair(a[x][mn[x]]+a[x][m-mx[x]],x));
27 }
28 long long ans=0;
29 for(int i=0;i<n;i++){
30 for(int j=1;j<=mn[i];j++)ans-=a[i][j];
31 for(int j=m-mx[i]+1;j<=m;j++)ans+=a[i][j];
32 }
33 for(int i=0;i<n;i++){
34 a[i].pop_back();
35 for(int j=mn[i];j<m-mx[i];j++)a[i][j]=-1;
36 }
37 for(int i=0;i<k;i++){
38 int x=0,y=0;
39 memset(p,-1,sizeof(p));
40 for(int j=0;j<n;j++){
41 if (!mn[j])p[j]=0;
42 if (!mx[j])p[j]=1;
43 if ((mn[j])&&(mx[j]))y++;
44 else x+=2*p[j]-1;
45 }
46 y=(x+y)/2;
47 for(int j=0;j<n;j++)
48 if ((mn[j])&&(mx[j])){
49 p[j]=(y<=0);
50 y--;
51 }
52 for(int j=0;j<n;j++)
53 if (p[j])a[j][--mn[j]]=i;
54 else a[j][m-mx[j]--]=i;
55 }
56 allocate_tickets(a);
57 return ans;
58 }

[loj3366]嘉年华奖券的更多相关文章

  1. 【BZOJ-2436】嘉年华 DP + 优化

    2436: [Noi2011]Noi嘉年华 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 529  Solved: 382[Submit][Statu ...

  2. Oracle技术嘉年华

    只有把一件事情做好,才会获得更多的机会! 短期的努力,成效并不明显,但是自己的成长一定能够感受到! 嘉年华的收获: 遗憾: 总结: 展望:

  3. BZOJ 2436 Noi嘉年华(优化DP)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2436 题意:有一些活动,起始时间持续时间已知.有两个场地.每个活动最多只能在一个场地举行 ...

  4. 2436: [Noi2011]Noi嘉年华 - BZOJ

    Description NOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不同的地点举办.每个嘉年华可能包含很多个活动, ...

  5. NOI2011 NOI嘉年华

    http://www.lydsy.com/JudgeOnline/problem.php?id=2436 首先离散化,离散化后时间范围为[1,cnt]. 求出H[i][j],表示时间范围在[i,j]的 ...

  6. bzoj 2436: [Noi2011]Noi嘉年华

    Description NOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不同的地点举办.每个嘉年华可能包含很多个活动, ...

  7. 飞鱼48小时游戏创作嘉年华_厦门Pitch Time总结与收获

    一.48小时游戏开发前期准备 1,策划 明确美术队友和程序队友的水平,提需求的过程中尝试做减法,在保留核心玩法的基础上,看队友水平和时间判断是否添加需求. 策划是整个游戏团队的灵魂,也是开发的上限所在 ...

  8. 奖券数目|2015年蓝桥杯B组题解析第一题-fishers

    奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利. 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位 ...

  9. 1948 NOI 嘉年华

    1948 NOI 嘉年华 2011年NOI全国竞赛  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master 题解  查看运行结果     题目描述 Descript ...

随机推荐

  1. 2021record

    2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...

  2. python-docx处理Word必备工具

      我的理解 为什么会用到python-docx,因为近段时间下载了大量网文,但格式都是html的,我个人习惯使用word处理文字,于是就想法设法把html文档转换为word,首先要考虑的问题就是从h ...

  3. 【MySQL】MySQL(三)存储过程和函数、触发器、事务

    MySQL存储过程和函数 存储过程和函数的概念 存储过程和函数是 事先经过编译并存储在数据库中的一段 SQL 语句的集合 存储过程和函数的好处 存储过程和函数可以重复使用,减轻开发人员的工作量.类似于 ...

  4. Java(15)面向对象之继承

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201615.html 博客主页:https://www.cnblogs.com/testero ...

  5. 【java】【作业】定义课程信息;继承和组合练习

    问题: 定义课程信息类,包含课程编号.课程名称及学生成绩.编程实现对软件工程专业的某班级的所有课程成绩统计,包括平均成绩.最高成绩.最低成绩,并打印成绩等级分布律. 分析 初分析: 父类(课程信息类) ...

  6. 百度OCR技术博客

    百度OCR工具链使用 百度OCR的API使用总体来说比较容易,主要步骤为:注册云平台并登录,选择服务并创建应用,保存API Key以及Secret Key,选择调用API. 注册登录百度云平台 首先需 ...

  7. 六个好习惯让你的PCB设计更优

    PCB layout工程师每天对着板子成千上万条走线,各种各样的封装,重复着拉线的工作,也许很多人会觉得是很枯燥无聊的工作内容.看似软件操作搬运工,其实设计人员在过程中要在各种设计规则之间做取舍,兼顾 ...

  8. NOIP 模拟 八十五

    T1 冲刺NOIP2021模拟18 莓良心 容易发现答案和每一个 \(w_i\) 无关,我们只需要求出总和然后计算方案数. 对于每一个数贡献的方案数是相同的,首先是自己的部分就是\(\begin{Bm ...

  9. Logic strength modeling

    7.9 Verilog HDL提供了信号争用.双向通过门.电阻式MOS器件.动态MOS.电荷共享的精确建模,并通过允许标量净信号值具有全范围的未知值和不同强度级别或强度级别的组合来实现其他依赖于技术的 ...

  10. vim vi 高亮第80列 Python PEP8规范 行最大长度设置

    命令模式下 :set cc=80 或者 打开 vim的配置 文件 .vimrc vim ~/.vimrc 接着你会看到你的配置文件 在配置文件中加上这样行配置代码 set cc=80 ok 现在退出v ...