Count(哈格朗日插值)

题解: 有个定理,另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

#include<iostream>
#include<cstdio>
#include<cstring>
#define mod 998244353
#ifdef WIN32
#define PLL "%I64d"
#else
#define PLL "%lld"
#endif
using namespace std;
int l,r,k;
long long ans;
long long mul(long long a,long long b){
long long res=;
while(b){
if(b&)res=res+a;
a=a+a;
if(res>=mod)res-=mod;
if(a>=mod)a-=mod;
b>>=;
}
return res;
}
long long Pow(long long a,int b){
long long res=;
while(b){
if(b&)res=mul(res,a);
a=mul(a,a);
b>>=;
}
return res;
}
int main(){
freopen("count.in","r",stdin);freopen("count.out","w",stdout);
//freopen("Cola.txt","r",stdin);
scanf("%d%d%d",&l,&r,&k);
for(int i=l;i<=r;i++){
if(i==)ans+=Pow(,k);
else ans+=Pow(i,k);
if(ans>=mod)ans-=mod;
}
printf(PLL,ans);
//cout<<ans;
}

15分 暴力

Block

/*
题意转化为求最大的区间长度使得这段区间和减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 ;
}

100分

Biology(Trie树+lca)

#include<iostream>
#include<cstring>
#include<cstdio>
#define maxn 1000010
#define root 1
using namespace std;
int n,m,tr[maxn][],num,id[],tc=,fa[maxn],dep[maxn];
char s[];
void Insert(){
int now=root;
for(int i=strlen(s+);i>=;i--){
int p=s[i]-'a';
if(tr[now][p]==){
tr[now][p]=++tc;
fa[tc]=now;
dep[tc]=dep[now]+;
}
now=tr[now][p];
}
id[num]=now;
}
int lca(int a,int b){
while(a!=b){
if(dep[a]<dep[b])swap(a,b);
a=fa[a];
}
return a;
}
int main(){
freopen("biology.in","r",stdin);freopen("biology.out","w",stdout);
//freopen("Cola.in","r",stdin);
scanf("%d%d",&n,&m);
fa[]=;dep[]=;
for(int i=;i<=n;i++){
scanf("%s",s+);
num=i,Insert();
}
int op,nn,x;
for(int i=;i<=m;i++){
scanf("%d",&op);
if(op==){
scanf("%s",s+);
num++;
Insert();
}
else{
scanf("%d",&nn);
int now;
for(int j=;j<=nn;j++){
scanf("%d",&x);
if(j==)now=id[x];
else now=lca(now,id[x]);
}
printf("%d\n",dep[now]);
}
}
/*int sz=sizeof(tr)+sizeof(id)+sizeof(fa)+sizeof(dep);
cout<<sz/1048576;*/
return ;
}
/*
5 5
zzj
pri
prime
ime
owaski
2 3 1 3 5
2 2 2 3
1 actri
2 2 3 4
2 3 2 6 5
*/

80分 Trie树+暴力lca

#include<iostream>
#include<cstring>
#include<cstdio>
#define maxn 1000010
#define root 1
using namespace std;
int n,m,tr[maxn][],num,id[],tc=,fa[maxn][],dep[maxn];
char s[];
void Insert(){
int now=root;
for(int i=strlen(s+);i>=;i--){
int p=s[i]-'a';
if(tr[now][p]==){
tr[now][p]=++tc;
dep[tc]=dep[now]+;
fa[tc][]=now;
for(int j=;j<=;j++)fa[tc][j]=fa[fa[tc][j-]][j-];
}
now=tr[now][p];
}
id[num]=now;
//for(int i=1;i<=18;i++)fa[now][i]=fa[fa[now][i-1]][i-1];
}
int lca(int a,int b){
if(dep[a]<dep[b])swap(a,b);
for(int i=;i>=;i--)
if(dep[fa[a][i]]>=dep[b])a=fa[a][i];
for(int i=;i>=;i--)
if(fa[a][i]!=fa[b][i])
a=fa[a][i],b=fa[b][i];
if(a==b)return a;
return fa[a][];
}
int main(){
freopen("biology.in","r",stdin);freopen("biology.out","w",stdout);
//freopen("Cola.txt","r",stdin);
scanf("%d%d",&n,&m);
fa[][]=;dep[]=;
for(int i=;i<=n;i++){
scanf("%s",s+);
num=i,Insert();
}
int op,nn,x;
for(int i=;i<=m;i++){
scanf("%d",&op);
if(op==){
scanf("%s",s+);
num++;
Insert();
}
else{
scanf("%d",&nn);
int now;
for(int j=;j<=nn;j++){
scanf("%d",&x);
if(j==)now=id[x];
else now=lca(now,id[x]);
}
printf("%d\n",dep[now]);
}
}
/*int sz=sizeof(tr)+sizeof(id)+sizeof(fa)+sizeof(dep);
cout<<sz/1048576;*/
return ;
}
/*
5 5
zzj
pri
prime
ime
owaski
2 3 1 3 5
2 2 2 3
1 actri
2 2 3 4
2 3 2 6 5
*/

100分 Trie树+倍增lca

2017-10-19 NOIP模拟赛的更多相关文章

  1. 2017 10.25 NOIP模拟赛

    期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w    O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意, ...

  2. 10.17 NOIP模拟赛

    目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...

  3. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

  4. 2018.10.16 NOIP模拟赛解题报告

    心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...

  5. 2016.10.30 NOIP模拟赛 day2 PM 整理

    满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...

  6. 2016.10.30 NOIP模拟赛 day2 AM 整理

    题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分  2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...

  7. 2017.5.27 NOIP模拟赛(hzwer2014-5-16 NOIP模拟赛)

    期望得分:100+100+60+30=290 实际得分:100+20+60+0=180 当务之急:提高一次正确率 Problem 1 双色球(ball.cpp/c/pas) [题目描述] 机房来了新一 ...

  8. 2017.6.11 NOIP模拟赛

    题目链接: http://files.cnblogs.com/files/TheRoadToTheGold/2017-6.11NOIP%E6%A8%A1%E6%8B%9F%E8%B5%9B.zip 期 ...

  9. 2018.10.03 NOIP+ 模拟赛 解题报告

    得分: \(30+5+0=35\)(考得真不咋滴) \(T1\):奥义商店(点此看题面) 以为很简单,对着这题想了一个多小时,最后果断打了个暴力交了... ... 看完题解发现其实也不是很难. 对于\ ...

  10. 2018.10.30 NOIp模拟赛 T1 改造二叉树

    [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他又和他人讨论 ...

随机推荐

  1. jQuery-中的事件

    [jQuery中的事件] javascript和html之间的交互是通过用户和浏览器操作页面时引发的事件来处理的,虽然传统的javascript能完成这些交互,但事jQuery增加并扩充了基本事件处理 ...

  2. 快速构建hibernate框架

    手动配置Hibernate框架的配置,极易出现问题,在Eclipse的web项目中,我们可以快速配置,方便快捷 一.导入Hibernate框架所需要的jar文件 二. 窗口—Perspective—打 ...

  3. Eclipse_debug异常_Source not found

    一.现象 在eclipse中,打了断点之后运行代码,出现debug异常:Source not found,如下图 原因 找不到源码. 解决方案 添加源码即可 1.Edit Source Lookup ...

  4. Bootstrap-菜单,导航,按钮

    1.下拉菜单(基本用法) 在Bootstrap框架中的下拉菜单组件是一个独立的组件,根据不同的版本,它对应的文件: ☑  LESS版本:对应的源码文件为 dropdowns.less ☑  Sass版 ...

  5. ACM学习历程—ZOJ3785 What day is that day?(数论)

    Description It's Saturday today, what day is it after 11 + 22 + 33 + ... + NN days? Input There are ...

  6. 标准模板库(STL)学习指南之map映射

    转载自CSDN博客:http://blog.csdn.net/bat603/article/details/1456141 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关 ...

  7. 桥接以及Mercury MW54R中继

    家里连个路由器,一个是比较先进的TP-Link的TL-WR842N(100M),另外一个是比较古老的水星(Mercury) MW54R(54M),我们知道新的路由器都有WDS功能,方便作为副路由器(中 ...

  8. android开发之Bitmap 、byte[] 、 Drawable之间的相互转换

    一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...

  9. ng2 中使用echart

    1.首先创建echarts指令 //echart.directive.ts important { Directive,ElementRef,Input,Ouput,Onchanges,OnInit, ...

  10. shutdown-用于关闭/重启计算机

    Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执行shutdown命令时,系统会给每个终端(用户)发送一条屏显,提 ...