uva 10125 - Sumsets好题

本文介绍了一个寻找特定三元组的算法实现,通过预先计算和存储两数之和及其索引,快速判断是否存在满足条件的第三个数,使得这三个数之和等于特定目标值。该算法涉及哈希表的应用和优化技巧。
#include<cstdlib>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<set>
#include<cstring>
#include <algorithm>
#define M 5368
#define N 1000010
#define inf 0x7f7f7f7f
using namespace std;
int head[N],next[N];
int a[1000],sum[N],st[N][2];
int hash(int u)
{
//    u=((u<<1)+(u>>1))/2;
//    return (u & 0x7fffffff)%N;
    if(a<0)
        a=-a;
    return a%N;
}
void insert(int k)
{
    int h=hash(sum[k]);
    next[k]=head[h];
    head[h]=k;
}
int find(int x,int y,int s)
{
    int h=hash(s);
    h=head[h];//容易忘掉!!wa
    while(h!=-1)
    {

        if(s==sum[h]&&st[h][0]!=x&&st[h][0]!=y&&st[h][1]!=x&&st[h][1]!=y)
            return 1;
        h=next[h];
    }
    return 0;
}
int main()
{
#ifndef ONLINE_JUDGE
    freopen("ex.in","r",stdin);
#endif
    int n;
    while(scanf("%d",&n))
    {
        memset(head,-1,sizeof(head));

        if(!n)
            break;
        for(int i=0; i<n; i++)
            scanf("%d",&a[i]);

        sort(a,a+n);
        int k=0;
        for(int i=0; i<n; i++)
            for(int j=i+1; j<n; j++)//降为o(n^2)
            {
                sum[k]=a[i]+a[j];
                insert(k);
                st[k][0]=i;
                st[k++][1]=j;
            }
        int flag=1;
        for(int i=n-1; i>=0; i--)
        {
            for(int j=0; j<n; j++)
                if(i==j)
                    continue;
                else if(find(i,j,a[i]-a[j]))
                {
                    flag=0;
                    printf("%d\n",a[i]);
                    break;
                }
            if(!flag)
                break;
        }
        if(flag)
            printf("no solution\n");
    }
    return 0;
}

内容概要:本文档介绍了基于3D FDTD(时域有限差分)方法在MATLAB平台上对微带线馈电的矩形天线进行仿真分析的技术方案,重点在于模拟超MATLAB基于3D FDTD的微带线馈矩形天线分析[用于模拟超宽带脉冲通过线馈矩形天线的传播,以计算微带结构的回波损耗参数]宽带脉冲信号通过天线结构的传播过程,并计算微带结构的回波损耗参数(S11),以评估天线的匹配性能和辐射特性。该方法通过建立三维电磁场模型,精确求解麦克斯韦方程组,适用于高频电磁仿真,能够有效分析天线在宽频带内的响应特性。文档还提及该资源属于一个涵盖多个科研方向的综合性MATLAB仿真资源包,涉及通信、信号处理、电力系统、机器学习等多个领域。; 适合人群:具备电磁场与微波技术基础知识,熟悉MATLAB编程及数值仿真的高校研究生、科研人员及通信工程领域技术人员。; 使用场景及目标:① 掌握3D FDTD方法在天线仿真中的具体实现流程;② 分析微带天线的回波损耗特性,优化天线设计参数以提升宽带匹配性能;③ 学习复杂电磁问的数值建模与仿真技巧,拓展在射频与无线通信领域的研究能力。; 阅读建议:建议读者结合电磁理论基础,仔细理解FDTD算法的离散化过程和边界条件设置,运行并调试提供的MATLAB代码,通过调整天线几何尺寸和材料参数观察回波损耗曲线的变化,从而深入掌握仿真原理与工程应用方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值