佳木斯集训Day3

D3是我的巅峰

D3的出题人毒瘤!!!T3放了一道莫队,我们全体爆炸,到现在只有一个奆老A掉了T3

据说lkh被晓姐姐D了

T1是个26进制数,当时在考场上想了好久才想到(太次了)注意需要处理一下溢出的情况,不过幸好最后还是A了

 1 #include <bits/stdc++.h>
 2 #define MAXN 200050
 3 using namespace std;
 4 int n,point,start,finish,x=0;
 5 struct Node{
 6     int num;
 7     int cha;
 8 }h[MAXN];
 9 char a[MAXN],b[MAXN];
10 int c[MAXN];
11 int ans[MAXN];
12 int main()
13 {
14     char qq;
15     cin>>n;
16     for(int i=1;i<=n;i++)
17     {
18         cin>>qq;
19         a[i]=qq-'a';
20     }
21     for(int i=1;i<=n;i++)
22     {
23         cin>>qq;
24         b[i]=qq-'a';
25     }
26     for(int i=n;i>=1;i--)
27     {
28         if(ans[i]+a[i]+b[i]>=26)
29         {
30             ans[i]=ans[i]+a[i]+b[i]-26; 
31             ans[i-1]++;
32         }
33         else
34         ans[i]=ans[i]+a[i]+b[i];
35     }
36     for(int i=0;i<=n;i++)
37     {
38         int l;
39         l=ans[i];
40         ans[i]=ans[i]/2+x;
41         if(l%2==0)
42         x=0;
43         else x=13;
44     }
45     for(int i=1;i<=n;i++)
46     cout<<char(ans[i]+'a');
47 }
View Code

 

T2我写的大暴力,然后TLE20,最后正解是逆元和欧拉函数???

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int sz=3e5+1;
 4 const int mod=1e8+7;
 5 int n,x;
 6 int inv[sz],a[sz],b[sz];
 7 int cnt[sz],f[sz];
 8 void init(){
 9     a[0]=b[0]=1;
10     inv[1]=a[1]=b[1]=1;
11     for(int i=2;i<sz;i++){
12         inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
13         a[i]=1ll*a[i-1]*i%mod;
14         b[i]=1ll*b[i-1]*inv[i]%mod;
15     }
16 }
17 int C(int n,int m){
18     if(!n) return 0;
19     return 1ll*a[n]*b[m]%mod*b[n-m]%mod;
20 }
21 bool cur(int len){
22     for(int i=sz-1;i>=1;i--){
23         f[i]=C(cnt[i],len);
24         for(int j=2;i*j<sz;j++) f[i]=(f[i]-f[i*j]+mod)%mod;
25     }
26     return f[1];
27 }
28 int main(){
29     init();
30     scanf("%d",&n);
31     for(int i=1;i<=n;i++) scanf("%d",&x),cnt[x]++;
32     for(int i=1;i<sz;i++) for(int j=2;i*j<sz;j++) cnt[i]+=cnt[i*j];
33     x=1;
34     while(!cur(x)&x<=7) x++;
35     if(x<=7) printf("%d",x);
36     else printf("-1");
37 }
View Code

 

T3的莫队我也写的暴力(暴力大法好),也是TLE20,正解莫队,实在不会,这个坑先暂时放这里23333

代码嘛...奉上20分的把

 1 #include <bits/stdc++.h>
 2 #define MAXN 100050
 3 using namespace std;
 4 struct Node{
 5     int one;
 6     int two;
 7 }c[MAXN];
 8 int a[MAXN],sum1[MAXN],sum2[MAXN],t[MAXN],q,k,n,l,r;
 9 int lowbit(int x)
10 {
11     return x&(-x);
12 }
13 int update(int x,int y,int t)
14 {
15     for(int i=1;i<=1e5;i=i+lowbit(x))
16     {
17         if(t==1)
18         c[i].one=c[i].one+y;
19         else
20         c[i].two=c[i].two+y;
21     }   
22 }
23 int query(int x,int t)
24 {
25     int ans=0;
26     if(t==1)
27     {
28         for(int i=x;i>0;i=i-lowbit(x))
29     {
30         ans+=c[i].one;
31     }
32     return ans;
33     }
34     else
35     {
36         for(int i=x;i>0;i=i-lowbit(x))
37     {
38         ans+=c[i].two;
39     }
40     return ans;
41     }
42 }
43 int main()
44 {
45     cin>>n>>k;
46     for(int i=1;i<=n;i++)
47     {
48         cin>>t[i];
49     }
50     for(int i=1;i<=n;i++)
51     cin>>a[i];
52     cin>>q;
53     while(q--)
54     {
55         int ans=0;
56         cin>>l>>r;
57         for(int i=l;i<=r;i++)
58         {
59             int a1=0,a2=0,sum=0;
60             for(int j=i;j<=r;j++)
61             {
62                 if(t[j]==1)
63                 a1+=a[j];
64                 else a2+=a[j];
65                 if(a1-a2==k)
66                 sum++;
67                  
68             }ans+=sum;
69         }
70         cout<<ans<<endl;
71     }
72 }
View Code

 

posted @ 2019-08-06 14:55  落筱  阅读(108)  评论(0编辑  收藏  举报