周赛和cf补题

两天的卡..

周赛a题:

主要思路:在n个团队中如果隔一个做一个可以坐下那么说明可以坐下,但是在出现1的时候可以坐在空开的那个位置上特殊判断一下。

#include
#include
#include
#include
#include
#include
typedef long long ll;
using namespace std;
ll n,l;
ll a[200005];
int main(){
    cin>>n>>l;
    for(int i=0;i>a[i];
    ll t=0,f=0;
    for(int i=0;i

cf原题链接:Problem - D - Codeforces

主要思路:找可以变选择的范围。在升序段中找最小的两个然后取中间值,如果都减去这个中间值也还是升序段,在降序段中找最大的两个数取中间值,所有数减去这个中间值就会变成最小值。最后再确定能不能有值是要判断这两个范围是否有交集。有就输出,没有就没有这样的值。

#include
#include
#include
#include
#include
#include
#include
typedef long long ll;
using namespace std;
ll a[200005];
int main(){
    ll t,n;
    cin>>t;
    while(t--){
        cin>>n;
        ll jd=1e9,jx=0;
        cin>>a[0];
        for(int i=1;i>a[i];
            if(a[i]>a[i-1]){
                y=(a[i]+a[i-1])/2;
            }
            if(a[i]

你可能感兴趣的:(c++,算法,c语言)