人生第一篇题解,虽然这道题做的人暂时不多,但我相信它——迟早有一天会发扬光大的!!!

说完废话

步入正题

题意:

传送门

思路:

模拟、枚举

对于每个组里的数字,先排序,然后从一到最大可能的情况,枚举要选几个数

记录选取的和(用前缀和会更方便),然后就是选择

那些前缀和

正数的组 加进来

负数的组 舍去(因为出现负数的情况说明这组还未选进来的数都是负数,没有利用价值了,故舍去)

具体实现起来比较麻烦

把每个数分到相应的组,并把每个组里的数排序 ——》 先对全部的数排序,再用链式前向星分组

枚举 数的个数: ——》 用queue记录遍历的顺序,再用两个while循环遍历,res表示有价值的组个数,里面的num表示这一次遍历了几个组(方便终止)

具体见代码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct node{
  4. int s,r;
  5. }a[100010];
  6. int nxt[100010];
  7. int head[100010];
  8. int s[100010];
  9. int sum,cur,ans,num,res;
  10. int n,m;
  11. int read()//快读不解释
  12. {
  13. int s=0,p=1;
  14. char c=getchar();
  15. while(!isdigit(c))
  16. {
  17. if(c=='-')
  18. p=-1;
  19. c=getchar();
  20. }
  21. while(isdigit(c))
  22. {
  23. s=(s<<1)+(s<<3)+c-'0';
  24. c=getchar();
  25. }
  26. return s*p;
  27. }
  28. bool cmp(node x,node y)
  29. {
  30. return x.r<y.r;
  31. }
  32. int main()
  33. {
  34. int i;
  35. n=read();m=read();
  36. for(i=1;i<=n;i++)
  37. a[i].s=read(),a[i].r=read();
  38. sort(a+1,a+1+n,cmp);//先进行排序
  39. for(i=1;i<=n;i++)//分组
  40. {
  41. nxt[i]=head[a[i].s];
  42. head[a[i].s]=i;
  43. }
  44. queue<int>p;
  45. for(i=1;i<=m;i++)//起始遍历顺序就是组号
  46. p.push(i);
  47. res=m;
  48. while(res)//有价值的组数
  49. {
  50. num=res;//更新下次
  51. sum=0;//记录这次的结果
  52. while(num--)
  53. {
  54. cur=p.front();p.pop();
  55. s[cur]+=a[head[cur]].r;//前缀和
  56. sum+=max(s[cur],0);
  57. head[cur]=nxt[head[cur]];//更新头结点
  58. if(head[cur]&&s[cur]>0)//如果还有利用价值就加入下一次的遍历序列
  59. p.push(cur);
  60. else//否则更新组数
  61. res--;
  62. }
  63. ans=max(ans,sum);//全部的答案
  64. }
  65. printf("%d",ans);
  66. return 0;
  67. }

「CF1082C」Multi-Subject Competition 解题报告的更多相关文章

  1. 洛谷 P4714 「数学」约数个数和 解题报告

    P4714 「数学」约数个数和 题意(假):每个数向自己的约数连边,给出\(n,k(\le 10^{18})\),询问\(n\)的约数形成的图中以\(n\)为起点长为\(k\)的链有多少条(注意每个点 ...

  2. 「NOI2013」树的计数 解题报告

    「NOI2013」树的计数 这什么神题 考虑对bfs重新编号为1,2,3...n,然后重新搞一下dfs序 设dfs序为\(dfn_i\),dfs序第\(i\)位对应的节点为\(pos_i\) 一个暴力 ...

  3. 「NOI2016」优秀的拆分 解题报告

    「NOI2016」优秀的拆分 这不是个SAM题,只是个LCP题目 95分的Hash很简单,枚举每个点为开头和末尾的AA串个数,然后乘一下之类的. 考虑怎么快速求"每个点为开头和末尾的AA串个 ...

  4. 「NOI2016」循环之美 解题报告

    「NOI2016」循环之美 对于小数\(\frac{a}{b}\),如果它在\(k\)进制下被统计,需要满足要求并且不重复. 不重复我们确保这个分数是最简分数即\((a,b)=1\) 满足要求需要满足 ...

  5. 「FJOI2018」领导集团问题 解题报告

    「FJOI2018」领导集团问题 题意:给你一颗\(n\)个点的带点权有根树,选择一个点集\(S\),使得点集中所有祖先的点权$\le \(子孙的点权,最大化\)|S|$(出题人语死早...) 一个显 ...

  6. 「SP25784」BUBBLESORT - Bubble Sort 解题报告

    SP25784 BUBBLESORT - Bubble Sort 题目描述 One of the simplest sorting algorithms, the Bubble Sort, can b ...

  7. 「SP122」STEVE - Voracious Steve 解题报告

    SP122 STEVE - Voracious Steve 题意翻译 Problem Steve和他的一个朋友在玩游戏,游戏开始前,盒子里有 n个甜甜圈,两个人轮流从盒子里抓甜甜圈,每次至少抓 1个, ...

  8. 「Luogu」[JSOI2007]字符加密 解题报告

    题面 思路: 作为一个后缀数组的初学者,当然首先想到的是后缀数组 把\(s\)这个串首尾相接,扩展为原来的两倍,就能按后缀数组的方法处理 证明: 神仙一眼就看出这是后缀的裸题,我这个蒟蒻想了半天想不出 ...

  9. 「P5004」专心OI - 跳房子 解题报告

    题面 把\(N\)个无色格子排成一行,选若干个格子染成黑色,要求每个黑色格子之间至少间隔\(M\)个格子,求方案数 思路: 矩阵加速 根据题面,这一题似乎可以用递推 设第\(i\)个格子的编号为\(i ...

  10. 「CF242E」XOR on Segment 解题报告

    题面 长度为\(n\)的数列,现有两种操作: 1.区间异或操作 2.区间求和操作 对于每个查询,输出答案 思路: 线段树+二进制拆位 线段树区间修改一般使用的都是懒标记的方法,但是对于异或,懒标记的方 ...

随机推荐

  1. UISearchDisplayController “No Results“ cancel修改

    Recently I needed to fully customize a UISearchBar, so here are some basic "recipes" on ho ...

  2. 13 Free GIS Software Options: Map the World in Open Source

    13 Free GIS Software Options: Map the World in Open Source   A LIST OF FREE OPEN SOURCE MAPPING SOFT ...

  3. poj1741 树上距离小于等于k的对数 点分治 入门题

    #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...

  4. @bzoj - 4379@ [POI2015] Modernizacja autostrady

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一棵无根树,边权都是1,请去掉一条边并加上一条新边,定义直径 ...

  5. [C#] ServiceStack.Redis如何批量的pop数据?

    要安全的批量pop数据,有两个办法: 1.用事务(不用事务的话可能导致重复读.ServiceStack的pipeline是没有自带事务的.) 2.执行lua脚本 我这里提供用事务的实现方法: publ ...

  6. H3C PAP验证配置示例

  7. HTML让文字在图片上显示的几种方法

    第一种方式是image 作为背景图片,即:background:url("......."); 第二种方式是将img块与文字块(文字块采用span标签显示)放在同一个div 中,然 ...

  8. Laravel5 call to undefined function openssl cipher iv length() 报错 PHP7开启OpenSSL扩展失败

    在安装laravel5.5后, 访问显示报错. call to undefined function openssl cipher iv length() 经查为php7.1的OpenSSL扩展加载失 ...

  9. element-ui后台管理系统表单resetFields功能实现

    项目中有‘新增’和‘编辑’弹出dialog功能,并且为同一个dialog. html代码: 新增时,这样的样式 编辑时,这样的样式 所以在编辑完关闭dialog后,需要清空表单,一开始简单的使用了el ...

  10. tensorflow在文本处理中的使用——辅助函数

    代码来源于:tensorflow机器学习实战指南(曾益强 译,2017年9月)——第七章:自然语言处理 代码地址:https://github.com/nfmcclure/tensorflow-coo ...