Gym 101466 部分题解

Codeforces Gym 101466 - 2017 ACM-ICPC, Universidad Nacional de Colombia Programming Contest A. Gaby And Addition time limit per test 6.0 s memory limit per test 1024 MB input standard input output standard output Gaby is a little baby who loves playing with num 阅读详情

题目链接

纪念一下和库里布莱恩特的这场菜鸡互啄。

3星Gym,一共做出来7个题。感觉最大的收获就是意识到了二分的重要性,还有就是学习到了一种新的排序方法——计数排序(好像又叫桶排序)。下面根据题的难度从简到难记录一下。

H题:

按照题意打印即可。

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<cstdlib>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define ll long long
#define ull unsigned long long
#define mem(a,x) memset((a),(x),sizeof ((a)))//x只能是0或-1或false或true
#define debug(x) cout<<"X: "<<(x)<<endl
#define de cout<<"************"<<endl
#define lowbit(x) ((x)&(-x))
#define lson rt<<1
#define rson rt<<1|1
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) a*b/(__gcd(a,b))
#define inf 0x3f3f3f3f//1e9+6e7
#define eps 1e-8
#define mod 1e9+7
#define N 100010
const double pi=acos(-1.0);
using namespace std;

int main()
{
    int n;
    cin>>n;
    rep(i,1,n)
    {
        if(i==1)
        {
            cout<<"*";
            rep(j,1,n-2)
                cout<<" ";
            cout<<"* ";
            rep(j,1,n)
                cout<<"*";
            cout<<endl;
            continue;
        }
        if(i==n)
        {
            rep(j,1,n)
                cout<<"*";
            cout<<" *";
            rep(j,1,n-2)
                cout<<" ";
            cout<<"*";
            continue;
        }
        cout<<"*";
        rep(j,1,n-2)
            cout<<" ";
        cout<<"*";
        cout<<" *";
        rep(j,1,n-2)
            cout<<" ";
        cout<<"*"<<endl;
    }
    return 0;
}

D题:

说是有两种机器A和B,对于A:输入x,返回2*x+1;对于B,输入x,返回2*x+2。开始有0个,要得到n个,问应该怎样使用机器。

只需要判断n的奇偶性就性了,如果n为奇数,用A,否则用B,一直判断,直到n为0,然后倒序输出即可。

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<cstdlib>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define repp(i,n,a) for(int i=n;i>=a;i--)
#define ll long long
#define ull unsigned long long
#define mem(a,x) memset((a),(x),sizeof ((a)))//x只能是0或-1或false或true
#define debug(x) cout<<"X: "<<(x)<<endl
#define de cout<<"************"<<endl
#define lowbit(x) ((x)&(-x))
#define lson rt<<1
#define rson rt<<1|1
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) a*b/(__gcd(a,b))
#define inf 0x3f3f3f3f//1e9+6e7
#define eps 1e-8
#define mod 1e9+7
#define N 100010
const double pi=acos(-1.0);
using namespace std;
char ans[1000010];
int main()
{
    ll n;
    cin>>n;
    mem(ans,0);
    int k=0;
    while(n)
    {
        if(n%2==0)
        {
            ans[k]='B';
            k++;
            n=(n-2)/2;
        }
        else
        {
            ans[k]='A';
            k++;
            n=(n-1)/2;
        }
    }
    repp(i,k-1,0)
    cout<<ans[i];
    return 0;
}

 B题:

有一棵树,给你n个数,a[i]表示某一层的每个节点都可以有a[i]个子节点,问这颗树最多有多少个节点。猜都能猜出来,让深度越浅的层数有越多的节点。

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<cstdlib>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define ll long long
#define ull unsigned long long
#define mem(a,x) memset((a),(x),sizeof ((a)))//x只能是0或-1或false或true
#define debug(x) cout<<"X: "<<(x)<<endl
#define de cout<<"************"<<endl
#define lowbit(x) ((x)&(-x))
#define lson rt<<1
#define rson rt<<1|1
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) a*b/(__gcd(a,b))
#define inf 0x3f3f3f3f//1e9+6e7
#define eps 1e-8
#define mod 1e9+7
#define N 100010
const double pi=acos(-1.0);
using namespace std;
int a[40];
bool cmp(int a1,int a2)
{
    return a1>a2;
}
int main()
{
    int n;
    cin>>n;
    rep(i,0,n-1)
    cin>>a[i];
    sort(a,a+n,cmp);
    ll ans=1;
    ll cnt=1;
    rep(i,0,n-1)
    {
        ans+=(cnt*a[i]);
        cnt=cnt*a[i];
    }
    cout<<ans;
    return 0;
}

 C题:

在三维平面里,给你n个点的坐标,第一个点表示地球,其余n-1个点表示其他行星,问从其他n-1个行星到地球连线,共能产生多少条不同的直线。只需要算出向量坐标然后比较即可。比如两个向量,判断其是否共线,假设这两个个向量分别为(x1,y1,z2),(x2,y2,z2),如果满足x1/x2==y1/y2&&x1/x2==z1/z2,则共线,否则不共线。但是,需要注意的是,坐标可能有0,0不能做除数,所以要转化成乘法来做,及判断x1*y2==y2*x2&&x1*z2==z1*x2&&y2*z1==z2*y1是否成立。

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<cstdlib>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define ll long long
#define ull unsigned long long
#define mem(a,x) memset((a),(x),sizeof ((a)))//x只能是0或-1或false或true
#define debug(x) cout<<"X: "<<(x)<<endl
#define de cout<<"************"<<endl
#define lowbit(x) ((x)&(-x))
#define lson rt<<1
#define rson rt<<1|1
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) a*b/(__gcd(a,b))
#define inf 0x3f3f3f3f//1e9+6e7
#define eps 1e-8
#define mod 1e9+7
#define N 100010
const double pi=acos(-1.0);
using namespace std;
struct node{
    int x1,y1,z1;
    int x2,y2,z2;
}a[5010];
int vis[5010];
int main()
{
    int n;
    cin>>n;
    int x,y,z;
    cin>>x>>y>>z;
    rep(i,0,n-2)
    {
        cin>>a[i].x1>>a[i].y1>>a[i].z1;
        a[i].x2=x-a[i].x1;
        a[i].y2=y-a[i].y1;
        a[i].z2=z-a[i].z1;
    }
    mem(vis,0);
    int cnt=0;
    rep(i,0,n-2)
    {
        if(vis[i])
            continue;
        vis[i]=1;
        cnt++;
        rep(j,0,n-2)
            if(a[i].x2*a[j].y2==a[i].y2*a[j].x2&&a[i].x2*a[j].z2==a[i].z2*a[j].x2&&a[i].z2*a[j].y2==a[i].y2*a[j].z2)
                vis[j]=1;
    }
    cout<<cnt;
    return 0;
}

F题:

猜的题意,因为我看好几个人都一发过了,然后我感觉题应该很简单,然后就猜了一下,码了一下,交了一发,过了......

判断n个“三角形”是不是都能构成三角形,如果存在不能构成三角形的三角形,输出NO,否则输出YES。

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<cstdlib>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define ll long long
#define ull unsigned long long
#define mem(a,x) memset((a),(x),sizeof ((a)))//x只能是0或-1或false或true
#define debug(x) cout<<"X: "<<(x)<<endl
#define de cout<<"************"<<endl
#define lowbit(x) ((x)&(-x))
#define lson rt<<1
#define rson rt<<1|1
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) a*b/(__gcd(a,b))
#define inf 0x3f3f3f3f//1e9+6e7
#define eps 1e-8
#define mod 1e9+7
#define N 100010
const double pi=acos(-1.0);
using namespace std;
struct node{
    int x,y,z;
}a[100010];
int main()
{
    int n;
    cin>>n;
    int xx,yy,zz;
    int f=0;
    rep(i,0,n-1)
    {
        scanf("%d%d%d",&xx,&yy,&zz);
        a[i].x=max(max(xx,yy),zz);
        a[i].z=min(min(xx,yy),zz);
        a[i].y=xx+yy+zz-a[i].x-a[i].z;
    }
    rep(i,0,n-1)
    {
        if(a[i].z+a[i].y>a[i].x)
            continue;
        else
            {f++;break;}
    }
    if(f)
        cout<<"NO";
    else
        cout<<"YES";
    return 0;
}

 

E题:

给你两个字符串A和B,再给你一个整数n,让你输出B在A中出现次数大于等于n次的最长前缀串,如果不存在输出impossible。

首先需要知道,如果B的长度为i的前缀串在A中出现的次数不足n次,那么B中长度为i+1的前缀串在A中出现的次数一定也不足n次。并且我们可以在O(n+m)时间范围内判断一个长度为m的模式串在一个长度为n的主串中出现的次数(直接套模板)。如果我们对模式串的长度从1到strlen(B)枚举的话,时间复杂度为1e5*1e5,会超时,所以我们可以用二分,二分模式串的长度。

二分真的很重要啊,当算法超时的时候一定要想想二分啊!

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<cstdlib>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define ll long long
#define ull unsigned long long
#define mem(a,x) memset((a),(x),sizeof ((a)))//x只能是0或-1或false或true
#define debug(x) cout<<"X: "<<(x)<<endl
#define de cout<<"************"<<endl
#define lowbit(x) ((x)&(-x))
#define lson rt<<1
#define rson rt<<1|1
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) a*b/(__gcd(a,b))
#define inf 0x3f3f3f3f//1e9+6e7
#define eps 1e-8
#define mod 1e9+7
#define N 100010
const double pi=acos(-1.0);
using namespace std;
char S[100010];
char TT[100010];
char T[100010];
int slen,tlen,ttlen;
char ans[100010];
int nxt[100010];
void getNext()
{
    int i,j;
    i=0;j=-1;nxt[0]=-1;
    while(i<tlen)
    {
        if(j==-1||T[i]==T[j])
            nxt[++i]=++j;
        else
            j=nxt[j];
    }
}
int KMP_Count()
{
    int ret=0;
    int i,j=0;
    if(slen==1&&tlen==1)
    {
        if(S[0]==T[0])
            return 1;
        else
            return 0;
    }
    getNext();
    for(i=0;i<slen;i++)
    {
        while(j>0&&S[i]!=T[j])
            j=nxt[j];
        if(S[i]==T[j])
            j++;
        if(j==tlen)
        {
            ret++;
            //j=i+1;  //如果求主串中包含几个模式串 j=i+1
            j=nxt[j];//如果求模式串在主串中出现的次数 j=nxt[j]
        }
    }
    return ret;
}
int main()
{
    gets(S);
    gets(TT);
    int k;
    cin>>k;
    ttlen=strlen(TT);
    slen=strlen(S);
    int f=0;
    ans[0]='!';
    int l=1,r=ttlen;
    while(l<=r)
    {
        int mid=(l+r)/2;
        rep(j,0,mid-1)
            T[j]=TT[j];
        T[mid]='\0';
        tlen=mid;
        if(KMP_Count()<k)   //KMP_Count()返回模式串T在主串S中出现的次数
            r=mid-1;
        else
            {strcpy(ans,T);l=mid+1;}
    }
    if(ans[0]=='!')
        cout<<"IMPOSSIBLE";
    else
        cout<<ans;
    return 0;
}

 J题:

某人想写出n个数,但是当他写完m(m<n)个数时,他不想写了,要直接构造出来n-m个数,构造公式:a[i]=(a[i-m]+a[i-m+1])%3e7。然后进行k次询问,每次询问给出一个数b[i],问将上面n个数排好序后,第b[i]个数是多少。

这个题有两种方法可以做,一种是计数排序(桶排序),另一种是思维......实际上和计数排序差不多。

1、计数排序

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<cstdlib>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define repp(i,n,a) for(int i=n;i>=a;i--)
#define ll long long
#define ull unsigned long long
#define mem(a,x) memset((a),(x),sizeof ((a)))//x只能是0或-1或false或true
#define debug(x) cout<<"X: "<<(x)<<endl
#define de cout<<"************"<<endl
#define lowbit(x) ((x)&(-x))
#define lson rt<<1
#define rson rt<<1|1
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) a*b/(__gcd(a,b))
#define inf 0x3f3f3f3f//1e9+6e7
#define eps 1e-8
#define mod 1e9+7
#define N 100010
const double pi=acos(-1.0);
using namespace std;
int a[30000010];
int b[30000010];
int c[10000010];
int main()
{
    int n,m,q;
    cin>>n>>m>>q;
    int maxx=-10;
    mem(b,0);
    rep(i,1,m)
    {
        scanf("%d",&a[i]);
        maxx=max(maxx,a[i]);
        b[a[i]]++;
    }
    rep(i,m+1,n)
    {
        a[i]=(a[i-m]+a[i-m+1])%30000000;
        maxx=max(maxx,a[i]);
        b[a[i]]++;  //b[i]表示i出现的次数
    }
    int k=1;
    //计数排序
    rep(i,0,maxx)
    {
        rep(j,1,b[i])
            {c[k]=i;k++;}   //数组c即为将a数组排好序的结果
    }
    int x;
    while(q--)
    {
        scanf("%d",&x);
        cout<<c[x]<<endl;
    }
    return 0;
}

2、思维,实际上都差不多。 

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<cstdlib>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define repp(i,n,a) for(int i=n;i>=a;i--)
#define ll long long
#define ull unsigned long long
#define mem(a,x) memset((a),(x),sizeof ((a)))//x只能是0或-1或false或true
#define debug(x) cout<<"X: "<<(x)<<endl
#define de cout<<"************"<<endl
#define lowbit(x) ((x)&(-x))
#define lson rt<<1
#define rson rt<<1|1
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) a*b/(__gcd(a,b))
#define inf 0x3f3f3f3f//1e9+6e7
#define eps 1e-8
#define mod 1e9+7
#define N 100010
const double pi=acos(-1.0);
using namespace std;
int a[30000010];
int b[30000010];
int main()
{
    int n,m,q;
    cin>>n>>m>>q;
    mem(b,0);
    rep(i,1,m)
        {scanf("%d",&a[i]);b[a[i]]++;}
    rep(i,m+1,n)
    {
        a[i]=(a[i-m]+a[i-m+1])%30000000;
        b[a[i]]++;
    }
    rep(i,1,30000000)
        b[i]=b[i]+b[i-1];
    int x;
    while(q--)
    {
        scanf("%d",&x);
        int l=0,r=30000000;
        while(l<=r)
        {
            int mid=(l+r)/2;
            if(b[mid]>=x&&b[mid-1]<x)
                {cout<<mid<<endl;break;}
            if(b[mid]<x)
                l=mid+1;
            else
                r=mid-1;
        }
    }
    return 0;
}

其他的暂时不会了,慢慢补吧......

【Gym 102893 L】The Firm Knapsack Problem (贪心)(csdn)————程序..pdf 【Gym 102893 L】The Firm Knapsack Problem (贪心)(csdn)————程序. 立即下载

相关推荐

Qt+VS集成高德红外相机SDK与OpenCV的采图实践

本文详细介绍了在Qt和Visual Studio环境中集成高德红外相机SDK与OpenCV的完整实践方案。涵盖环境配置、SDK初始化、图像采集与处理、多线程优化等关键技术点,重点解决了高德红外相机数据转换、温度信息提取和Qt界面显示优化等核心问题,为红外图像处理应用开发提供可靠参考。

palm99的专栏 645

gym101164I(搜索+剪枝)

题目链接 Problem I Cubes Write a program that takes a natural number N and decomposes it as a sum of the minimum number ofexact natural cubes. The program should find m1, m2, ..

fouzhe的博客 644

关于三维全波电磁场仿真软件CST的安装和问题解决

百度网盘链接:https://pan.baidu.com/s/1RgWr8Qau1EzSOlh29SewFQ提取码:fzza这里是2023版本的CST,需要其他版本的uu们可以去官网或者其他人的网盘下载。

weixin_60728441的博客 3617

GYM 100030 I.Prohibition(贪心)

Description 求树的最小支配集 Input 第一行一整数n表示点数,之后n-1行每行两个整数u,v表示树上一条边(1<=n<=200) Output 输出n个0或1,1表示该点被属于支配集 Sample Input 3 1 2 2 3 Sample Output 0 1 0 Solution 贪心,对于每个节点,看其儿子节点是否存在未被支配的节点,如果有则该点必须

ZSQ 562

NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()

Please use torch.nn.Module.to_empty() instead of torch.nn.Module.to()输出(llama) (base) [root@localhost home]# nvidia-smi Unable to determine the device handle for GPU0000:09:00.0: Unknown Error。这是典型的“孤儿进程”,但它还是。(僵尸进程),占用 GPU 资源。如果进程仍然不消失,并且。,这意味着它的父进程是。

m0_61636632的博客 2096

Spring Boot整合AWS S3文件上传实战:从配置到权限管理全流程解析

本文详细解析了Spring Boot整合AWS S3文件上传的全流程,包括基础配置、核心上传功能实现、高级权限控制及安全最佳实践。通过实战案例展示如何高效处理文件上传、大文件分片及权限管理,帮助开发者构建健壮的文件管理系统。特别强调AWS S3的高可用性和安全性,适用于企业级应用开发。

sam99的博客 283

Gym - 100451J - 贪心

题目链接:https://vjudge.net/problem/Gym-100451J   解题思路: 明显每一步花费的时间不会超过t+1,那么我们先按照这个规则先放满n个数进去,也就是如果第一个周期的数超过t+1时换到第2个周期。。。,但是这样并不是最优解,因为虽然最大值不会超过t+1,但也不说明它会趋近于t+1,这时我们就要找它真正的趋近值,如果我们现在要在已经放满n个里面再放进下一个周...

过路人丶的博客 308

Steger算法(Line_Gauss)-光条中心线提取(基于Hessian矩阵)

Steger算法(Line_Gauss)-光条中心线提取(基于Hessian矩阵)算法背景介绍Hessian 矩阵与泰勒多项式关于求t导数与中心点、亚像素点高斯函数作用文献 算法背景介绍 在线结构光视觉传感器中,由线激光器发射出的线结构光,在本质上为一个连续且具有一定厚度的空间光平面,而在目标表面上所形成的具有一定宽度的光条特征,即为该光平面与目标表面相交而成的交线。在该空间光平面的厚度方向上,光强近似服从高斯分布,因而在摄像机采集到的光条图像中,在沿着光条宽度的方向或光条的法线方向上,其灰度也会呈现出类似

jiangxing11的博客 1万+

Gym - 101669部分题题解

A - Concerts(动规) 题意是给你一个子串b和一个主串a,问在满足条件下a串可以有多少种b的规划方式。 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 100; const int mod = 1e9 + 7; ll f[2][N]; int k, n; int num[30]; char a[10010], b[N]; int ma

qq_47783181的博客 451

Java开发者终极抉择:IntelliJ IDEA vs VS Code —— 4大维度深度对比评测

🔥关注墨瑾轩,带你探索Java的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手!🚀🔥技术宝库已备好,就等你来挖掘!🚀🔥订阅墨瑾轩,智趣学习不孤单!🚀🔥即刻启航,编程之旅更有趣!🚀在Java开发领域,选择合适的集成开发环境(IDE)对于提高开发效率和代码质量至关重要。和(简称VS Code)是两个广受好评的开发工具,各自拥有独特的特性和庞大的用户群。本篇将从多个维度深入探讨这两款IDE对Java开发者来说的优劣,包括但不限于性能、用户体验、生态系统、调试能力、以及特定Java功能的支持等方面。

java专栏 8591

Linux系列:SecurtCRT中的密码如何找回

【代码】Linux系列:SecurtCRT中的密码如何找回。

NIO4444 1088

Logo 2017ACM-ICPCUniversidadNacionaldeColombiaProgrammingContest/Gym101466H

Logo 2017ACM-ICPCUniversidadNacionaldeColombiaProgrammingContest/Gym101466H

l_mark的博客 731

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

使用gym模拟强化学习环境

参考链接: OpenAI环境库官网:https://gym.openai.com/envs/ OpenAI环境库github:https://github.com/openai/gym/ Classic control CartPole 环境描述:运载体无摩擦地支撑杆子。 动作:2个动作:施加-1和+1分别对应向左向右推动运载体 状态:4个,x:位置;x_dot:移动速度, th...

winycg的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Gym库入门

导入Gym库之后,可以通过make()函数来得到环境对象,每个环境都有一个ID,格式"Xxxx-vd",d表示版本号,例如: env = gym.make('CartPole-v0') 查看Gym库已经注册了哪些环境 from gym import envs env_specs = envs.registry.all() env_ids = [env_spec.id for env_s...

formikoyan的博客 5815

Gym 101466(完整)

题目链接 : 点击此处 ## Problem A 题意:   给你n个数,重定义两个数之间的加法不进位,求这些数中两个数相加的最大值和最小值。 题解: 字典树。我们首先将前i-1为放入字典树中,然后在查询第i位时,我们去字典树中查询,对每一位进行寻找,找到满足题意的当前位的最大值和最小值,然后继续更新下一位,最后维护总的最大值和最小值即可。 ...

weixin_30293135的博客 325

csust-8.12组队训练- Gym - 101466

目录 A - Gaby And Addition B - Maximum Tree C - Planet Communcation D - Double it E - Text Editor F - Polygon Triangles G - Generative Model H - Logo I - Math Class J - Jeronimo's List K -...

孤风的博客 640

Gym - 101652 部分题解

题目链接1题目链接2 又是一场和库里布莱恩特的菜鸡互啄,这次还是三星gym,还是两个人一起做,比上次还惨,才6个题。 这场的题感觉很简单,就是有点坑,第二题是多组输入但题里并没有说,骰子那题也是大水题,就是题意难懂,机器人那题也是题目简单,但题意难懂。分块除法,新知识点。BR那题,转化,然后求最大子段和,没想到。还有就是二分,二分真的太好用了。 Gym - 101652ZForbid...

flyzer的博客 627

C - Third-Party Software Gym - 101755C 国外区域赛 【贪心】

Pavel is developing a game. To do that, he needs functions available in a third-party library too famous to be called. It is known that the function i first appeared in version ai and existed until ve...

weixin_41544329的博客 341

贪心加二分

贪心加二分 题目 K - Video Reviews Gym - 101755K 最少需要m个,二分可以加快速度,假设可以说服m/2个人就可以,如果不行,说明要说服的人在m/2-m之间,如果可以吧m/2当做m在进行操作 #include <iostream> #include <algorithm> #include <cstdio> #include <...

qq_44149604的博客 296

Gym - 102141D 通项公式 最短路

题目很长,但是意思就是给你n,A,B,C,D n表示有n个城市 A是飞机的重量 B是一个常数表示转机代价 C是单位燃油的价格 D是一个常数 假设一个点到另外一个点的距离为整数L 起飞前的油量为f 则在这途中每飞行一单位距离 就花费(f+A)/D的燃油 #include <bits/stdc++.h> typedef long long ll; typede...

baichuan9723的博客 202

Gym 101466K 树状数组+时间戳

题目链接 题意: 有一颗根为0的树,每个顶点都有一个权值,有两种操作。 SEED u x 节点u的权值乘上x RAND u 输出以节点u为根的子树的节点权值的乘积 思路: 每个权值很大,乘积会超出整数范围,考虑使用,质数指数表示法,分解质因数。 乘积就是各个质因数指数的加和。 使用dfs访问一边树,对于某个子树来说,dfs访问的时间戳是连续的,起点是子树的根。要求得乘积也就是去求某个连续的区...

weixin_30482383的博客 226

Sheldon Numbers Gym - 101128H 构造题,规律

题意:A代表N个1,B代表M个0,条件是一个数的二进制满足 ABAB...A 或者 ABAB...AB ,可以不含有B,但至少有一个A,求给定L 和 R之间有多少个满足条件的数字。 思路: 数据的范围是0到2^63次方,对1到63长度的数字进行构造。 注意点: pow返回值要进行强制转换!!!! #include #include #include #inclu

Peppermint__的博客 506

Gym - 101480I[思维题乱搞]

题目链接:https://vjudge.net/problem/Gym-101480I 解题思路: 首先题目保证圆不会相交,而且圆的半径都是小于1的所以给定一个圆只会有四个单元格包含它,并且线段经过单元也不会超过n+m<=500+500<=1000. 所以对于每个线段,去暴力它经过的每个单元格,然后在询问与该单元格相交的圆是否与线段的距离小于等于r,如果满足条件还要讲该圆标记...

过路人丶的博客 361

Gym - 101652S E - Purple Rain (贪心)

原题地址:http://codeforces.com/gym/101652/attachments 题意:给出一串只包含'B','R'的字符串,让你找出一段区间使得在这段区间里面'R'和'B'的数量之差最大. 思路;分两种情况考虑,一种是确定R比B多的情况下的最大差值.一种是B比R多的情况下的最大差值.然后取一个最值.至于判断,我们可以进行O(n)的扫一遍,确定最大差值以及区间范围. 具体看...

yiqzq的博客 877

Gym - 100283K K. Cubes Shuffling —— 贪心

题目链接:http://codeforces.com/gym/100283/problem/K 题解: 要使其相邻两项的差值之和最小,那么越靠中间,其数值越小。 那么剩下的问题就是如何放数字了。一开始的想法是从中间开始放,然后:左右左右……, 后来发现当为偶数个时,这种放法的字典序并非最小,应该右左右左地放。所以从中间向两边扩散的放法需要分奇偶讨论...

weixin_30341745的博客 180
上一篇: L2-013 红色警报 (25 分) 并查集判连通块
下一篇: Trie树 字典树
flyzer
博客等级 码龄9年 27粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值