[POJ 2187]Beauty Contest:旋转卡壳

本文介绍了一道关于旋转卡壳的算法题目,并提供了详细的代码实现。旋转卡壳算法是在凸包基础上的一种拓展,用于求解特定几何问题。文章通过一个具体的示例展示了如何使用C++来实现该算法。

点击这里查看原题

旋转卡壳模板题,建议看这里的讲解

旋转卡壳的代码只比凸包多几行,非常好写。

/*
User:Small
Language:C++
Problem No.:2187
*/
#include<stdio.h>
#include<iostream>
#include<iomanip>
#include<string.h>
#include<algorithm>
#include<queue>
#include<stack>
#include<math.h>
#define ll long long
#define inf 999999999
using namespace std;
const int M=5e4+5;
int n,s[M],tp,k;
int ans;
struct no{
    int x,y;
}p[M];
void init(){
    memset(s,0,sizeof(s));
    tp=k=0;
}
int dis(no a,no b){
    return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}
int cross(no a,no b,no c){
    no u=(no){b.x-a.x,b.y-a.y},v=(no){c.x-a.x,c.y-a.y};
    return u.x*v.y-u.y*v.x;
}
bool cmp(no a,no b){
    int tmp=cross(p[0],a,b);
    if(tmp==0) return dis(p[0],a)<dis(p[0],b);
    return tmp>0;
}
void graham(){
    for(int i=0;i<n;i++){
        while(tp>1&&cross(p[s[tp-2]],p[s[tp-1]],p[i])<=0) tp--;
        s[tp++]=i;
    }
}
void rc(){
    int i=0,j=1;
    s[tp]=s[0];
    ans=dis(p[s[i]],p[s[i+1]]);
    for(i=0;i<tp;i++){
        while(abs(cross(p[s[i+1]],p[s[j+1]],p[s[i]]))>abs(cross(p[s[i+1]],p[s[j]],p[s[i]]))) j=(j+1)%tp;//找到距离p[s[i]],p[s[i+1]]两点连线最远的点j 
        ans=max(ans,max(dis(p[s[i]],p[s[j]]),dis(p[s[i+1]],p[s[j+1]])));//既要算dis(p[s[i]],p[s[j]])也要算dis(p[s[i+1]],p[s[j+1]]),因为可能会出现两线平行的情况 
    }
}
void solve(){
    init();
    for(int i=0;i<n;i++){
        cin>>p[i].x>>p[i].y;
        if(p[i].x<p[k].x||(p[i].x==p[k].x&&p[i].y<p[k].y)) k=i;
    }
    swap(p[k],p[0]);
    sort(p+1,p+n,cmp);
    graham();
    rc();
    cout<<ans<<endl;
}
int main(){
    freopen("data.in","r",stdin);//
    ios::sync_with_stdio(false);
    while(cin>>n&&n) solve();
    return 0;
}
【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值