题面

解析

辣鸡题面毁我青春

因为翻译的题面中写了一句\(剩下的n−k个不会完成\).

所以就以为剩下的\(n-k\)个都会算上不满意值.

(然而事实是只有\(p-k\)个...)

首先根据主席的规则,我们可以先钦定\(p-k\)个绝对不会被选的任务,

把\(b\)从大到小,再把\(a\)从小到大取最后面就行了.

(应该很容易理解吧...)

然后再把剩下的按\(a\)从大到小,

再把\(b\)从大到小排序,取前\(k\)个就是白头发最多的情况了.

这里把\(b\)从大到小是因为剩下的\(p-k\)个还要使不满意度最大,

所以从大到小的话就有了更多机会.

然后考虑剩下的\(p-k\)个,

因为之前钦定的不一定是不满意度最大的情况,

因此我们要再按第一次的顺序,

取已经取了的前\(k\)个中在最后面的任务的后面\(p-k\)个就行了.

这里听起来可能有点绕口...

因为我们要保证剩下的\(p-k\)个不能干扰前面的\(k\)个(即在主席的规则中优先度更高).

再自己\(yy\)下应该就行了.

还有一点要注意的是,

因为有两个任务可能\(a,b\)都相等,

因此两次排序的结果可能不一样(因为这个WA到吐...)

所以在排序的时候把编号作为第三关键字就好了.

code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define fre(x) freopen(x".in","r",stdin),freopen(x".out","w",stdout)
using namespace std; inline int read(){
int sum=0,f=1;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=sum*10+ch-'0';ch=getchar();}
return f*sum;
} const int N=200005;
struct node{int x,y,tag,id,pos;}a[N],b[N];
int n,K,P,sum=0x3f3f3f3f,ret=0; inline bool cmp(node a,node b){
return a.y!=b.y? a.y<b.y:a.x>b.x;
} inline bool cmp1(node a,node b){
// if(a.tag!=b.tag) return a.tag<b.tag;
if(a.x!=b.x) return a.x>b.x;
return a.y>b.y;
} inline bool cmp2(node a,node b){return a.y!=b.y? a.y>b.y:a.x<b.x;} signed main(){
n=read();P=read();K=read();
for(int i=1;i<=n;i++) a[i].x=read(),a[i].y=read();
for(int i=1;i<=n;i++) a[i].id=i;
sort(a+1,a+n+1,cmp2);
memcpy(b,a,sizeof(b));
for(int i=1;i<=n;i++) a[i].pos=i;
int ss=P-K;
sort(a+1,a+n-ss+1,cmp1);
for(int i=1;i<=K;i++) printf("%d ",a[i].id);
for(int i=1;i<=K;i++) ret=max(ret,a[i].pos);
// sort(a+ret+1,a+n+1,cmp2);
for(int i=1;i<=ss;i++){
printf("%d ",b[i+ret].id);
} // for(int i=1;i<=n;i++) if(a[i].tag) printf("%d ",a[i].id);
puts("");
return 0;
}

题解 [CF332C] Students' Revenge的更多相关文章

  1. 【Codeforces 332C】Students' Revenge

    Codeforces 332 C 我爱对拍,对拍使我快乐... 题意:有\(n\)个议题,学生们会让议会同意\(p\)个,其中主席会执行\(k\)个, 每一个议题执行后主席会掉\(a_i\)的头发,不 ...

  2. 题解 GRE Words Revenge

    题目传送门 题目大意 给出 \(m\) 次操作,分别为以下两种操作: 学习一个单词 给出一个段落,查询里面有多少个学过的单词.注意,如果学习过 \(\text{ab,bc}\) ,当前查询段落为 \( ...

  3. HDU P3341 Lost's revenge 题解+数据生成器

    Lost and AekdyCoin are friends. They always play "number game"(A boring game based on numb ...

  4. HDU 3341 Lost's revenge (AC自动机 + DP + 变进制/hash)题解

    题意:给你些分数串,给你一个主串,主串每出现一个分数串加一分,要你重新排列主串,最多几分 思路:显然这里开$40^4$去状压内存不够.但是我们自己想想会发现根本不用开那么大,因为很多状态是废状压,不是 ...

  5. Spring-2-B Save the Students(SPOJ AMR11B)解题报告及测试数据

    Save the Students Time Limit:134MS     Memory Limit:0KB     64bit IO Format:%lld & %llu   Descri ...

  6. HDU 5019 Revenge of GCD(数学)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5019 Problem Description In mathematics, the greatest ...

  7. HDU5088——Revenge of Nim II(高斯消元&矩阵的秩)(BestCoder Round #16)

    Revenge of Nim II Problem DescriptionNim is a mathematical game of strategy in which two players tak ...

  8. 【HDU 4898】 The Revenge of the Princess’ Knight (后缀数组+二分+贪心+...)

    The Revenge of the Princess’ Knight Problem Description There is an old country and the king fell in ...

  9. hdu_4787_GRE Words Revenge(在线AC自动机)

    题目链接:hdu_4787_GRE Words Revenge 题意: 总共有n个操作,2种操作.每行读入一个字符串. 1.如果字符串以+开头,此为单词(即模式串,不考虑重复) 2.如果字符串以?开头 ...

随机推荐

  1. Facebook推荐算法模型DLRM解读

    参考:https://mp.weixin.qq.com/s/mUNjLuOG2UvztCEP3wyPPw 代码:https://github.com/facebookresearch/dlrm

  2. Win7原装ISO镜像封装USB3.0&网卡驱动

    Win7原装ISO镜像封装USB3.0&网卡驱动   最新购买的电脑是Windows10系统,想装回Windows7,但是装Windows7发现网络适配器没出现,如果没有USB2.0接口,US ...

  3. vue开发环境配置跨域,一步到位

    本文要实现的是:使用vue-cli搭建的项目在开发时配置跨域,上线后不做任何任何修改,接口也可以访问,前端跨域解决方案 production:产品 生产环境 development:开发 开发环境 1 ...

  4. Python 常用外部模块详解

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  5. 牛客 203B tree(树形dp)

    大意: 给定树, 对于每个节点, 求包含该节点的连通子集数. 显然有$dp[x]=\prod (dp[y]+1), ans[x]=(\frac{ans[fa[x]]}{dp[x]+1}+1)dp[x] ...

  6. hdu 6058 思维

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6058 分析题目的时候,由于枚举的区间很多,而第k大的值范围小,应该要想到去枚举第k大的值然后找到这个值对答 ...

  7. DDD 理解

    DDD提倡充血模型,业务放在类中,而不是服务中,刚开始是比较不清楚的.突然明白,以前开发桌面程序的时候,不就是这样处理了吗?业务分析和代码实现一一对应.因为桌面程序没有数据库,他就是纯粹的面向对象的实 ...

  8. mpvue + 微信小程序 picker 实现自定义多级联动 超简洁

    微信小程序官网只提供了省市区的三级联动,实际开发中更多的是自定义的多级联动: 依照微信小程序官网提供的自定义多级联动,需要使用到picker 的多列选择器,即设置 mode = multiSelect ...

  9. 如何部署自定义的servlet

    1 首先找到与exlipse绑定的tomcat安装位置 2 打开web.xml添加如下信息: <display-name>servletDemo</display-name> ...

  10. LLVM使用其他Pass的结果

    之前的工作一直集中在clang中,最近有点空闲时间,又重新熟悉了一下Pass的书写过程.(参考LLVM CookBook和http://llvm.org/docs/WritingAnLLVMPass. ...