COW

【JZOJ 2017.08.11C组T3】牛人(排序,贪心)

为君一笑 提交于 2021-02-11 01:31:51
题目描述 现在有n个人,每个人都有一个智力值和能力值。对于某一个人A来说,如果其它n-1个人中,没有人的智力值和能力值都比A高,则我们称A为“牛人”。反过来说,只要有一个人的智力值和能力值都比A高,则A就不是“牛人”了。 请统计共有多少个“牛人”。 输入 输入文件niuren.in的第一行只有一个整数n。 第二行,有n个以空格分隔的正整数,第i个正整数表示第i个人的智力值。 第三行,有n个以空格分隔的正整数,第i个正整数表示第i个人的能力值。 输出 输出文件niuren.out中仅有一行,该行只有一个整数,表示求得的“牛人”数。 按照智力值排序,那么只需要考虑能力值即可。当前能力值若比前面所有人的能力值都要高,那么虽然他的智力值没有前面的人高,但能力值在前面人中没有人比他高的,所以他就是个牛人。注意排序方法。 1 #include <algorithm> 2 #include <cstdio> 3 4 #define ll long long 5 6 struct cow{ 7 ll itl,abl; 8 }a[ 100010 ]; 9 int n,ans; 10 ll maxn; 11 12 bool cmp(cow x,cow y){ 13 if (x.itl==y.itl) return x.abl< y.abl; 14 else return x.itl> y.itl;

洛谷P2866 [USACO06NOV]糟糕的一天Bad Hair Day(单调栈)

无人久伴 提交于 2021-02-07 04:54:39
题目描述 Some of Farmer John's N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self-conscious about her messy hairstyle, FJ wants to count the number of other cows that can see the top of other cows' heads. Each cow i has a specified height hi (1 ≤ hi ≤ 1,000,000,000) and is standing in a line of cows all facing east (to the right in our diagrams). Therefore, cow i can see the tops of the heads of cows in front of her (namely cows i+1, i+2, and so on), for as long as these cows are strictly shorter than cow i. Consider this example: = = = = - = Cows facing right --> = = = = -

洛谷 P2887 [USACO07NOV]防晒霜Sunscreen 解题报告

与世无争的帅哥 提交于 2021-02-02 06:11:30
P2887 [USACO07NOV]防晒霜Sunscreen 题目描述 To avoid unsightly burns while tanning, each of the C (1 ≤ C ≤ 2500) cows must cover her hide with sunscreen when they're at the beach. Cow i has a minimum and maximum SPF rating (1 ≤ minSPFi ≤ 1,000; minSPFi ≤ maxSPFi ≤ 1,000) that will work. If the SPF rating is too low, the cow suffers sunburn; if the SPF rating is too high, the cow doesn't tan at all........ The cows have a picnic basket with L (1 ≤ L ≤ 2500) bottles of sunscreen lotion, each bottle i with an SPF rating SPFi (1 ≤ SPFi ≤ 1,000). Lotion bottle i can cover coveri cows with lotion. A cow may

P5242 [USACO19FEB]Cow Dating

萝らか妹 提交于 2021-02-02 05:58:21
题目链接 题意分析 首先我们可以得出计算公式 $$s_i=\prod_{k=1}^i(1-p_k)$$ $$f_i=\sum_{k=1}^i\frac{p_k}{1-p_k}$$ 那么 $$ans(i,j)=\frac{s_r}{s_{l-1}}{f_r-f_{l-1}}$$ 强行枚举 $O(n^2)$ 我们冷机观察一波发现 可以使用 尺取法 然后优化成了$O(n)$ CODE: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<cstdlib> #include<string> #include<queue> #include<map> #include<stack> #include<list> #include<set> #include<deque> #include<vector> #include<ctime> #define ll long long #define inf 0x7fffffff #define N 500008 #define IL inline #define M 1008611 #define D long double #define R register using namespace std;

[USACO19FEB]Cow Dating

自古美人都是妖i 提交于 2021-02-01 06:03:41
Luogu5242 通过观察数据,我们可以发现,右端点的取值是单调递增的。于是,我们可以极限一波,用一个双指针法,类似于队列。 右端点的取值满足以下公式: (1-p1)(1-p2)..(1-pn) * (p1/(1-p1) + p2/(1-p2) + ... + pn/(1-pn)) 记录两个变量,表示和和积即可。 tmp1为积,tmp2为和 当任何一个 p 大于 0.5 的时候,选择一段的答案不比选择这一个的答案大。因此直接特判这种情况。 常规化式子 #include<bits/stdc++.h> using namespace std; typedef long double llf; int n; llf p[1000001],ans=0,tmp1=1,tmp2;//tmp1一定要赋值为1,如果是0的话大家都知道下场 int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { cin>>p[i]; p[i]/=1e6; ans=max(ans,p[i]); } int j=1; for(int i=1;i<=n;i++) { while(j<=n&&tmp1*tmp2<tmp1*(1-p[j])*(tmp2+p[j]/(1-p[j]))){//根据公式判断 tmp1*=(1-p[j]); tmp2+=p[j]/(1-p[j]);/

关于Java中CopyOnWriteArrayList的一些问题

点点圈 提交于 2021-01-23 10:55:44
1. 开始 假设有一个游戏服务,需要和客户端相互发送数据。 如果是你,你会怎么设计这个结构和逻辑。 我们还是先来看一个简化抽象版容易劝退的实际例子,当然这个例子不重要,完全可以跳过。 不过可以检查一下你对Java并发的熟悉程度,你能发现的问题也多,说明你对Java并发也了解。 因为下面的代码示例反应了很多朋友对多线程的理解的感觉。 这种感觉怎么说呢?不是不懂,各种JUC的工具感觉也熟悉,自己用着程序好像也没啥问题。 但是是总感觉多余多线程编程哪里有些点自己没有get到,但是,又不知道这些点具体是什么。 多线程编程最重要的是要理解:多线程带来的问题,这其中最重要的有2点: 数据一致性,这是一个永恒的主题 多个线程执行逻辑顺序不同带来的影响 很多朋友把使用多线程工具看得比理解多线程思想重要,这可能并不是一个好的方式。 会用和用好之间还是有很多差别,例如下面的例子,就体现了在多线程编程中这些懵懵懂懂的感觉。 import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicBoolean; public class SendDataHelper { CopyOnWriteArrayList<String> msgPool = new CopyOnWriteArrayList

鸿蒙内核源码分析(源码结构篇) | 关于内核这些问题你知道多少?

佐手、 提交于 2021-01-19 15:59:20
鸿蒙内核源码注释中文版 【 Gitee仓 | CSDN仓 | Github仓 | Coding仓 】 项目中文注解鸿蒙官方内核源码,图文并茂,详细阐述鸿蒙架构和代码设计细节.每个码农,学职生涯,都应精读一遍内核源码.精读内核源码最大的好处是:将孤立知识点织成一张高浓度,高密度底层网,对计算机底层体系化理解形成永久记忆,从此高屋建瓴分析/解决问题. 鸿蒙源码分析系列篇 【 CSDN | OSCHINA | WIKI 】 从 HarmonyOS 架构层视角整理成文, 并首创用生活场景讲故事的方式试图去解构内核,一窥究竟。 kernel_liteos_a_note: 鸿蒙内核源码注释中文版 -> 点击目录和文件查看源码的详细中文注解 可以肯定是以下问题在一行行的源码中都能找到答案 kernel_liteos_a_notekernelbasecorelos_bitmap.c -> -> 位图管理器有什么作用 ? 在内核常应用于哪些场景 ? los_process.c -> 鸿蒙内核源码分析(进程管理篇) -> 进程是内核的资源管理单元,它是如何管理 任务, 内存,文件的 ? 进程间是如何协作的 ? los_sortlink.c -> -> 排序链表的实现,它的应用场景是怎样的 ? los_swtmr.c -> -> 内核的定时器是如何实现和管理的 ? los_sys.c -> ->

服务器性能指标——负载(Load)分析及问题排查

我们两清 提交于 2020-12-26 16:57:29
平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt等。每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常。大部分情况下,在问题发生之前,某些指标就会提前有异常显示。 对于这些指标的理解和查看、异常解决等,是程序员们重要的必备技能。本文,主要来介绍一下一个比较重要的指标——机器负载(Load),主要涉及负载的定义、查看负载方式、负载飙高排查思路等。 什么是负载 随着 Internet 的快速发展和业务量的不断提高,基于网络的数据访问流量迅速增长,特别是对数据 中心、大型企业以及门户网站等的访问,其访问流量甚至达到了 10Gb/s 的级别;同时,服务器网 站借助 HTTP、FTP、SMTP 等应用程序,为访问者提供了越来越丰富的内容和信息,服务器逐渐 被数据淹没;另外,大部分网站(尤其电子商务等网站)都需要提供不间断 24 小时服务,任何服 务中断或通信中的关键数据丢失都会造成直接的商业损失。所有这些都对应用服务提出了高性能和 高可靠性的需求,这些海量的访问数据均是负载。 查看机器负载 在Linux机器上,有多个命令都可以查看机器的负载信息。其中包括 uptime 、top、w 等。 uptime 命令 命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间

集合遍历remove时ConcurrentModificationException异常

大憨熊 提交于 2020-12-25 02:42:34
1.集合遍历时候,有时候需要remove或add操作,这时候 遍历方式 可能会影响程序运行   例如: @Test public void test1() { List <Integer> intList = new ArrayList<> (); for ( int i = 0; i < 20; i++ ) { intList.add(Integer.valueOf(i)); } // 迭代器遍历, 异常 Iterator<Integer> iterator_int = intList.iterator(); while (iterator_int.hasNext()) { Integer integer = iterator_int.next(); // ConcurrentModificationException if (integer.intValue() == 5) { // 这里选择集合靠中间的数据操作 // intList.remove(integer); //这里使用集合的remove方法 intList.add(55 ); } } // foreach遍历, 异常 for (Integer value : intList) { // ConcurrentModificationException if (value.intValue() == 5 ) {

15个有趣好玩的linux shell命令

拈花ヽ惹草 提交于 2020-12-23 00:30:21
今天介绍一些有趣的linux shell命令,所有的命令都可以使用 man + 命令名称 来查看完整的使用方法。 1,figlet 字符画 figlet 可以将 英文字符串 以 字符画 的形式输出: >>> figlet hello _ _ _ | |__ ___| | | ___ | '_ \ / _ \ | |/ _ \ | | | | __/ | | (_) | |_| |_|\___|_|_|\___/ 2,toilet 字符画 toilet 的功能跟 figlet 类似,但输出的字符画的样子不一样,该命令还可以设置字体和颜色。 >>> toilet hi # " # mm mmm #" # # # # # # # mm#mm 3,lolcat 字符画加彩色 lolcat 命令可以将 figlet 或 toilet 的输出加上颜色: toilet hello| lolcat 输出如下: 4,aafire 火焰 aafire 命令输出由 ASCII码 组成的火焰状的字符,屏幕燃烧起来: >>> aafire 5,fortune 随机句子 fortune 命令随机输出名言或笑话: >>> fortune Soap and education are not as sudden as a massacre, but they are more deadly in the long