【FJNUMCS暑假集训周赛#1】

本文解析了跑跑卡丁车系列算法题,包括游戏下载、登入密码优化、合成齿轮的最大数量及排车位方案数目的计算等问题。通过具体示例介绍了排序、二分查找、动态规划等算法的应用。

2016年暑假集训周赛#1

Problem A: 跑跑卡丁车系列之游戏下载

Time Limit: 1000 MS Memory Limit: 257792 KB
64-bit interger IO format: %lld Java class name: Main

某天,金斌在实验室玩跑跑卡丁车,众多群巨也一起加入其中。蛋蛋发现这是一个虐爆群巨的好机会,所以他也准备去下载游戏了!

但是由于不可抗力的原因,113的网速灰常快(man),所以每个群巨都有一个ai值。如果群巨当前网速小于这个值,那么群巨就会小情绪!!!

现在给出当前网速x,问有多少人没有小情绪。(假设:每个人都是x)

Input

测试数据有多组,每组输入一个N ( N <= 1e8 ),下一行输入N个数 ,表示每个人的ai值 ( ai < 1000)。接着输入一个Q( 1<= Q <=1e5),表示有Q个询问。每个询问输出一个数字。

Output

对于每个询问输出,在当前状态下,有多少人没有小情绪。

Sample Input

6
1 2 3 4 5 6
3
2
3
7

Sample Output

2
3
6

第一题没啥好用算法的,直接使用stl的upper_bound来求出大于等于这个数的下标。不过要先把数组排好序。

#include "iostream"
#include "string.h"
#include "algorithm"

using namespace std;

const int maxn = 100000+5;

int num[maxn];
int m;
int qus;
int ans;

int main(){
    int n;
    while(~scanf("%d",&n)){
        for( int i=0 ; i<n ; i++ ){
            scanf("%d",&num[i]);
         }
         sort(num,num+n);
         scanf("%d",&m);
         while(m--){
            scanf("%d",&qus);
            ans = upper_bound(num,num+n,qus)-num;
            printf("%d\n",ans);
         }
     }
    return 0; 
 }

Problem C: 跑跑卡丁车系列之登入密码——v2.0

Time Limit: 2000 MS Memory Limit: 128896 KB
64-bit interger IO format: %lld Java class name: Main
经过很长一段时间后,蛋蛋终于成功地安装好了游戏。由于蛋蛋太优秀了,他有好多的帐号,与之对应的就有好多的密码。突然他忘记了帐号所对应的密码。但没关系,在一段不可描述的操作之后,蛋蛋成功的想起了密码。突然他发现,原来的密码缺乏美感。所以他准备添加一些字母把密码改成一个回文串,由于金斌要开车了,蛋蛋想尽快解决这个问题,然后去虐爆金斌。所以他想知道最少要加多少个字母?
这个问题有两个版本。v1.0是小数据版本,v2.0是大数据版本。通过2.0的代码,肯定可以通过1.0。

Input

输入数据有多组,每组包含一个字符串长度(|S| < 5000 ),数据保证只含有小写字母

Output

最少应该加多少个字母

Sample Input

abba
caab

Sample Output

0
2

我们直接做大数据版本的题目,这个题目就是给你一个字符问再添加几个字符能构成 123454321 这样的回文。
直接用这个字符串与它的反转字符串求出最大公共子串。将它的长度减去这个公共子串的长度就是我们需要添加的字母的个数。

#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"

using namespace std;

const int maxn = 1e4+5;

char str1[maxn],str2[maxn];
int dp[2][maxn];

int main()
{
    while(~scanf("%s",str1+1)){
        int n = strlen( str1+1 );
        for( int i = 1; i <= n; i++ ) str2[i] = str1[n-i+1];
        memset(dp,0,sizeof(dp));
        for( int i = 1; i <= n; i++ ){
            int u = i%2;
            int v = (i-1)%2;
            for( int j = 1; j <= n; j++ ){
                if( str1[i] == str2[j] )
                    dp[u][j] = dp[v][j-1] + 1;
                else
                    dp[u][j] = max( dp[u][j-1],dp[v][j]);
            }
        }
        printf("%d\n",n-dp[n%2][n]);
    }
    return 0;
}

Problem E: 跑跑卡丁车系列之开齿轮——v2.0

Time Limit: 1000 MS Memory Limit: 257792 KB
64-bit interger IO format: %lld Java class name: Main

蛋蛋登入游戏后发现,因为是回归玩家,系统送了他两辆车。但是蛋蛋非常嫌弃,直接开始虐金斌。跑了几局之后,蛋蛋果然虐爆的整个实验室。这时,任务窗口提示,蛋蛋获得了balabala材料。蛋蛋进入他的小屋发现,合成一个齿轮需要N个材料,每种材料需要ai个,蛋蛋仔细的搜索了他的仓库发现每种材料他已经有了bi个。蛋蛋当然不会浪费材料,所以他使用了一种不可描述的技能,可以直接获得一个某种材料。但是因为使用这种黑科技需要一定的体力,所以蛋蛋最多只能使用K次。问蛋蛋最多可以开多少个齿轮。

(v1.0是小数据版本,v2.0是大数据版本。通过2.0的代码,一定可以通过1.0)

Input

输入数据有多组,每组第一行包括两个整数N和K( 1 <= N <=  100 000, 1 <= K <= 1e9 ),N和K的意思如题所描述。第二行有N个整数表示合成一个齿轮所需要的材料ai( 1 <= ai <= 1e9 )。第三行有N个整数表示已经有的材料bi( 1<= bi <= 1e9 )

Output

输出蛋蛋最多可以开多少个齿轮

Sample Input

1 1000000000
1
1000000000
10 1
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000
1 1 1 1 1 1 1 1 1 1

Sample Output

2000000000
0

这题我们不能用已知条件去推出齿轮个数,这样不仅困难还容易爆炸。我们采用二分法二分齿轮个数并且当它增加的齿轮等于k值就弹出符合的齿轮个数

#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"

typedef long long ll; 
using namespace std;

const int maxn = 1e5+5;

ll need[maxn],num[maxn];
ll n,k;

 ll serch( ll l,ll r ){
    while( l<=r ){
        ll mid = (l+r)/2;
        ll sum = 0;
        for( int i=0 ; i<n ; i++ ){
            if( num[i] < need[i]*mid ){
                sum += need[i]*mid-num[i];
                if(sum>k) break;
            }
        }
        if( sum==k ) return mid;
        if( sum<k ) l=mid+1;
        else r=mid-1;
    }
    return l-1;
 }

 int main(){
    while(scanf("%lld%lld",&n,&k)!=EOF){
        for( int i=0 ; i<n ; i++ ){
            scanf("%lld",&need[i]);
        }
        for( int i=0 ; i<n ; i++ ){
            scanf("%lld",&num[i]);
        }
        ll ans = serch(0,2e9+5);
        printf("%lld\n",ans);
    }
    return 0;
 }

Problem G: 跑跑卡丁车系列之排车位——v2.0

Time Limit: 1000 MS Memory Limit: 257792 KB
64-bit interger IO format: %lld Java class name: Main

在开了无数个齿轮之后,蛋蛋决定在小屋内给这些车排个顺序。他天真地认为:任意两辆车不在同一行,同一列就很美观。为了简化问题,我们把蛋蛋的小屋看成是一个N*N的方格,蛋蛋有K辆车要排。在之前的过程中,他因为使用太多不可描述的技能,已经无法思考了。请你告诉他一共有多少种方案。

Input

输入数据有多组,每组两个整数N和K,(1 <=N,K <= 30)

Output

输出有多少种方案,答案保证小于1e17

Sample Input

1 1
2 1
3 1
4 1
4 2
4 3
4 4
4 5

Sample Output

1
4
9
16
72
96
24
0

找规律,用二维数组打表

#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"

using namespace std;


typedef long long LL;
const LL maxn = 1e17;
LL dp[31][31];
LL n,k;

int main(){
    LL ans;
    while(scanf("%lld%lld",&n,&k)!=EOF){
        LL fz = n*n;
        LL fm = 1;
        LL cnt = 2;
            /*while(k!=1){
                n--;
                fz *= n*n;
                fm *= cnt;
                cnt++;
                k--;
            }
            ans = fz/fm;
            cout<<"fz "<<fz<<endl;
            cout<<"fm "<<fm<<endl;
            cout<<ans<<endl;*/
            for( int i=0 ; i<=30 ; i++ ){
                for( int j=0 ; j<=30 ; j++ ){
                    dp[i][j]=1;
                }
            }
            for( int i=0 ; i<=30 ; i++ ){
                for( int j=1 ; j<=i ; j++ ){
                    dp[i][j] = (dp[i-1][j-1]*i*i/j);
                }
            }
            if(k>n) puts("0");
            else
            printf("%lld\n",dp[n][k]);
    }
    return 0;   
}

然后,美辰巨的题目做不出来~~~
我真菜啊。

源码直接下载地址: https://pan.quark.cn/s/be6e03a195a4 该资源为"108大型通信技术有限公司"提供的网站源代码,其功能完整性和经过测试的状态已得到确认。这段源代码可作为极具价值的参考资料,不仅适用于通信技术在网站开发中的学习应用,也适合作为毕业设计项目的基础。以下列出了源代码中可能涵盖的关键知识点及详尽说明: 1. **前端框架与库**:网站极有可能运用了主流的前端框架,例如Bootstrap或AngularJS,或者自行设计的HTML、CSS和JavaScript。这些框架提供了一套完整的用户界面组件,有效简化了页面的布局和交互设计过程。 2. **响应式设计**:鉴于该网站属于大型通信技术公司,源代码大概率集成了响应式设计,确保网站在不同设备(包括手机、平板及桌面电脑)上均能提供优质的用户体验。 3. **通信协议与API**:源代码可能涉及HTTP/HTTPS协议,用于客户端与服务器之间的数据传输。若网站具备实时通信功能,则可能采用了WebSocket或其他实时通信协议。此外,可能还包括与其他服务或系统的API接口,例如RESTful API。 4. **后端技术**:网站的后端可能选用了Java(Spring Boot)、Python(Django或Flask)、Node.js(Express)等服务器端框架。后端主要负责处理业务逻辑、数据库操作和用户认证等任务。 5. **数据库管理**:源代码中可能包含SQL查询,表明使用了关系型数据库(如MySQL、PostgreSQL),或者NoSQL数据库(如MongoDB)。数据库设计对于存储和检索大量通信数据具有关键作用。 6. **安全性**:源代码应包含多项安全措施,如C...
内容概要:本文系统阐述了基于Wasserstein生成对抗网络(W-GAN)的光伏出力场景生成方法,旨在通过深度学习技术精准刻画光伏发电功率的时间序列不确定性。研究构建了完整的W-GAN模型架构,详细介绍了其在网络结构设计、损失函数优化(引入Wasserstein距离提升训练稳定性)及训练流程上的关键技术细节,并提供了完整的Python代码实现。该方法能够生成高保真、多样化的光伏功率出力场景,有效克服传统方法在捕捉复杂概率分布和时序相关性方面的局限性,为处理新能源出力不确定性问题提供了先进的数据驱动解决方案。; 适合人群:具备Python编程能力及机器学习基础知识,专注于新能源发电预测、电力系统规划、电力市场分析、综合能源系统优化等领域研究的高校研究生、科研机构研究人员及电力企业技术人员。; 使用场景及目标:①掌握W-GAN在新能源时序数据生成中的高级应用技巧;②构建高精度的光伏出力不确定性模型,生成用于鲁棒优化与随机规划的多场景集;③支撑高比例可再生能源接入下的电力系统可靠性评估、储能配置、经济调度及风险管控等关键决策; 阅读建议:建议读者务必结合所提供的Python代码进行动手实践,深入理解模型的超参数设置、训练动态监控与收敛性判断方法,并尝试将该方法与文中提及的DDPM、条件GAN等其他前沿生成模型进行对比实验,以深化对不同生成模型特性的认识,拓展解决实际科研问题的技术路径。
内容概要:本文详细阐述了工业母机技术领域中“高级结构设计工程师”这一岗位的全方位任职要求与职业发展路径,涵盖职位对标、目标企业、学历与证书要求、年龄范围、管理半径、晋升关键点、必备工作经验年限以及薪资待遇区间。重点突出该岗位对高端数控机床核心结构(如床身、主轴箱、导轨等)设计能力的要求,强调有限元分析、精度控制、热变形补偿、振动抑制等核心技术能力,并明确指出需具备项目主导经验、团队管理能力和跨部门协作经验。同时,根据不同企业类型和发展阶段,给出了清晰的年薪划分标准,体现了市场对该岗位的技术深度与综合能力的高度认可。; 适合人群:具备5年以上工业母机或高端机床结构设计经验,致力于向高级工程师、技术专家或管理岗位发展的结构设计从业者;或希望转型进入高端装备制造业的精密机械研发人员。; 使用场景及目标:①用于求职者精准定位职业发展方向,评估自身与高级岗位之间的能力差距;②辅助企业制定人才招聘标准与薪酬体系;③指导技术人员规划技能提升路径,聚焦核心技术积累与项目经验沉淀。; 阅读建议:建议结合个人职业发展阶段对照文中各项指标进行自我诊断,重点关注“晋升关键点”与“必备年限”部分,有针对性地补齐技术短板、积累主导项目经验,并注重专利成果与团队管理能力的培养,以全面提升竞争力。
代码转载自:https://pan.quark.cn/s/a4b39357ea24 KeymouseGo 简体中文 | English 功能:记录用户的鼠标键盘操作,通过触发按钮自动执行之前记录的操作,可设定执行的次数,可以理解为 的 。 用途:在进行某些操作简单、单调重复的工作时,使用本软件就可以很省力了。 自己只要做一遍,然后接下来就让电脑来做。 目录 安装 使用方法 + 基本操作 + 提示 + 脚本语法说明 关于作者 开源贡献者 安装 该软件通过 语言编写,已打包为可执行文件,未安装 的用户可直接下载 release 版本 ,直接点击 运行 源码打包可执行文件 打包完成后,可执行文件在项目路径的文件夹内。 使用方法 基本操作 桌面模式 1、点击 按钮,开始录制。 2、在计算机上进行任意操作,如点击鼠标、键盘输入,这部分的动作会被记录下来。 3、点击 按钮,结束录制。 4、点击 按钮,计算机会重复执行一遍第2步中所录制的动作。 命令行模式 直接运行指定脚本: 运行指定脚本3次: 提示 1、可设置脚本重复执行的次数,如果为 即为无限循环。 2、默认启动热键为 ,功能等同于 按钮;默认终止热键为 ,按下后将会停止正在运行的脚本。 3、录制时只记录鼠标点击动作和键盘动作,不记录鼠标移动轨迹。 4、每次录制结束后都会在 目前下生成一个新的脚本文件。 5、运行前可以在列表中选择一个需要执行的脚本。 6、 下的脚本文件内容可以修改,修改时可参考如下所述 。 7、热键设置中的指代鼠标中键,指代鼠标侧键 8、由于程序速度受限,当输入的鼠标速度大于一定值时脚本将无法以预期的输入速度执行 9、部分系统环境中,可能出现无法录制完整的鼠标事件的情况,请以管理员身份/root身份运行...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值