CF1148D-Dirty Deeds Done Dirt Cheap

本文回顾了一次CF竞赛中遇到的难题,分享了在面对复杂问题时,如何通过重新审视题目条件和数据特性找到简化解题路径的经验。文章详细解析了忽视排序和分类后pair性质导致的解题障碍,以及最终如何通过正确排序解决的问题。

这轮CF怎么充满了替身啊233(这是场只有替身使者才能看见的比赛)

题解可以看官方的

这里就是记录下自己当初是怎么没做上的233

忽视掉了分类后pair本身就会带有的性质(a<b or a>b)

结果没发现排下序就好了。。。

可能当时就没想到自己能做出来D吧。。所以就理所当然地放弃了

现在看来,当题卡住的时候,不要怀疑自己,至少要想想有没有什么遗漏的性质才行……

 1 #include<bits/stdc++.h>
 2 #define N 300005
 3 using namespace std;
 4 int n,an,bn;
 5 struct PP{
 6     int a,b,id;
 7 }A[N],B[N];
 8 bool cmpa(PP A,PP B){return A.a>B.a;}
 9 bool cmpb(PP A,PP B){return A.b<B.b;}
10 int main(){
11     scanf("%d",&n);
12     for(int i=1,u,v;i<=n;i++){
13         scanf("%d%d",&u,&v);
14         if(u<v) A[++an]={u,v,i};
15         else B[++bn]={u,v,i};
16     }
17     if(an>bn){
18         printf("%d\n",an);
19         sort(A+1,A+1+an,cmpa);
20         printf("%d",A[1].id);
21         for(int i=2;i<=an;i++)printf(" %d",A[i].id);
22     }
23     else{
24         printf("%d\n",bn);
25         sort(B+1,B+1+bn,cmpb);
26         printf("%d",B[1].id);
27         for(int i=2;i<=bn;i++)printf(" %d",B[i].id);
28     }
29     return 0;
30 }
View Code

 

转载于:https://www.cnblogs.com/2017SSY/p/11004229.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值