难度:☆☆☆☆☆☆☆

题解: 有个定理,另sum(x)表示小于等于x的数中与x互质的数的和

sum(x)=φ(x)*x/2    最后可知f(x)=x  (f(1)=2)  当然打表能知道。

然后就转化为了求Σi^k

然后就是拉格朗日插值法了,不在我理解范畴........

但这个博客介绍挺好哒 http://www.cnblogs.com/ECJTUACM-873284962/p/6833391.html

std:

#include <cstring>
#include <ctime>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm> using namespace std; const int Mod=998244353;
const int MAXK=1000000; int power(int x,int k)
{
int ret=1;
while (k)
{
if (k&1) ret=1LL*ret*x%Mod;
x=1LL*x*x%Mod;
k>>=1;
}
return ret;
} int k; int f[MAXK+10]; int pre[MAXK+10],suf[MAXK+10]; int jc[MAXK+10],K[MAXK+10]; int cnt(int n)
{
if (n==0) return 0;
int ans=0;
if (n<=k+10 || n<=MAXK)
{
for (int i=1; i<=n; i++) ans=(K[i]+ans)%Mod;
}
else
{
pre[0]=1;
for (int i=1; i<=k+2; i++) pre[i]=1LL*pre[i-1]*(n-i)%Mod; suf[k+3]=1;
for (int i=k+2; i>=1; i--) suf[i]=1LL*suf[i+1]*(n-i)%Mod; int l=k+1,r=0,flag=((k+1)&1)?(-1):(1);
for (int i=1; i<=k+2; i++)
{
int s=1LL*pre[i-1]*suf[i+1]%Mod,m=1LL*(flag*jc[l]+Mod)*jc[r]%Mod;
ans=(1LL*f[i]*s%Mod*power(m,Mod-2)%Mod+ans)%Mod;
l--;
r++;
flag*=-1;
}
}
ans=((ans+K[2])%Mod-1+Mod)%Mod;
return ans;
} int L,R; void init()
{
cin>>L>>R>>k;
for (int i=1; i<=MAXK+5; i++) K[i]=power(i,k); jc[0]=1;
for (int i=1; i<=k+2; i++) jc[i]=1LL*jc[i-1]*i%Mod;
for (int i=1; i<=k+2; i++) f[i]=(f[i-1]+K[i])%Mod; cout<<(cnt(R)-cnt(L-1)+Mod)%Mod;
return ;
} int main()
{
freopen("count.in","r",stdin);
freopen("count.out","w",stdout);
init();
fclose(stdin);
fclose(stdout);
//fprintf(stderr,"%.3lf\n",1.0*clock()/(1.0*CLOCKS_PER_SEC));
return 0;
}

  

/*
题意转化为求最大的区间长度使得这段区间和减k>=0
首先做前缀和,可知若当前到了k,i<j<k && sum[i]<sum[j]则j一定不可能比i更优
用单调栈维护这个过程。然后倒序更新答案即可。
*/ #include<iostream>
#include<cstdio>
#include<cstring> #define N 1000007 using namespace std;
long long sum[N];
int a[N],st[N],top,n,m,cnt; inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} void solve(int k)
{
top=;int res=;
for(int i=;i<=n;i++)
{
sum[i]=sum[i-]+a[i]-k;
if(!top || sum[st[top]]>sum[i]) st[++top]=i;
}
for(int i=n;i>=;i--)
{
while(top && sum[i]>=sum[st[top]]) top--;
res=max(res,i-st[top+]);
}
printf("%d ",res);
} int main()
{
freopen("blocks.in","r",stdin);
freopen("blocks.out","w",stdout);
n=read();m=read();
for(int i=;i<=n;i++) a[i]=read();
while(m--) solve(read());
return ;
}

/*
将字符串倒序插入trie树,问题就转换成了若干字符串结束的LCA深度
倍增维护LCA,每插入一个字符串,处理一次fa数组就可以了
当然这题也可以哈希+二分
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define N 100007
#define M 1000007 using namespace std;
int Log[N],pos[N];
int n,m,len,cnt,sum;
char last[N],str[N];
struct Trie
{
int s[],f[];
int dep;
}tr[M]; inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} void insert(int x)
{
last[x]=str[len-];
int now=;
for(int i=len-;i>=;i--)
{
int id=str[i]-'a';
if(!tr[now].s[id])
{
tr[now].s[id]=++cnt;
tr[cnt].f[]=now;
tr[cnt].dep=tr[now].dep+;
for(int i=;i<=;i++)
{
tr[cnt].f[i]=tr[tr[cnt].f[i-]].f[i-];
if (tr[cnt].f[i]==) break;//再往后跳也不可能有f值.
}
}now=tr[now].s[id];
}pos[x]=now;
} inline void init()
{
for(int i=,now=-,next=;i<=N;i++)
{
if(i==next) now++,next<<=;
Log[i]=now;
}
} int up(int x,int step)
{
while (step)
{
int up=Log[step];
x=tr[x].f[up];
step-=(<<up);
}
return x;
} int LCA(int x,int y)
{
if(tr[x].dep>tr[y].dep) x=up(x,tr[x].dep-tr[y].dep);
else y=up(y,tr[y].dep-tr[x].dep);
if(x== || y==) puts("myjdsb"); int k=Log[tr[x].dep];
while(x!=y)
{
while(k>= && tr[x].f[k]==tr[y].f[k]) k--;
if(k==-) return tr[x].f[];
x=tr[x].f[k];y=tr[y].f[k];
}return x;
} int main()
{
freopen("biology.in","r",stdin);
freopen("biology.out","w",stdout);
init();
n=read();m=read();cnt=;sum=;
for(int i=;i<=n;i++)
{
scanf("%s",str);
len=strlen(str);
sum+=len;insert(i);
}
while(m--)
{
int ty=read();
if(ty==)
{
scanf("%s",str);
len=strlen(str);
insert(++n);
}
else
{
int T=read(),ans=;
while(T--)
{
int x=read();
if(!ans) ans=pos[x];
else ans=LCA(ans,pos[x]);
}
printf("%d\n",tr[ans].dep);
}
}
return ;
}

湖南集训day4的更多相关文章

  1. Loj #6069. 「2017 山东一轮集训 Day4」塔

    Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...

  2. Loj 6068. 「2017 山东一轮集训 Day4」棋盘

    Loj 6068. 「2017 山东一轮集训 Day4」棋盘 题目描述 给定一个 $ n \times n $ 的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置 $ (x, y),(u, ...

  3. 主席树 || 可持久化线段树 || BZOJ 3653: 谈笑风生 || Luogu P3899 [湖南集训]谈笑风生

    题面:P3899 [湖南集训]谈笑风生 题解: 我很喜欢这道题. 因为A是给定的,所以实质是求二元组的个数.我们以A(即给定的P)作为基点寻找答案,那么情况分两类.一种是B为A的父亲,另一种是A为B的 ...

  4. loj6068. 「2017 山东一轮集训 Day4」棋盘 二分图,网络流

    loj6068. 「2017 山东一轮集训 Day4」棋盘 链接 https://loj.ac/problem/6068 思路 上来没头绪,后来套算法,套了个网络流 经典二分图 左边横,右边列 先重新 ...

  5. P3900 [湖南集训]图样图森破

    P3900 [湖南集训]图样图森破 链接 分析: 感觉像个暴力. 可以枚举回文串的回文中心,即枚举一个串,枚举一个串的位置作为回文中心,然后求出这个串内的回文串的长度. 此时如果回文串两端都没有到这个 ...

  6. 集训Day4

    在bzoj刷了好几天杂题感觉手感不是很好 继续回来集训一下 好几天没更新了啊... bzoj1875 一个无向图,一个人要从起始点走$t$步走到终点,不能沿着刚走过来那条边回去,问有多少种走法 $m ...

  7. 佳木斯集训Day4

    Day4的出题人好毒瘤啊!!! T1我打表过的,正解现在也不会 #include <bits/stdc++.h> #define MAXN 10050 #define ll long lo ...

  8. 2022寒假集训day4

    day4(day5补完的) 继续刷搜索方面的题, 初步了解了序列. T1 迷宫问题 题目描述设有一个 n*n 方格的迷宫,入口和出口分别在左上角和右上角.迷宫格子中分别放 0 和 1 ,0 表示可通, ...

  9. FJ省队集训DAY4 T3

    #include<cstdio> #include<iostream> #include<cmath> #include<cstring> #inclu ...

随机推荐

  1. [Algorithm] 3. Digit Counts

    Description Count the number of k's between 0 and n. k can be 0 - 9. Example if n = 12, k = 1 in [0, ...

  2. NFS文件服务

    安装NFS服务 Yum install nfs-utils –y 2.关闭防火墙 service iptables stop 3./etc/exports NFS服务配置文件 /home/share ...

  3. Linux iostat-监视系统输入输出设备和CPU的使用情况

    推荐:更多linux 性能监测与优化 关注:linux命令大全 iostat命令被用于监视系统输入输出设备和CPU的使用情况.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.同vmsta ...

  4. 可以通过dict[key]获得dict[value]

    dict={key:value,key2:value2} print (dict[key] )    得到的是 dict[value] # 软文预存接口,通过key来预览未保存的软文,联查商品.kol ...

  5. Django-REST_Framework 第三方登录

    DRF第三方登录,我们将使用第三方包实现!!! 1.首先安装 pip install social-auth-app-django 文档请看 https://python-social-auth.re ...

  6. 使用js将Unix时间戳转换为普通时间

    var unixtime=1358932051;formatTime (time) { let unixtime = time let unixTimestamp = new Date(unixtim ...

  7. 转一篇GCC相关的文章

    http://blog.csdn.net/dadoneo/article/details/8201403 Glibc辅助运行库 (C RunTime Library): crt0.o,crt1.o,c ...

  8. PAT 1142 Maximal Clique

    A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the ...

  9. HDU 3784 继续xxx定律 & HDU 2578 Dating with girls(1)

    HDU 3784 继续xxx定律 HDU 2578 Dating with girls(1) 做3748之前要先做xxx定律  对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ ...

  10. New Barns

    New Barns 时间限制: 1 Sec  内存限制: 128 MB 题目描述 Farmer John notices that his cows tend to get into argument ...