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. 分享知识-快乐自己:idea的断点调试

    1:Step Over ,进入下一步,如果是方法,那就直接跳过(F8) 2:Step Into,进入下一步,如果是方法,就进入方法内部,但是不会进入jdk封装的方法.(F7) 3:Force Step ...

  2. python自动化开发学习 I/O多路复用

    python自动化开发学习 I/O多路复用   一. 简介 socketserver在内部是由I/O多路复用,多线程和多进程,实现了并发通信.IO多路复用的系统消耗很小. IO多路复用底层就是监听so ...

  3. 一个很有参考意义的unity博客

    http://blog.csdn.net/lyh916/article/details/45133101

  4. vue-mixins使用注意事项和高级用法

    因为在项目中 mixins(混合)特性使用频率是很高的 有必要熟练掌握官方文档: mixins 实际项目中 一般都存在 列表(list) 这种很常见的使用场景 话再多都不如上demo file: mi ...

  5. Java_io_02_从一个目录拷贝文件到另一个目录下

    java从一个目录拷贝文件到另一个目录下   http://www.cnblogs.com/langtianya/p/4857524.html ** * 复制单个文件 * @param oldPath ...

  6. Java丨验证码图片去除干扰像素,方便验证码的识别

    1.先来看看效果: 原图 除去干扰像素后 2.解析代码: 1).读取文件夹里面的图片 String fileName = "picture"; BufferedImage img ...

  7. 关于CMainFrm不接收鼠标事件响应原因

    CMainFrm即主框架窗口对鼠标的左键和右键在OnLButtonDown中无响应 解决方案: 1.在OnNcLButtonDown中响应.(即非客户区中响应) 参考文献:http://www.cod ...

  8. Mex混合编程专题一:Mex环境搭建

    使用Matlab时间长了,难免会碰到使用mex文件的经历,不管是别人的还是自己的,就比如MatConvNet(http://www.vlfeat.org/matconvnet/)使用了混合编程的技术实 ...

  9. Angular Chart 使用说明(基于angular工程)

    Angular Chart是基于Chart.js的angular组件,引入项目后直接操作数据即可. 引用方法:    分别将Chart.js.angular-chart.js.angular-char ...

  10. grep的用法(转)

    grep参数 -c  : 显示匹配的行数(就是显示有多少行匹配了): -n :显示匹配内容所在文档的行号: -i  :匹配时忽略大小写: -s :错误信息不输出: -v :输出不匹配内容: -o : ...