TopCoder SRM578 Div.2

作者分享了参加ACM竞赛的经历,从简单的算法题解题思路到复杂问题的求解策略,包括第一题的最小最大值计算和第二题的递归深度优先搜索。文章还提到了竞赛中遇到的技术挑战,如数据类型错误和除法取整问题,并分享了解决这些挑战的方法。最终,作者总结了自己的表现并展望未来。

既然开通了这个博客就先随便写点好了。

 

本人第二次刷TC。上次很不爽的只做出第一题。第二题来不及了。/_\。结果还升到Div.1了。肯定被虐。所以我用这个号再从零开始。

 

9点10分题目出现了。打开第一题。

 

250p:

题意:N个什么动物来着。每个动物有两个梯子(为什么是梯子?)。有的动物丢了一些。两个煞笔捡起了K个梯子。问最少和最多有多少个动物没掉梯子。

明显最少的话,K个梯子属于K个动物,答案是max(0,N-K)

最多的话就是所有掉梯子的都是掉两个,答案是(N*2-K)/2

然后匆忙test一下样例就交了。得了240p。我第二个交的。前面那个稍微比我快一点。

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<deque>
#include<cstdlib>
#include<string>
using namespace std;
class DeerInZooDivTwo{
    public:
        vector<int> getminmax(int N,int K){
            vector<int>ans;
            ans.clear();
            if(K>N)ans.push_back(0);
            else ans.push_back(N-K);
            ans.push_back((N*2-K)>>1);
            return ans;
        }
};


然后我就点开了第二题。

500p:

题意:点阵上有一堆动物,有的是鸭子有的是鹅。至少有一只鹅。所有和鹅的曼哈顿距离小于d的动物一定是鹅。问有多少种鹅的分布情况。

我真是弱逼纠结了好久。后来发现可以dfs。找出所有鹅的连通块。计算连通块个数cnt。答案自然是2^cnt-1。

然后就不停地码代码。然后最大的test没过。纠结了一会儿发现没开long long。/_\然后改了一下就过了。交上去的时候只剩260p了。。/_\那个人还是比我早交一点。可能交晚了,500p只剩下260p了。。

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<deque>
#include<cstdlib>
#include<string>
using namespace std;
int vis[60][60],block[60][60];
class GooseInZooDivTwo{
    public:
        int n,m,bc;
        long long qp(long long b,long long p,long long k){
            long long ans=1;
            while(p){
                if(p&1)ans=ans*b%k;
                p>>=1;
                b=b*b%k;
            }
            return ans;
        }
        void floodfill(int x,int y,int bc,int d){
            vis[x][y]=1;
            block[x][y]=bc;
            for(int i=0;i<=d && x-i>=0;i++){
                for(int j=0;i+j<=d && j+y<m;j++)
                    if(vis[x-i][y+j]==0)    floodfill(x-i,y+j,bc,d);
                for(int j=0;i+j<=d && y-j>=0;j++)
                    if(vis[x-i][y-j]==0)    floodfill(x-i,y-j,bc,d);
            }
            for(int i=0;i<=d && x+i<n;i++){
                for(int j=0;i+j<=d && j+y<m;j++)
                    if(vis[x+i][y+j]==0)    floodfill(x+i,y+j,bc,d);
                for(int j=0;i+j<=d && y-j>=0;j++)
                    if(vis[x+i][y-j]==0)    floodfill(x+i,y-j,bc,d);
            }
        }
        int count(vector <string> field, int dist){
            n=field.size();
            m=field[0].size();
            memset(vis,0xff,sizeof(vis));
            for(int i=0;i<n;i++)
                for(int j=0;j<m;j++)
                    if(field[i][j]=='v'){
                        vis[i][j]=0;
                    }
            int blockcnt=0;
            for(int i=0;i<n;i++)
                for(int j=0;j<m;j++)
                    if(vis[i][j]==0){
                        blockcnt++;
                        floodfill(i,j,blockcnt,dist);
                    }
            int ans=int((qp(2LL,1LL*blockcnt,1000000007LL)-1+1000000007LL)%1000000007LL);
            return ans;
        }
};


 

1000p:

不太会/_\看似dp。也来不及了,就没去写了。。

 

快结束的时候有人交了第三题。分数飙升。我一下就被挤到第三了。额。。

 

 

然后是激情的cha时间:

做题的时候我发现两个容易错的地方:

1.第一题那个除2分上取整和下取整,可以坑掉人。

2.第二题如果不开long long说不定会挂。(我自己就被坑了好久还好我发现了)

 

然后我先去看大家的第一题。看到一个感觉会挂的。我就迫不及待的cha了。结果没成功。。掉了25分。。T.T

 

然后看到那个交第三题的人的第三题瞬间被cha了。。

 

然后我去看他们的第二题。果然有没开long long的。而且连mod都没有!欣喜若狂1分钟之后开cpp制造大数据。然后他就被我cha掉了。第一次成功cha。~

留下证据纪念:然后我的分数又涨上去了,到了第二。比一开始还多了二十多分。哈哈。

 

 

比赛就结束了。结果是房间第二,所有Div2的第36名。呵呵还行吧。Rating涨到了1486,一下就蓝名了,再多14分就黄名了~唉。。可惜。。要是第一次cha错的那次看仔细就好了。

图片纪念:

 

下次应该要去Div.1了。加油吧!

明天CF继续刷!

 

内容概要:本文提出了一种基于改进扩散模型的高海拔地区新能源高波动出力场景生成方法,并提供了完整的Python代码实现。该方法针对高海拔地区风能、光伏等新能源出力波动剧烈、不确定性高的特点,通过优化扩散模型的结构与训练策略,有效捕捉历史数据的概率分布特征与时序相关性,从而生成高质量、多样化的出力场景。文中详细阐述了模型的数学推导、网络架构设计、损失函数优化及采样算法改进,并通过实验证明其在拟合精度、场景多样性与稳定性方面优于传统生成模型,为电力系统在高比例新能源接入下的规划、调度与风险评估提供了可靠的场景输入支持。; 适合人群:具备一定Python编程能力和机器学习基础,从事新能源发电预测、电力系统分析、智能优化、场景生成等方向研究的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①用于高海拔地区风电、光伏出力的不确定性建模与多场景生成;②支撑含高渗透率新能源的电力系统随机优化调度、鲁棒决策与风险评估;③为相关学术研究、论文复现与算法改进提供可运行的技术方案与代码基础; 阅读建议:建议读者结合所提供的完整资源(代码、数据集、说明文档)进行实践操作,重点关注扩散模型的前向加噪与反向去噪过程的设计细节,以及如何将其适配于新能源时序数据的生成任务,通过参数调优与对比实验深入理解模型的生成机制与性能边界。
内容概要:本文围绕基于静态约束法的配电网电动汽车接入容量评估展开研究,提出了一种在新型电力系统背景下评估主动配电网对电动汽车承载能力的方法。研究通过构建数学模型,结合潮流计算与关键约束条件(如电压越限、线路过载等),量化分析配电网可承受的最大电动汽车充电负荷容量,旨在识别规模化电动汽车接入带来的潜在运行风险,并为电网规划与运行提供科学依据。文中配套提供了完整的Matlab代码实现,便于仿真验证与结果复现。此外,该研究与分布式光伏承载力评估、电动汽车可调能力分析等方向形成技术联动,展现了多主题协同的研究体系。; 适合人群:具备电力系统分析基础理论知识及Matlab编程能力的高校研究生、科研机构研究人员,以及从事新能源并网、智能配电网规划与运行等相关领域的工程技术人员。; 使用场景及目标:①用于学术研究中的模型复现与论文撰写支撑;②评估实际配电网中电动汽车大规模接入的可行性与安全边界,指导充电基础设施布局;③作为高校教学案例,帮助学生深入理解电网承载力评估的核心原理、建模方法与仿真技术; 阅读建议:建议结合文中提及的相关研究方向(如二阶锥规划、多面体聚合方法等)进行对比学习,充分利用所提供的Matlab代码与网盘资料开展仿真实验,重点关注约束条件的设定逻辑与潮流计算模块的实现细节,以深化对评估模型机理与工程应用价值的理解。
内容概要:本文围绕“考虑隐私保护的分布式联邦学习电力负荷预测研究”展开,提出了一种基于Python实现的联邦学习框架,旨在解决居民或行业电力负荷预测中用户电表数据隐私泄露的风险。该研究通过构建分布式机器学习模型,使各参与方在不共享原始数据的前提下协同训练全局模型,有效实现了数据“可用不可见”。文中详细阐述了联邦学习的整体架构设计、本地模型训练流程、参数加密传输与安全聚合机制,并结合差分隐私等技术进一步增强系统的隐私保护能力。同时,研究利用真实电力负荷数据集进行了实验验证,展示了方法在预测精度与隐私保障之间的良好平衡,并提供了完整的代码实例与复现指南,便于后续研究与应用拓展。; 适合人群:具备一定机器学习基础和电力系统背景知识,从事智慧能源、隐私计算或人工智能相关方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 实现跨区域、跨主体的电力负荷协同预测,打破数据孤岛;② 在确保用户用电数据隐私安全的前提下提升负荷预测准确性;③ 推动联邦学习在智能电网、需求响应、虚拟电厂等场景中的实际部署与应用。; 阅读建议:建议结合文中提供的Python代码与网盘资料进行动手实践,重点关注联邦学习的通信轮次设计、模型聚合算法(如FedAvg)的实现细节以及差分隐私噪声添加策略,深入理解其对模型性能与隐私强度的影响,为进一步优化与创新奠定基础。
VDA_Band_19.1_3rd edition_2026 English Inspection of Technical Cleanliness 内容概要:本文档为德国汽车工业协会(VDA)发布的第三版《技术清洁度检验:功能相关汽车部件的颗粒污染检测》(VDA 19.1),系统规范了汽车行业中零部件技术清洁度的检测方法与流程。文件涵盖从取样、提取、过滤到分析的全流程标准化操作,重点更新了干法提取(如 Stamp Test 和刷吸法)、小于50µm颗粒的检测、光学子系统和SEM/EDX标准分析方法,并引入统一材料分类体系以提升结果可比性。同时明确了“标准分析”与“自由检验”的区别,前者用于高兼容性检测,后者允许客户与供应商协商定制参数。文档还强化了对非可测组件的技术清洁保障、测量不确定度评估及方法验证的要求,并提供了多个实际案例支持应用落地。; 适合人群:适用于汽车制造业中从事质量控制、工艺开发、供应商管理及相关检测实验室的技术人员和管理人员,尤其适合具备一定质量管理或洁净度检测基础的专业人员。; 使用场景及目标:①用于制定和执行零部件清洁度检测标准;②指导 incoming/outgoing 检验及生产过程监控;③支持失效分析与质量改进项目;④作为企业内部审核和技术交流的依据; 阅读建议:建议结合VDA 19.2及其他相关标准配套使用,重点关注各章节中的起始参数设定、方法选择逻辑及附录中的检查表示例,在实际操作中同步开展方法验证与人员培训,确保检测结果的有效性和可追溯性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值