昨天同桌为我推荐了p1904这道水题,然后他就写不出来了……本来不想写,但是看他写得很麻烦,为了给他展示我的代码能力就写了一下。

  即使类型为“其他”,但还是掩盖不了模拟的事实。那么直接sort Ai,再在前k个牛中找到Bi最高的就行。复杂度为N*logN+k

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
using namespace std;
struct woc
{int a;int b;int num;
}cow[50010];
bool mycmp(woc x,woc y)
{return x.a>y.a;
}
int n,k,i,ans=1;
int main()
{
ios::sync_with_stdio(false);cin>>n>>k;for(i=1;i<=n;i++){    cin>>cow[i].a>>cow[i].b;cow[i].num=i;}sort(cow+1,cow+1+n,mycmp);for(i=2;i<=k;i++){if(cow[i].b>cow[ans].b)ans=i;}cout<<cow[ans].num;return 0;
}  

  往上看了一眼,p1903好像也挺简单。

如果双重循环应该是要超时的,n=20000,说小不小了。他们说要sort后二分,哇二分,代码有点复杂的,决心想一种简单点的方法。好像s也不大,我决定搞一个计数排序。

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
using namespace std;
int i;
int num[1000010],t,n,s,ans,sum[1000010];
int C[10010];
int main()
{
ios::sync_with_stdio(false);cin>>n>>s;for(i=1;i<=n;i++){cin>>t;num[t]++;}for(i=1;i<=10000;i++)C[i+1]=C[i]+i;for(i=1;i<=s;i++)sum[i]=sum[i-1]+num[i];for(i=1;i<=s/2;i++)ans+=C[num[i]]+num[i]*(sum[s-i]-sum[i]);cout<<ans;
return 0;
}

整个看下来复杂度是10000+s*3/2,完全没问题。(其实实际我处理C数组的时候只循环到了20,然而也能过,说明数据中没有超过20个的)

思路就是找到n头牛的长度对应的长度后num++,建立起一个前缀和(可能叫这玩意?)sum,以后方便算出i到s-i牛的数量,然后答案就是从num[i]中挑两个的方案数(C[num[i]]即为所求)加上num[i]*(sum[s-i]-sum[i]),输出。

转载于:https://www.cnblogs.com/qywyt/p/9002299.html

p1904 p1903相关推荐

  1. 【洛谷】P1904 天际线

    题目地址: https://www.luogu.com.cn/problem/P1904 题目描述: Latium省的Genoa是亚平宁半岛西海岸北端的一片土地,自然资源丰富,却无人居住.你受到罗马执 ...

  2. 带修莫队 ---- P1903 [国家集训队]数颜色 / 维护队列 带修莫队模板

    题目链接 题目大意: 解题思路: 带修改的莫队 首先我们要知道,普通的莫队算法是不资瓷修改操作的, 不过后人对莫队算法加以改进 发明了资瓷修改的莫队算法 思路 在进行修改操作的时候,修改操作是会对答案 ...

  3. P1903 [国家集训队]数颜色 / 维护队列

    关于时间复杂度 对于多维莫队的复杂度差不多为\(O(n^{\frac{2k-1}{k}})\) 摘自zhihu大佬 奇偶分类优化 return a.l == b.l ? (a.l & 1) ? ...

  4. 洛谷 P1903 [国家集训队]数颜色 / 维护队列

    题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2 ...

  5. 洛谷-P1903 数颜色 分块 bitset

    题目 题目链接 题意 给你一个数列代表不同的颜色(可以修改). 询问一段区间内有多少种颜色. 题解 很容易想到的就是线段树来维护bitset. 这里为了练习,使用分块维护bitset. * 事实上线段 ...

  6. 数颜色(洛谷-P1903)

    题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2 ...

  7. 【洛谷P1903】数颜色

    题目大意:给定一个长度为 N 的序列,每个点有一个颜色.现给出 M 个操作,支持单点修改颜色和询问区间颜色数两个操作. 题解:学会了序列带修改的莫队. 莫队本身是不支持修改的.带修该莫队的本质也是对询 ...

  8. P1903 数颜色 (带修莫队)

    题目传送门 ~~~ 题目大意 给一个有 n 个元素的数组 a,有 m 次操作,操作如下: Q 操作,询问区间 (l, r) 不同元素的个数 R 操作,把第 x 个元素修改为 y 对于每次 Q 操作,输 ...

  9. 信息学奥赛一本通在线提交地址

    信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...

最新文章

  1. 漫画:程序教你玩转股票
  2. AWARD BIOS设置详解
  3. (Oracle学习笔记) Oracle体系结构
  4. STC12C5A60S2笔记8(串口)
  5. 如何在input输入框中加一个搜索的小图片_前端开发困难重重,如何把握机会学习?...
  6. java word在线预览_java 生成word文档并且在线预览的问题
  7. 可视化动画:数据结构和算法
  8. 订单查询管理系统Silverlight4(预告)
  9. C语言编写贪吃蛇游戏
  10. 走进小作坊(九)----省时省力的二八法则
  11. android音乐16bit,16bit音乐是无损吗
  12. Oracle中除数为0的解决办法
  13. JMeter递增加压
  14. python两列时间间隔计算器_计算两列之间的Pandas DataFrame时间差异(以小时和分钟为单位)...
  15. 【嵌入式Linux(基础篇)】嵌入式Linux底层系统开发流程和应用开发流程
  16. 让你的桌面腾飞吧(OpenSolaris2008.05 + VirtualBox + WinXP)
  17. Visual and Object Geo-localization: A Comprehensive Survey
  18. 三款EPUB阅读软件对比
  19. 华硕主板驱动在哪里下载?(ROG STRIX B250I)
  20. python网络安全论文题目_全新计算机专业毕业设计选题(毕业论文题目)

热门文章

  1. 不要迷恋我,虽然我利用Python来耍植物大战僵尸,威力加强版
  2. 分享软件测试实习生的第一天~
  3. MACD与KDJ合二为一指标公式怎么编写?
  4. 有趣的程序代码c语言,一个有趣的小程序
  5. HTML_canvas
  6. 可以下载《全程软件测试》样章电子版
  7. 发光二极管限流电阻(学习笔记)
  8. 给领导敬酒杯子非要低于领导吗?
  9. 学会敬酒礼仪 不做酒席菜鸟
  10. 从 ADNI 的 XML 文件中读取临床信息