联系绝对值的几何意义/分类讨论,不难发现若$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. NOIP模拟76

    前言 还有不到 10 天就要 CSP-S ...马上我就要有我的第一篇游记了. 今天考试莽了一回,整了大概 2.5h 的 T1 ,可能是因为今天题目比较难,看起来成效不错. 以后还是要注意时间的分配( ...

  2. maven配置下载包 解决SunCertPathBuilderException:unable to find valid certification path to requested target

    ​ 解决 『SunCertPathBuilderException:unable to find valid certification path to requested target』 问题 ★ ...

  3. Java初步学习——2021.09.23每日报告,第三周周四

    (1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 学习数组,编写了一个随机选牌的代码.自己最开始一直想只设置一个字符串数组,利用随机数来输出,但那样对字符串赋值会比较麻烦.可 ...

  4. md5验证文件上传,确保信息传输完整一致

    注:因为是公司项目,仅记录方法和思路以及可公开的代码. 最近在公司的项目中,需要实现一个上传升级包到服务器的功能: 在往服务器发送文件的时候,需要确保 文件从开始发送,到存入服务器磁盘的整个传输的过程 ...

  5. 如何快速体验鸿蒙全新声明式UI框架ArkUI?

    HDC2021将于10月22日在东莞松山湖正式开幕,大会将设立Codelab体验专区,超多好玩.有趣的Demo等你体验.想快速入门HarmonyOS?学习HarmonyOS新特性?以下几个Codela ...

  6. k8s 关于Job与Cronjob

    在Kubernetes 中通过创建工作负载资源 Job 可完成大型计算以及一些批处理任务.比如 Job 转码文件.获取部分文件和目录,机器学习中的训练任务等.这篇小作文我们一起来了解 k8s 中关于 ...

  7. cassandra表中主键的类型

    cassandra表中主键的类型及区分? 一.类型及区分 二.参考文章 一.类型及区分 Cassandra的4种Key Primary Key 主键 Composite Key,Compound Ke ...

  8. 【UE4 设计模式】外观模式 Facade Pattern

    概述 描述 外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.外观模式又称为门面模式,它是一 ...

  9. 热身训练1 Calculator

    题目出处:Calculator 简要题意: 你有一个确定的函数,f(x)=+...*...^...,其中共有n个操作,从左到右依次计算. 共有m次询问,我们每次询问,1.会修改f(x)中的操作:2.输 ...

  10. PHP笔记3__简易计算器

    <?php header("Content-type: text/html; charset=utf-8"); error_reporting(E_ALL & ~E_ ...