20171024

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20171024相关的知识,希望对你有一定的参考价值。

Luogu八连测ROUND4

T14561 

思路:模拟就好啦,前面定义变量的时候非常头不行的把f和len全定义成了char类型,然后gg...

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 char str[100005];
 6 int f,len;
 7 int main()
 8 {
 9     //freopen("T1.in","r",stdin);
10     //freopen("T1.out","w",stdout);
11     gets(str+1);
12     len=strlen(str+1);
13     for(int i=1;i<=len;++i)
14     {
15         if(str[i]==.)
16         {
17             f=0;
18             putchar(.);
19          } 
20         else if(str[i]== ) putchar( );
21         else if(str[i]>=a&&str[i]<=z)
22         {
23             if(!f) 
24                 putchar(str[i]-a+A);
25             else putchar(str[i]);
26             f=1;
27         }
28         else if(str[i]>=A&&str[i]<=Z)
29         {
30             if(f) putchar(str[i]-A+a);
31             else putchar(str[i]);
32             f=1;
33         }
34     }
35     return 0;
36 }

 

T14562

思路:链表,套啊套啊套就出来了,注意数组要开大一点,题目说是1e5但是开1e5+10的数组会有4个点RE...

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<queue>
 5 using namespace std;
 6 inline int read()
 7 {
 8     int f=1,x=0;char ch=getchar();
 9     while(ch<0||ch>9)
10     {
11         if(ch==-) f=-1;
12         ch=getchar();
13     }
14     while(ch>=0&&ch<=9)
15     {
16         x=x*10+ch-0;
17         ch=getchar();
18     }
19     return x*f;
20 }
21 int n,id[1000050];
22 bool vis[2000050];
23 struct node
24 {
25     int l,r,w;
26 }a[100050];
27 priority_queue<int> q;
28 queue<int> qwq;
29 int main()
30 {
31     n=read();
32     for(int i=1;i<=n;++i) a[i].w=read(),id[a[i].w]=i;
33     for(int i=1;i<n;++i)
34     {
35         a[i].l=i-1;
36         a[i].r=i+1;
37         q.push(a[i].w);
38     }
39     a[n].r=0;
40     a[n].l=n-1;
41     a[1].l=0;
42     a[1].r=2;
43     while(!q.empty())
44     {
45     //    int x=q.top();
46         while(vis[id[q.top()]])
47         {
48             q.pop();
49             if(q.empty()) break;
50         } 
51         if(q.empty()) break;
52         if(!a[id[q.top()]].r)
53         {
54             vis[id[q.top()]]=1;
55             continue;
56          } 
57         vis[id[q.top()]]=1;
58         vis[a[id[q.top()]].r]=1;
59         a[a[id[q.top()]].l].r=a[a[id[q.top()]].r].r;
60         a[a[a[id[q.top()]].r].r].l=a[id[q.top()]].l;
61         qwq.push(q.top());
62         qwq.push(a[a[id[q.top()]].r].w);
63     }
64     while(!qwq.empty())
65     {
66         printf("%d ",qwq.front());
67         qwq.pop();
68     }
69     return 0;
70 }

 

T14563

思路:dfs,枚举,嗯就酱。。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int ans,n,m,a[20][20],c[20][20],d[20];
inline int read()
{
    int x=0,f=1;
    char ch=getchar();
    while(ch<0||ch>9)
    {
        if(ch==-) f=-1;
        ch=getchar();
    }
    while(ch>=0&&ch<=9)
    {
        x=x*10+ch-0;
        ch=getchar();
    }
    return f*x;
}
bool check(int o)
{
    return o<=12&&(o%3==0?1:0);
}
void dfs(int stp)
{
    if(stp>n)
    {
        int res=0;
        for(int j=1;j<=m;++j)
        {
            c[j][0]=c[j][1]=c[j][2]=0;
            for(int i=1;i<=n;++i)
                for(int k=0;k<=2;++k)
                    c[j][k]+=check(d[i]+a[i][j]+k);
            res+=max(max(c[j][0],c[j][1]),c[j][2]);
        }
        ans=max(res,ans);
        return ;
    }
    for(int i=0;i<=2;++i)
    {
        d[stp]=i;
        dfs(stp+1);
    }
}
int main()
{
    n=read();m=read();
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            scanf("%d",&a[i][j]);
    dfs(1);
    printf("%d\n",ans);
 } 

-------------------------分割线--------------------------------------------------分割线--------------------------------------------------分割线--------------------------------------------------分割线--------------------------------------------------分割线-----------------------------------------------------------------------------------

数学大总结,从某julao手上low来的

具体算法思路详见《数学一本通》

  1 //组合数
  2 //C(n,m) 在n个数中选m个的方案数
  3 ll C[N][N];
  4 void get_C(int n)
  5 {
  6     for(int i=1;i<=n;i++)
  7     {
  8         C[i][i]=C[i][0]=1;
  9         for(int j=1;j<i;j++)
 10             C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
 11     }
 12 }
 13 //欧几里得算法
 14 //(a,b)
 15 ll gcd(ll a,ll b)
 16 {
 17     return b==0? a:gcd(b,a%b);
 18 }
 19 //拓展欧几里得算法
 20 //解同余方程 a*x+b*y = (a,b)
 21 ll exgcd(ll a,ll b,ll& d,ll& x,ll& y)
 22 {
 23     if(!b) { d=a; x=1; y=0; }
 24     else { exgcd(b,a%b,d,y,x); y-=x*(a/b); }
 25 }
 26 //逆元
 27 //a*inv(a,n) = 1 mod n
 28 ll inv(ll a,ll n)
 29 {
 30     ll d,x,y;
 31     exgcd(a,n,d,x,y);
 32     return d==1? (x+n)%n:-1;
 33 }
 34 //lucas定理
 35 //计算较大,有模数的组合数
 36 ll fac[N];
 37 void get_pre(int n)
 38 {
 39     for(int i=1;i<=n;i++)
 40         fac[i]=(fac[i-1]*i)%mod;
 41 }
 42 ll C(ll n,ll m,ll mod)
 43 {
 44     if(n<m) return 0;
 45     if(n<mod&&m<mod)
 46         return fac[n]*inv(fac[m],mod)%mod*inv(fac[n-m],mod)%mod;
 47     return C(n/mod,m/mod,mod)*C(n%mod,m%mod,mod)%mod;
 48 }
 49 //快速幂
 50 //a^p % mod
 51 ll pow(ll a,ll p,ll mod)
 52 {
 53     ll ans=1;
 54     while(p)
 55     {
 56         if(p&1) ans=(ans*a)%mod;
 57         a=(a*a)%mod; p>>=1;
 58     }
 59     return ans;
 60 }
 61 //中国剩余定理
 62 //解线性同余方程组
 63 //sigma{ ai*(1-ai*mi) } % M  , ai*mi+wi*y=1
 64 ll a[N],m[N];
 65 ll china(int n)
 66 {
 67     ll M=1,d,x=0,y;
 68     for(int i=1;i<=n;i++) M*=m[i];
 69     for(int i=1;i<=n;i++)
 70     {
 71         ll w=M/m[i];
 72         exgcd(m[i],w,d,d,y);
 73         x=(x+y*w*a[i])%M;
 74     }
 75     return (x+M)%M;
 76 }
 77 //大步小步算法
 78 //计算a^x=b mod n中的最小x
 79 map<int,int> mp;
 80 int BSGS(int a,int b,int n)
 81 {
 82     int m=sqrt(n)+1,e=1,i;
 83     int v=inv(pow(a,m,n),n);
 84     mp[e]=0;
 85     for(i=1;i<m;i++)
 86     {
 87         e=(e*m)%n;
 88         if(!mp.count(e)) mp[e]=i;
 89     }
 90     for(i=0;i<m;i++)
 91     {
 92         if(mp.count(b)) return i*m+mp[b];
 93         b=(b*v)%mod;
 94     }
 95     return -1;
 96 }
 97 //快速筛法求素数表
 98 int su[N],vis[N];
 99 void get_su(int n)
100 {
101     for(int i=2;i<=n;i++)
102     {
103         if(!vis[i]) su[++su[0]]=i;
104         for(int j=1;j<=su[0]&&i*su[j]<=n;j++)
105         {
106             vis[i*su[j]]=1;
107             if(i%su[j]==0) break;
108         }
109     }
110 }
111 //欧拉函数
112 //phi(n)小于n的数中与n互素的数的个数
113 ll get_phi(int n)
114 {
115     int m=sqrt(n)+1;
116     ll ans=n;
117     for(int i=2;i<=m;i++) if(n%i==0)
118     {
119         ans=ans/i*(i-1);
120         while(n%i==0) n/=i;
121     }
122     if(n>1) ans=ans/n*(n-1);
123     return ans;
124 }
125 ll phi[N];
126 void get_phi_table(int n)
127 {
128     phi[1]=1;
129     for(int i=2;i<=n;i++) if(!phi[i])
130     {
131         for(int j=i;j<=n;j+=i)
132         {
133             if(!phi[j]) phi[j]=j;
134             phi[j]=phi[j]/i*(i-1);
135         }
136     }
137 }<br>//莫比乌斯函数
138 int mu[N],su[N],vis[N];
139 void get_mu(int n)
140 {
141     mu[1]=1;
142     for(int i=2;i<=n;i++)
143     {
144         if(!vis[i]) mu[i]=-1,su[++su[0]]=i;
145         for(int j=1;j<=su[0]&&i*su[j]<=n;j++)
146         {
147             vis[i*su[j]]=1;
148             if(i%su[j]==0) mu[i*su[j]]=0;
149             else mu[i*su[j]]=-mu[i];
150         }
151     }
152 }
153 //高斯消元
154 //解线性方程组
155 double a[N][N];
156 void gause(int n)
157 {
158     for(int i=1;i<=n;i++)
159     {
160         int r=i;
161         for(int j=i+1;j<=n;j++)
162             if(fabs(a[j][i])>fabs(a[r][i])) r=i;
163         for(int j=1;j<=n+1;j++) swap(a[i][j],a[r][j]);
164         for(int j=n+1;j>=i;j--)
165             for(int k=i+1;k<=n;k++)
166                 a[k][j]-=a[k][i]/a[i][i]*a[i][j];
167     }
168     for(int i=n;i;i--)
169     {
170         for(int j=i+1;j<=n;j++)
171             a[i][n+1]-=a[j][n+1]*a[i][j];
172         a[i][n+1]/=a[i][i];
173     }
174 }

 

以上是关于20171024的主要内容,如果未能解决你的问题,请参考以下文章

20171024

[欢乐赛]20171024

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?