2017-11-6离线赛总结

题目

3811,3812,3813

失分小结

估分

100+(15+)+?≈130
(第三题最后几分钟乱搞的dfs)

实际分数

100+10+35=145
第二题炸了…还有第三题其他同学dfs都有P50.

题解

解析参考LOJ.

T1

P100

简单哈希.

CODE
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define N 5000005
#define FOR(i,a,b) for(int i=(a),i##_END_=(b);i<=i##_END_;i++)
#define ROF(i,a,b) for(int i=(a),i##_END_=(b);i>=i##_END_;i--)
char A[N];
int che[N];
int k,MAX=0;
int ha[1500000];
inline void Max(int &x,int y){if(x<y)x=y;}
int main() {
    scanf("%s",A+1);
    int n=strlen(A+1);
    FOR(i,1,n) { //A:1,C:2,T:3,G:0
        if(A[i]=='A')che[i]=1;
        else if(A[i]=='C')che[i]=2;
        else if(A[i]=='T')che[i]=3;
        else che[i]=0;
    }
    scanf("%d",&k);
    FOR(i,1,n-k+1) {
        int t=0;
        FOR(j,i,i+k-1)t=t*4+che[j];
        ha[t]++;
        Max(MAX,ha[t]);
    }
    printf("%d\n",MAX);
    return 0;
}

T2

P15
CODE
#include<cstdio>
#include<iostream>
using namespace std;
template <class T>void Rd(T &x) {
    x=0;
    char c,f=1;
    while(c=getchar(),c<48)if(c=='-')f=-1;
    do x=(x<<1)+(x<<3)+(c^48);
    while(c=getchar(),c>=48);
    x*=f;
}

#define M 300005
int n,m,S[M];
struct node {
    int a0,a1,k;
} Q[M];
long long A[105];

int main() {
    Rd(m);
    for(int i=1; i<=m; ++i)Rd(S[i]);
    Rd(n);
    for(int i=1; i<=n; ++i)Rd(Q[i].a0),Rd(Q[i].a1),Rd(Q[i].k);
    for(int i=1; i<=n; ++i) {
        A[0]=Q[i].a0;
        A[1]=Q[i].a1;
        for(int j=2; j<=S[m]; ++j)A[j]=Q[i].k*A[j-1]+A[j-2];
        int p1=-1,p2=-1;
        for(int j=1; j<=m; ++j) {
            long long x=A[S[j]];
            if(p1==-1||A[S[p1]]<x)p1=j;
            if(p2==-1||A[S[p2]]>x)p2=j;
        }
        printf("%d %d\n",S[p1],S[p2]);
    }
    return 0;
}
P100
CODE
#include<cstdio>
#include<iostream>
#define ll long long
using namespace std;
template<typename T>inline void rd(T &x) {
    x=0;char c,f=1;
    while(c=getchar(),c<48)if(c=='-')f=-1;
    do x=(x<<3)+(x<<1)+(c&15);
    while(c=getchar(),c>47);
    x*=f;
}
int S[300005];
ll A[300005];
int main() {
    int n,m,k;
    rd(m);
    for(int i=1; i<=m; i++)rd(S[i]);
    rd(n);
    while(n--) {
        rd(A[0]),rd(A[1]),rd(k);
        if(!A[0]&&!A[1]) {
            printf("%d %d\n",S[1],S[1]);
            continue;
        }
        int las=0;
        int MAXi=S[1],MINi=S[1];
        for(int i=2; i<=S[m]; i++) {
            A[i]=A[i-1]*k+A[i-2];
            if((A[i]<0&&A[i-1]<0)||(A[i]>=0&&A[i-1]>=0)) {
                if(A[i]>0&&max(A[i],A[i-1])>max(A[0],A[1])) {
                    las=i;
                    break;
                }
                if(A[i]<0&&min(A[i],A[i-1])<min(A[0],A[1])) {
                    las=i;
                    break;
                }
            }
        }
        if(!las)las=S[m];
        for(int j=2; j<=m; j++) {
            if(S[j]>las)break;
            if(A[S[j]]>A[MAXi])MAXi=S[j];
            if(A[S[j]]<A[MINi])MINi=S[j];
        }
        if(las<S[m]) {
            if(A[las]>0)MAXi=S[m];
            if(A[las]<0)MINi=S[m];
        }
        printf("%d %d\n",MAXi,MINi);
    }
    return 0;
}

T3

P35

dfs.

CODE
#include<cstdio>
#include<cstdlib>
#include<memory.h>
#define FOR(i,a,b) for(int i=(a),i##_END_=(b);i<=i##_END_;i++)
#define ROF(i,a,b) for(int i=(a),i##_END_=(b);i>=i##_END_;i--)
#define N 105
#define M 1005
int n,m,C,T,ans;
int p[N],c[N];
int dis[N][N];
template<typename T>inline bool Max(T&x,T y) {if(x<y)x=y;return x==y;}
template<typename T>inline bool Min(T&x,T y) {if(x>y)x=y;return x==y;}

void dfs(int x,int cc,int mon,int len){
    if(len==0){Max(ans,mon);return;}
    if(mon<=ans)return;
    if(cc)for(int i=1;i<=n;i++)
        if(len-dis[x][i]>=0)
            dfs(i,cc-1,mon,len-dis[x][i]);
    if(cc<c[x]&&mon>=p[x])
        dfs(x,c[x],mon-p[x],len);
}

int main(){
//  freopen("trip.in","r",stdin);
//  freopen("trip.out","w",stdout);
    scanf("%d %d %d %d",&n,&m,&C,&T);
    for(int i=1;i<=n;i++){
        scanf("%d %d",&p[i],&c[i]);
        Min(c[i],C);
    }
    memset(dis,63,sizeof dis);
    int a,b,l;
    for(int i=1;i<=m;i++){
        scanf("%d %d %d",&a,&b,&l);
        Min(dis[a][b],l);
    }
    while(T--){
        ans=-1;
        int st,len,money;
        scanf("%d %d %d",&st,&money,&len);
        dfs(st,0,money,len);
        printf("%d\n",ans);
    }
    return 0;
}
P50

记忆化搜索.

CODE
#include<bits/stdc++.h>
using namespace std;

#define FOR(i,a,b) for(int i=(a),i_##end_=(b);i<=i_##end_;i++)
#define DFOR(i,a,b) for(int i=(a),i_##end_=(b);i>=i_##end_;i--)
#define INF 0x3f3f3f3f
#define M 105

template<typename T>void rd(T &x) {
    x=0;char c,f=1;
    while(c=getchar(),c<48)if(c=='-')f=-1;
    do x=(x<<1)+(x<<3)+(c&15);
    while(c=getchar(),c>47);
    x*=f;
}
template<typename T,typename _>void Max(T&a,_ b) {if(a<b)a=b;}
template<typename T,typename _>void Min(T&a,_ b) {if(a>b)a=b;}
int n,m,C,T,S,Q,D;
int Head[M],Cost[1001<<1],To[1001<<1],Nxt[1001<<1],Tot;

void Add_Edge(int a,int b,int c) {
    Nxt[++Tot]=Head[a];
    Head[a]=Tot;
    To[Tot]=b;
    Cost[Tot]=c;
}

struct Node {int Pr,c;} A[M];
int DP[105][1005][305];
int Dfs(int x,int cc,int len) {
    if(~DP[x][len][cc]) return DP[x][len][cc];
    if(len<=0) return DP[x][len][cc]=0;
    DP[x][len][cc]=INF;
    for(int i=Head[x];i;i=Nxt[i]) {
        int to=To[i],Tmp;
        if(cc!=0) {
            Tmp=Dfs(to,cc-1,len-Cost[i]);
            Min(DP[x][len][cc],Tmp);
        }
        if(cc<min(C,A[x].c) ) {
            Tmp=Dfs(to,min(C,A[x].c)-1,len-Cost[i])+A[x].Pr;
            Min(DP[x][len][cc],Tmp);
        }
    }
    return DP[x][len][cc];
}

int main() {
    rd(n),rd(m),rd(C),rd(T);
    FOR(i,1,n) rd(A[i].Pr),rd(A[i].c);
    FOR(i,1,m) {
        int a,b,c;
        rd(a),rd(b),rd(c);
        Add_Edge(a,b,c);
    }
    while(T--) {
        rd(S),rd(Q),rd(D);
        memset(DP,-1,sizeof DP);
        int Tmp=Dfs(S,0,D);
        if(Tmp>Q) puts("-1");
        else printf("%d\n",Q-Tmp);
    }
    return 0;
}
P100
CODE
#include <cstdio>
#define ll long long
#define INF -(1ll<<61)
int n,m,C,T,p[110],c[110];
ll f[110][10010],dis[20][110][110],A[110],B[110],D[110][110];
template<typename T,typename _>inline void Max(T &x,_ y){if(x<y)x=y;}
template<typename T,typename _>inline void Min(T &x,_ y){if(x>y)x=y;}

int main() {
    scanf("%d%d%d%d",&n,&m,&C,&T);
    for(int i=0; i<n; i++) {
        scanf("%d%d",&p[i],&c[i]);
        Min(c[i],C);
        for(int j=0; j<n; j++)dis[0][i][j]=INF;
        dis[0][i][i]=0;
    }
    for(int i=0; i<m; i++) {
        int a,b,l;
        scanf("%d%d%d",&a,&b,&l);
        Max(dis[0][a-1][b-1],l);
    }
    for(int k=1; k<17; k++)
        for(int i=0; i<n; i++)
            for(int j=0; j<n; j++) {
                dis[k][i][j]=INF;
                for(int l=0; l<n; l++)
                    Max(dis[k][i][j],dis[k-1][i][l]+dis[k-1][l][j]);
            }
    for(int i=0; i<n; i++) {
        for(int j=0; j<n; j++)A[j]=(j==i)?0:INF;
        for(int k=16; k>=0; k--)
            if(c[i]>>k&1) {
                for(int j=0; j<n; j++) {
                    B[j]=INF;
                    for(int l=0; l<n; l++)
                        Max(B[j],A[l]+dis[k][l][j]);
                }
                for(int j=0; j<n; j++)A[j]=B[j];
            }
        for(int j=0; j<n; j++)D[i][j]=A[j];
    }
    for(int j=0; j<=n*n; j++)
        for(int i=0; i<n; i++)
            if(j>=p[i])
                for(int k=0; k<n; k++)
                    Max(f[i][j],f[k][j-p[i]]+D[i][k]);
    while(T--) {
        int s,q,d,ans=1;
        scanf("%d%d%d",&s,&q,&d);
        --s;
        while(ans<=q&&f[s][ans]<d)ans++;
        printf("%d\n",ans>q?-1:q-ans);
    }
    return 0;
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值