2019杭电多校第二场

比赛总结

@辣鸡lfw,一开始算三角形那题没想到正解使用莫队乱搞,然后要选出50个最大的时候还用莫队。。。主席树区间第k大什么的完全忘记了

题解

1001 Another Chess Problem

unsolved

1002 Beauty Of Unimodal Sequence 

unsolved

1003 Coefficient 

unsolved

1004 Double Tree 

unsolved

1005 Everying is Generated In Equal Probability
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 #define mod 998244353
 5 const int maxn=3000;
 6 const int maxm=3010;
 7 int n;
 8 ll sum,f[maxm],rav[maxm],b[maxm];
 9 ll Pow(ll x,int n)
10 {
11     ll ans=1;
12     while(n)
13     {
14         if(n&1)ans=ans*x%mod;
15         n>>=1;
16         x=x*x%mod;
17     }
18     return ans;
19 }
20 ll C(int a,int b){return (f[a]*rav[b]%mod)*rav[a-b]%mod;}
21 void Init()
22 {
23     sum=0; f[0]=rav[0]=1;
24     for(ll i=1;i<=maxn;i++)f[i]=f[i-1]*i%mod;
25     rav[maxn]=Pow(f[maxn],mod-2);
26     for(ll i=maxn-1;i;i--) rav[i]=rav[i+1]*(i+1)%mod;
27 }
28 /// 求组合数和逆元 
29 
30 int main()
31 { 
32     while(~scanf("%d",&n)) 
33     {
34         Init();
35         
36         ll r=Pow(4,mod-2),k,x,y;
37         for(ll i=2;i<=n;++i)
38         {
39             x=Pow(2,i);
40             y=Pow(Pow(2,i)-1,mod-2);
41             k=x*y%mod;
42             b[i]=k*((i*(i-1)%mod)*r%mod)%mod;
43             for(int j=0;j<i;++j) b[i]=(b[i]+(y*C(i,j)%mod)*b[j]%mod)%mod;
44             sum=(sum+b[i])%mod;
45         }
46         sum=sum*Pow(n,mod-2)%mod;
47         
48         printf("%lld\n",sum);
49     }
50     return 0;
51 }
View Code
1006 Fantastic Magic Cube

unsolved

1007 Game

unsolved

1008 Harmonious Army

题解:https://blog.csdn.net/baiyifeifei/article/details/97231963

 1 #include<bits/stdc++.h>
 2 #define maxl 200010
 3 using namespace std;
 4  
 5 int n,q,cnt,tot;
 6 int a[maxl],num[maxl],rt[maxl];
 7 long long b[110];
 8 struct node
 9 {
10     int ls,rs,sum;
11 }tree[maxl*40];
12  
13 inline void insert(int num,int &x,int l,int r)
14 {
15     tree[++tot]=tree[x];x=tot;
16     ++tree[x].sum;
17     if(l==r) return;
18     int mid=(l+r)>>1;
19     if(num<=mid)
20         insert(num,tree[x].ls,l,mid);
21     else
22         insert(num,tree[x].rs,mid+1,r);
23 }
24  
25 inline int query(int i,int j,int k,int l,int r)
26 {
27     if(l==r)
28         return l;
29     int tp=tree[tree[j].ls].sum-tree[tree[i].ls].sum;
30     int mid=(l+r)>>1;
31     if(k<=tp) 
32         return query(tree[i].ls,tree[j].ls,k,l,mid);
33     else
34         return query(tree[i].rs,tree[j].rs,k-tp,mid+1,r);
35 }
36  
37 inline void prework()
38 {
39     for(int i=1;i<=n;i++)
40         scanf("%d",&a[i]),num[i]=a[i];
41     sort(num+1,num+1+n);
42     cnt=unique(num+1,num+1+n)-num-1;
43     for(int i=1;i<=n;i++)
44         a[i]=lower_bound(num+1,num+1+cnt,a[i])-num;
45     for(int i=0;i<=tot;i++)
46         tree[i].ls=tree[i].rs=tree[i].sum=0;
47     tot=0;
48     for(int i=1;i<=n;i++)
49         rt[i]=0;
50     for(int i=1;i<=n;i++)
51     {
52         rt[i]=rt[i-1];
53         insert(a[i],rt[i],1,cnt);
54     }
55 }
56  
57 inline void mainwork()
58 {
59     int l,r,up;
60     long long ans=0;
61     for(int i=1;i<=q;i++)
62     {
63         scanf("%d%d",&l,&r);
64         up=min(50,r-l+1);
65         for(int j=1;j<=up;j++)
66             b[j]=num[query(rt[l-1],rt[r],r-l+1-j+1,1,cnt)];
67         ans=-1;
68         for(int j=1;j<=up-2;j++)
69         if(b[j]<b[j+1]+b[j+2])
70         {
71             ans=b[j]+b[j+1]+b[j+2];
72             break;
73         }
74         printf("%lld\n",ans);
75     }
76 }
77  
78 int main()
79 {
80     while(~scanf("%d%d",&n,&q))
81     {
82         prework();
83         mainwork();
84         //print();
85     }
86     return 0;
87 }
View Code
1009 I Love Palindrome String 
 1 #include<bits/stdc++.h>
 2 #define maxl 200010
 3 using namespace std;
 4  
 5 int n,q,cnt,tot;
 6 int a[maxl],num[maxl],rt[maxl];
 7 long long b[110];
 8 struct node
 9 {
10     int ls,rs,sum;
11 }tree[maxl*40];
12  
13 inline void insert(int num,int &x,int l,int r)
14 {
15     tree[++tot]=tree[x];x=tot;
16     ++tree[x].sum;
17     if(l==r) return;
18     int mid=(l+r)>>1;
19     if(num<=mid)
20         insert(num,tree[x].ls,l,mid);
21     else
22         insert(num,tree[x].rs,mid+1,r);
23 }
24  
25 inline int query(int i,int j,int k,int l,int r)
26 {
27     if(l==r)
28         return l;
29     int tp=tree[tree[j].ls].sum-tree[tree[i].ls].sum;
30     int mid=(l+r)>>1;
31     if(k<=tp) 
32         return query(tree[i].ls,tree[j].ls,k,l,mid);
33     else
34         return query(tree[i].rs,tree[j].rs,k-tp,mid+1,r);
35 }
36  
37 inline void prework()
38 {
39     for(int i=1;i<=n;i++)
40         scanf("%d",&a[i]),num[i]=a[i];
41     sort(num+1,num+1+n);
42     cnt=unique(num+1,num+1+n)-num-1;
43     for(int i=1;i<=n;i++)
44         a[i]=lower_bound(num+1,num+1+cnt,a[i])-num;
45     for(int i=0;i<=tot;i++)
46         tree[i].ls=tree[i].rs=tree[i].sum=0;
47     tot=0;
48     for(int i=1;i<=n;i++)
49         rt[i]=0;
50     for(int i=1;i<=n;i++)
51     {
52         rt[i]=rt[i-1];
53         insert(a[i],rt[i],1,cnt);
54     }
55 }
56  
57 inline void mainwork()
58 {
59     int l,r,up;
60     long long ans=0;
61     for(int i=1;i<=q;i++)
62     {
63         scanf("%d%d",&l,&r);
64         up=min(50,r-l+1);
65         for(int j=1;j<=up;j++)
66             b[j]=num[query(rt[l-1],rt[r],r-l+1-j+1,1,cnt)];
67         ans=-1;
68         for(int j=1;j<=up-2;j++)
69         if(b[j]<b[j+1]+b[j+2])
70         {
71             ans=b[j]+b[j+1]+b[j+2];
72             break;
73         }
74         printf("%lld\n",ans);
75     }
76 }
77  
78 int main()
79 {
80     while(~scanf("%d%d",&n,&q))
81     {
82         prework();
83         mainwork();
84         //print();
85     }
86     return 0;
87 }
View Code
1010 Just Skip The Problem

就直接问n个2进制位上的数,由于有顺序,那么就是n!,对1e6+3取模,那就在外面预处理到1e6+3,之后都是0

 1 #include<bits/stdc++.h>
 2 #define maxl 1000010
 3 using namespace std;
 4 
 5 const int mod=1e6+3;
 6 
 7 long long f[maxl]; 
 8 
 9 int main()
10 {
11     f[1]=1;
12     for(int i=2;i<mod;i++)
13         f[i]=(f[i-1]*i)%mod;
14     int n;
15     while(~scanf("%d",&n))
16     {
17         if(n>=mod)
18             puts("0");
19         else
20             printf("%lld\n",f[n]);
21     }
22     return 0;
23 }
View Code
1011 Keep On Everything But TRiangle

题解:https://blog.csdn.net/liufengwei1/article/details/97324278

 1 #include<bits/stdc++.h>
 2 #define maxl 200010
 3 using namespace std;
 4  
 5 int n,q,cnt,tot;
 6 int a[maxl],num[maxl],rt[maxl];
 7 long long b[110];
 8 struct node
 9 {
10     int ls,rs,sum;
11 }tree[maxl*40];
12  
13 inline void insert(int num,int &x,int l,int r)
14 {
15     tree[++tot]=tree[x];x=tot;
16     ++tree[x].sum;
17     if(l==r) return;
18     int mid=(l+r)>>1;
19     if(num<=mid)
20         insert(num,tree[x].ls,l,mid);
21     else
22         insert(num,tree[x].rs,mid+1,r);
23 }
24  
25 inline int query(int i,int j,int k,int l,int r)
26 {
27     if(l==r)
28         return l;
29     int tp=tree[tree[j].ls].sum-tree[tree[i].ls].sum;
30     int mid=(l+r)>>1;
31     if(k<=tp) 
32         return query(tree[i].ls,tree[j].ls,k,l,mid);
33     else
34         return query(tree[i].rs,tree[j].rs,k-tp,mid+1,r);
35 }
36  
37 inline void prework()
38 {
39     for(int i=1;i<=n;i++)
40         scanf("%d",&a[i]),num[i]=a[i];
41     sort(num+1,num+1+n);
42     cnt=unique(num+1,num+1+n)-num-1;
43     for(int i=1;i<=n;i++)
44         a[i]=lower_bound(num+1,num+1+cnt,a[i])-num;
45     for(int i=0;i<=tot;i++)
46         tree[i].ls=tree[i].rs=tree[i].sum=0;
47     tot=0;
48     for(int i=1;i<=n;i++)
49         rt[i]=0;
50     for(int i=1;i<=n;i++)
51     {
52         rt[i]=rt[i-1];
53         insert(a[i],rt[i],1,cnt);
54     }
55 }
56  
57 inline void mainwork()
58 {
59     int l,r,up;
60     long long ans=0;
61     for(int i=1;i<=q;i++)
62     {
63         scanf("%d%d",&l,&r);
64         up=min(50,r-l+1);
65         for(int j=1;j<=up;j++)
66             b[j]=num[query(rt[l-1],rt[r],r-l+1-j+1,1,cnt)];
67         ans=-1;
68         for(int j=1;j<=up-2;j++)
69         if(b[j]<b[j+1]+b[j+2])
70         {
71             ans=b[j]+b[j+1]+b[j+2];
72             break;
73         }
74         printf("%lld\n",ans);
75     }
76 }
77  
78 int main()
79 {
80     while(~scanf("%d%d",&n,&q))
81     {
82         prework();
83         mainwork();
84         //print();
85     }
86     return 0;
87 }
View Code

 

1012  Longgest Subarray 

题解:https://blog.csdn.net/liufengwei1/article/details/97324937

 1 #include<bits/stdc++.h>
 2 #define maxl 200010
 3 using namespace std;
 4  
 5 int n,q,cnt,tot;
 6 int a[maxl],num[maxl],rt[maxl];
 7 long long b[110];
 8 struct node
 9 {
10     int ls,rs,sum;
11 }tree[maxl*40];
12  
13 inline void insert(int num,int &x,int l,int r)
14 {
15     tree[++tot]=tree[x];x=tot;
16     ++tree[x].sum;
17     if(l==r) return;
18     int mid=(l+r)>>1;
19     if(num<=mid)
20         insert(num,tree[x].ls,l,mid);
21     else
22         insert(num,tree[x].rs,mid+1,r);
23 }
24  
25 inline int query(int i,int j,int k,int l,int r)
26 {
27     if(l==r)
28         return l;
29     int tp=tree[tree[j].ls].sum-tree[tree[i].ls].sum;
30     int mid=(l+r)>>1;
31     if(k<=tp) 
32         return query(tree[i].ls,tree[j].ls,k,l,mid);
33     else
34         return query(tree[i].rs,tree[j].rs,k-tp,mid+1,r);
35 }
36  
37 inline void prework()
38 {
39     for(int i=1;i<=n;i++)
40         scanf("%d",&a[i]),num[i]=a[i];
41     sort(num+1,num+1+n);
42     cnt=unique(num+1,num+1+n)-num-1;
43     for(int i=1;i<=n;i++)
44         a[i]=lower_bound(num+1,num+1+cnt,a[i])-num;
45     for(int i=0;i<=tot;i++)
46         tree[i].ls=tree[i].rs=tree[i].sum=0;
47     tot=0;
48     for(int i=1;i<=n;i++)
49         rt[i]=0;
50     for(int i=1;i<=n;i++)
51     {
52         rt[i]=rt[i-1];
53         insert(a[i],rt[i],1,cnt);
54     }
55 }
56  
57 inline void mainwork()
58 {
59     int l,r,up;
60     long long ans=0;
61     for(int i=1;i<=q;i++)
62     {
63         scanf("%d%d",&l,&r);
64         up=min(50,r-l+1);
65         for(int j=1;j<=up;j++)
66             b[j]=num[query(rt[l-1],rt[r],r-l+1-j+1,1,cnt)];
67         ans=-1;
68         for(int j=1;j<=up-2;j++)
69         if(b[j]<b[j+1]+b[j+2])
70         {
71             ans=b[j]+b[j+1]+b[j+2];
72             break;
73         }
74         printf("%lld\n",ans);
75     }
76 }
77  
78 int main()
79 {
80     while(~scanf("%d%d",&n,&q))
81     {
82         prework();
83         mainwork();
84         //print();
85     }
86     return 0;
87 }
View Code

 

转载于:https://www.cnblogs.com/songorz/p/11249771.html

  • 0
    点赞
  • 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、付费专栏及课程。

余额充值