传送门

E.sequence

题意

  定义序列 p 中的 "good",只要 i 之前存在 pj < pi,那么,pi就是 "good";

  求删除一个数,使得序列中 "good" 的个数最多;

题解

  一个数 pi 对 "good" 的贡献有两个来源:

  ①p本身为"good",对答案的贡献为 1;

  ②删除 p后,i 之后的本来是 "good" 的数因为 pi 被删除而变成非 "good" 数,这样的数有多少个,pi对答案的贡献就是多少;

  贡献①好求,主要是贡献②的求解方法;

  定义 fir,sec 为第一小,第二小的数;

  枚举位置 i,判断 pi 与 fir,sec 的大小关系;

  ①如果 pi > min{fir,sec},那么 pi 本身就为 "good";

  (1)如果 pi > sec,删除其之前的任何一个数,都不会使 pi 由 "good" 变为 非 "good";

  (2)如果 fir > pi > sec,那么,删除 fir 会使得 pi 由 "good" 变为 非"good";

  ②pi < min{fir,sec},pi 本身对答案无贡献;

AC代码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define INF 0x3f3f3f3f
  5. #define lowbit(x) (x&-x)
  6. #define mem(a,b) memset(a,b,sizeof(a))
  7. const int maxn=1e6+;
  8.  
  9. int n;
  10. int p[maxn];
  11. int a[maxn];///a[i]:判断p[i]对答案的影响
  12.  
  13. int Solve()
  14. {
  15. int fir=INF;
  16. int sir=INF;
  17. for(int i=;i <= n;i++)
  18. {
  19. if(p[i] > fir)
  20. {
  21. a[p[i]]++;
  22. if(p[i] < sir)
  23. a[fir]++;
  24. }
  25.  
  26. if(p[i] < fir)
  27. {
  28. sir=fir;
  29. fir=p[i];
  30. }
  31. else if(p[i] < sir)
  32. sir=p[i];
  33. }
  34.  
  35. int ans;
  36. int ansTot=n+;
  37. for(int i=;i <= n;++i)
  38. {
  39. int cur=a[p[i]];
  40. if(ansTot > cur)
  41. {
  42. ans=p[i];
  43. ansTot=cur;
  44. }
  45. else if(ansTot == cur && ans > p[i])
  46. ans=p[i];
  47. }
  48. return ans;
  49. }
  50. int main()
  51. {
  52. // freopen("C:\\Users\\hyacinthLJP\\Desktop\\in&&out\\contest","r",stdin);
  53. int test;
  54. scanf("%d",&test);
  55. while(test--)
  56. {
  57. scanf("%d",&n);
  58. for(int i=;i <= n;i++)
  59. {
  60. scanf("%d",p+i);
  61. a[i]=;
  62. }
  63. printf("%d\n",Solve());
  64. }
  65. return ;
  66. }

•踩坑

  刚开始判断其本身的影响和对其他的数的影响时,用的是树状数组求逆序对判断的(TLE到死);

  其实完全没必要记录这么多信息,只需记录某数前的第一小和第二小的数即可;

神评测鸡

  用之前AC的代码,Ctrl+C , Ctrl+V,TLE???

  AC之前用的是 ++i,一直TLE,改成 i++,AC???

“浪潮杯”第九届山东省ACM大学生程序设计竞赛(重现赛)E.sequence(树状数组求逆序对(划掉))的更多相关文章

  1. “浪潮杯”第九届山东省ACM大学生程序设计竞赛重现赛 C-Cities

    题目描述:There are n cities in Byteland, and the ith city has a value ai. The cost of building a bidirec ...

  2. “浪潮杯”第九届山东省ACM大学生程序设计竞赛 F: Four-tuples容斥定理

    题目 F : Four-tuples  输入 1 1 1 2 2 3 3 4 4 输出 1 题意 给l1, r1, l2, r2, l3, r3,  l4, r4​ , 八个数据, 要求输出在区间[l ...

  3. 第八届山东省ACM大学生程序设计竞赛个人总结

    因为省赛,从开学紧张到5月7号.心思也几乎全放在ACM的训练上.因为我还是校台球协会的会长,所以台协还有一些事情需要忙,但是我都给延迟了.老会长一直在催我办校赛,但我一直说 等等吧,因为校赛只能在周六 ...

  4. UPC 2224 / “浪潮杯”山东省第四届ACM大学生程序设计竞赛 1008 Boring Counting 主席树

    Problem H:Boring Counting Time Limit : 6000/3000ms (Java/Other)   Memory Limit : 65535/32768K (Java/ ...

  5. 第十四届浙江财经大学程序设计竞赛重现赛--A-A Sad Story

    链接:https://www.nowcoder.com/acm/contest/89/A 来源:牛客网 1.题目描述 The Great Wall story of Meng Jiangnv’s Bi ...

  6. 山东省第四届ACM大学生程序设计竞赛解题报告(部分)

    2013年"浪潮杯"山东省第四届ACM大学生程序设计竞赛排名:http://acm.upc.edu.cn/ranklist/ 一.第J题坑爹大水题,模拟一下就行了 J:Contes ...

  7. [2012山东省第三届ACM大学生程序设计竞赛]——n a^o7 !

    n a^o7 ! 题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2413 Time Lim ...

  8. [2012山东省第三届ACM大学生程序设计竞赛]——Mine Number

    Mine Number 题目:http://acm.sdut.edu.cn/sdutoj/problem.php? action=showproblem&problemid=2410 Time ...

  9. Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)

    Alice and Bob Time Limit: 1000ms   Memory limit: 65536K 题目描述 Alice and Bob like playing games very m ...

随机推荐

  1. 跟我一起认识axure(一)

    第一步下载:https://www.axure.com.cn/ 第二步点击安装,一路next 第三步:认识Axure RP工作界面

  2. QT 捕获事件(全局拦截)

    QT 捕获应用键盘事件(全局拦截) 主窗口只有一个QTabWidget,每个tab中嵌入相应的窗口,在使用的过程中,需要主窗口响应键盘事件,而不是tab中的控件响应.故采取以下方式. 重写QAppli ...

  3. [Java]ssh网上商城总结 标签: hibernatessh 2016-05-15 21:03 1099人阅读 评论(32)

    前几日敲完了ssh网上商城,虽然现在已经敲完了整个系统,却发现自己对于ssh,了解的一点都不多,什么是struts2,什么是spring,什么是hibernate,自己都是稀里糊涂,然后看了一下后面的 ...

  4. 洛谷2375 BZOJ 3670动物园题解

    题目链接 洛谷链接 我们发现题目要我们求的num[i]东西本质上其实是 求有多少以i结尾的非前缀且能与前缀匹配的字符串,而且要求字符串长度小于(i/2) 我们先不考虑字符串长度的限制,看所有以i结尾的 ...

  5. php上传文件与图片到七牛的实例详解

    上传文件到七牛最简单的方式就是使用七牛官方最新的SDK 用composer安装PHP SDK composer require qiniu/php-sdk 上传文件到七牛 use Qiniu\Auth ...

  6. 【Linux】 经典Linux系统工程师面试题(转载)

    1.如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0: 答: # iptables -t nat -A PREROUTING -d 192.16 ...

  7. HDU 5673 Robot【卡特兰数】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5673 题意: 有一个机器人位于坐标原点上.每秒钟机器人都可以向右移到一个单位距离,或者在原地不动.如 ...

  8. Myeclipse jdk的安装

  9. @NOIP2018 - D2T2@ 填数游戏

    目录 @题目描述@ @题解@ @代码@ @题目描述@ 小 D 特别喜欢玩游戏.这一天,他在玩一款填数游戏. 这个填数游戏的棋盘是一个 n×m 的矩形表格.玩家需要在表格的每个格子中填入一个数字(数字 ...

  10. 归并排序及应用 (nyoj 117 求逆序数)

    求逆序数 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中 ...