题目链接:https://cn.vjudge.net/problem/CodeForces-892A

Jafar has n cans of cola. Each can is described by two integers: remaining volume of cola ai and can's capacity bi (ai  ≤  bi).

Jafar has decided to pour all remaining cola into just 2 cans, determine if he can do this or not!

Input

The first line of the input contains one integer n (2 ≤ n ≤ 100 000) — number of cola cans.

The second line contains n space-separated integers a1, a2, ..., an (0 ≤ ai ≤ 109) — volume of remaining cola in cans.

The third line contains n space-separated integers that b1, b2, ..., bn (ai ≤ bi ≤ 109) — capacities of the cans.

Output

Print "YES" (without quotes) if it is possible to pour all remaining cola in 2 cans. Otherwise print "NO" (without quotes).

You can print each letter in any case (upper or lower).

Example

Input
2
3 5
3 6
Output
YES
Input
3
6 8 9
6 10 12
Output
NO
Input
5
0 0 5 0 0
1 1 8 10 5
Output
YES
Input
4
4 1 0 3
5 2 2 3
Output
YES

贼JR的水,根本不需要题解……

只是想贴一个记录一下O(n)得到数组内最大和次大的for循环代码,免得以后什么时候脑抽忘记了下不出来僵掉了……

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int n;
int main()
{
scanf("%d",&n);
LL sum=;
for(int i=,tmp;i<=n;i++)
{
scanf("%d",&tmp);
sum+=tmp;
}
LL max1=-,max2=-;
for(int i=,tmp;i<=n;i++)
{
scanf("%d",&tmp);
if(max2<=max1 && max1<=tmp) max2=max1,max1=tmp;
else if(max2<tmp && tmp<=max1) max2=tmp;
}
if(max1+max2 >= sum) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}

————————————————————————————————————————————————————————————————

题目链接:https://cn.vjudge.net/problem/CodeForces-892B

Hands that shed innocent blood!

There are n guilty people in a line, the i-th of them holds a claw with length Li. The bell rings and every person kills some of people in front of him. All people kill others at the same time. Namely, the i-th person kills the j-th person if and only if j < i and j ≥ i - Li.

You are given lengths of the claws. You need to find the total number of alive people after the bell rings.

Input

The first line contains one integer n (1 ≤ n ≤ 106) — the number of guilty people.

Second line contains n space-separated integers L1, L2, ..., Ln (0 ≤ Li ≤ 109), where Li is the length of the i-th person's claw.

Output

Print one integer — the total number of alive people after the bell rings.

Example

Input
4
0 1 0 10
Output
1
Input
2
0 0
Output
2
Input
10
1 1 3 0 0 0 2 1 0 3
Output
3

题意:

对于一排人,第i个人有长度为L[i]的爪子,他会杀死所有第j个人,其中j满足 i - L[i] <= j 且 j < i ;

求最后存活下来的有几个人;

题解:

一看n的范围,最大到1e6,看来只能用O(n)的做法;

那么,考虑从后往前遍历,对于第i个人会不会被杀掉:

我们用mini来维护所有 i+1 ~ n 的人会杀掉的最前面的人是哪个,也就是所有 i+1 ~ n 的人的 i - L[i] 最小值;

那么,如果i >= mini,那么第i个人会被干掉;

这样一来,就能O(n)的得到被杀的人数了;

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
int n,L[+];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&L[i]);
int mini=INF,cnt=;
for(int i=n;i>=;i--)
{
if(i>=mini) cnt++;
mini=min(mini,i-L[i]);
}
cout<<n-cnt<<endl;
}

————————————————————————————————————————————————————————————————

题目链接:https://cn.vjudge.net/problem/CodeForces-892C

You have an array a with length n, you can perform operations. Each operation is like this: choose two adjacent elements from a, say x and y, and replace one of them with gcd(x, y), where gcd denotes the greatest common divisor.

What is the minimum number of operations you need to make all of the elements equal to 1?

Input

The first line of the input contains one integer n (1 ≤ n ≤ 2000) — the number of elements in the array.

The second line contains n space separated integers a1, a2, ..., an (1 ≤ ai ≤ 109) — the elements of the array.

Output

Print -1, if it is impossible to turn all numbers to 1. Otherwise, print the minimum number of operations needed to make all numbers equal to 1.

Example

Input
5
2 2 3 4 6
Output
5
Input
4
2 4 6 8
Output
-1
Input
3
2 6 9
Output
4

Note

In the first sample you can turn all numbers to 1 using the following 5 moves:

  • [2, 2, 3, 4, 6].
  • [2, 1, 3, 4, 6]
  • [2, 1, 3, 1, 6]
  • [2, 1, 1, 1, 6]
  • [1, 1, 1, 1, 6]
  • [1, 1, 1, 1, 1]

We can prove that in this case it is not possible to make all numbers one using less than 5 moves.

题意:

题解:

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
int n;
vector<int> a;
int gcd(int a,int b){return b==?a:gcd(b,a%b);}
int main()
{
scanf("%d",&n);
int cnt_1=;
for(int i=,tmp;i<=n;i++)
{
scanf("%d",&tmp);
a.push_back(tmp);
if(tmp==) cnt_1++;
} if(cnt_1>)
{
cout<<n-cnt_1<<endl;
return ;
} if(n== && a[]!=)
{
cout<<"-1"<<endl;
return ;
} int cnt=,ok=;
vector<int> tmp;
while()
{
cnt++;
tmp.clear();
for(int i=;i<a.size()-;i++)
{
if(gcd(a[i],a[i+])==)
{
ok=;
break;
}
tmp.push_back(gcd(a[i],a[i+]));
} if(ok)
{
cout<<cnt+n-<<endl;
return ;
} if(tmp.size()== && tmp[]!=)
{
cout<<"-1"<<endl;
return ;
} a.clear();
for(int i=;i<tmp.size();i++) a.push_back(tmp[i]);
}
}

codeforces 892 - A/B/C的更多相关文章

  1. Codeforces 892 C.Pride

    C. Pride time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  2. Codeforces 892 D.Gluttony

    D. Gluttony time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  3. Codeforces 892 B.Wrath

    B. Wrath time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  4. Codeforces 892 A.Greed

    A. Greed time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  5. codeforces #446 892A Greed 892B Wrath 892C Pride 891B Gluttony

    A  链接:http://codeforces.com/problemset/problem/892/A 签到 #include <iostream> #include <algor ...

  6. [CodeForces 892A] Greed (Java中sort实现从大到小排序)

    题目链接:http://codeforces.com/problemset/problem/892/A 具体的Java 中 sort实现降序排序:https://www.cnblogs.com/you ...

  7. Codeforces 892C/D

    C. Pride 传送门:http://codeforces.com/contest/892/problem/C 本题是一个关于序列的数学问题——最大公约数(GCD). 对于一个长度为n的序列A={a ...

  8. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  9. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

随机推荐

  1. PHP基本连接数据库

    最简单的代码 connect.php <?php $host="localhost"; $db_user="root"; $db_pass="& ...

  2. SPREAD for Windows Forms 下箭头追加行

    ''' <summary> ''' 下矢印の動作クラス ''' </summary> ''' <remarks></remarks> Public Cl ...

  3. LeetCode_Maximum Subarray | Maximum Product Subarray

    Maximum Subarray 一.题目描写叙述 就是求一个数组的最大子序列 二.思路及代码 首先我们想到暴力破解 public class Solution { public int maxSub ...

  4. 如何构建日均千万PV Web站点 (三) Sharding

    其实国内许多大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线,比如说国内那些大型购物交易网站它们都将自己的网站首页.商铺.订单.买家.卖家等拆分不同的产品线,分 ...

  5. 如何将一个项目打成war包?

    如何将一个项目打成war包?进入该项目所在目录jar  -cvf  myProjec.war  myProject

  6. Java网络编程之查找Internet地址

    一.概述 连接到Internet上计算机都有一个称为Internet地址或IP地址的唯一的数来标识.由于IP很难记住,人们设计了域名系统(DNS),DNS可以将人们可以记忆的主机名与计算机可以记忆的I ...

  7. linux源码编译安装php出现 cannot find -lltdl

    原因: 在编辑php时添加的“–with-mcrypt”选项造成. 解决方法: 1.如果不需要mcrypt,那么编辑php时去掉该选项,然后再make.make install. 2.如果需要mcry ...

  8. Qt5 教程

    序 Qt 前言 Hello, world! 信号槽 自定义信号槽 Qt 模块简介 MainWindow 简介 添加动作 资源文件 对象模型 布局管理器 菜单栏.工具栏和状态栏 对话框简介 对话框数据传 ...

  9. 日记整理---->2016-11-21

    2016-11-21简单的总结一下学到的知识点.作为一个目标而存在的东西,总是那么美丽而优雅. 一.PE中事务的编写 getTransactionTemplate().execute(new Tran ...

  10. css案例 - 评分效果的星星✨外衣

    纳尼?什么星星外衣?好,直接上图比较能说清楚: 仔细看会发现规律:可以根据百分比/分值动态改变高亮星星的个数. 分步骤图: 这种效果,如果遇到一分一个星,没有半星(或者有也可以,直接加一个半星的类名) ...