“毕姥爷:今天的题好简单啊,你们怎么考得这么烂啊,如果是noip你们就凉透了啊“

今天的题难度应该是3、2、1递减的,但是我不知道哪根筋没搭对,平时我最多1h多就弃题了,今天硬生生写了2h20min的T1,要不是倒数50min的时候把T1样例过了,可能今天就废了。然鹅我T只有10pt……然后10min打了T3的50pt,剩下40min打T2的30pt,75pt,100pt然后开开心心地拍还发现30pt部分写错了。

B 君的第一题 python

哪个啥子自动机,似乎就是把kmp跳到的地方预处理出来,然后我没有预处理直接跳并且我dp的状态没对,我的f[l][x]是走l步走到x点的方案数,这样会只能找到长度并没法输出第n小。。我就又开了一维记录第一位的数然后乱搞也是看每一位够不够然后出现了各种问题,搞到了70pt再也搞不下去了。

正解是f[l][x]表示从x点出发走l步到达终止状态的方案数,x是初始状态,这就很好了。最后找答案的时候一位位确定,确定了前面的位就知道在自动机上走到哪个位置了,问一下个要选到哪个就非常方便了。具体见代码。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=;
typedef unsigned long long LL;
typedef double db;
const LL up=1e18;
using namespace std;
char s[N];
int len,nxt[N],ts[N][];
LL n,f[N][N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} void kmp() {
for(int i=,k=;i<len;i++) {
while(k&&s[i]!=s[k]) k=nxt[k-];
if(s[i]==s[k]) k++;
nxt[i]=k;
}
For(i,,) ts[len][i]=len;
For(i,,len-) {
For(x,,) {
int k=i;
while(s[k]-''!=x&&k) k=nxt[k-];
if(s[k]-''==x) k++;
ts[i][x]=k;
}
}
} LL mo(LL x) {
return x>up?up:x;
} int ans[N];
void print(int l) {
int np=;
Rep(p,l,) {
For(x,(p==l),) {
if(f[p-][ts[np][x]]>=n) {
np=ts[np][x];
printf("%d",x); break;
}
else n-=f[p-][ts[np][x]];
}
}
} #define ANS
int main() {
#ifdef ANS
freopen("python.in","r",stdin);
freopen("python.out","w",stdout);
#endif
scanf("%s",s);
len=strlen(s);
kmp();
read(n);
f[][len]=;
LL tp=;
for(int l=;;l++) {
if(tp>=n) {
print(l); break;
}
if(l) n-=tp;
tp=;
For(j,,len) For(x,,) {
f[l+][j]=mo(f[l+][j]+f[l][ts[j][x]]);
if(x&&j==) tp=mo(tp+f[l][ts[j][x]]);
}
}
Formylove;
}

B 君的第二题 ruby

T2似乎被所有人秒了啊,线段树维护两个标记维护bfs序就好了。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=,p=;
typedef long long LL;
typedef double db;
using namespace std;
int n,m,x;
LL k,b; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} LL v[N];
int ecnt,fir[N],nxt[N<<],to[N<<];
void add(int u,int v) {
nxt[++ecnt]=fir[u]; fir[u]=ecnt; to[ecnt]=v;
nxt[++ecnt]=fir[v]; fir[v]=ecnt; to[ecnt]=u;
} LL mo(LL x) { return x>=p?x-p:x; } #define lc (x<<1)
#define rc ((x<<1)|1)
#define mid ((l+r)>>1)
LL sg[N<<],lz[N<<],lz2[N<<];
void cg(int x,int len,LL k,LL v) {
sg[x]=mo(sg[x]*k%p+v*len%p);
lz[x]=mo(lz[x]*k%p+v);
lz2[x]=lz2[x]*k%p;
} void down(int x,int l_len,int r_len) {
if(!lz[x]&&lz2[x]==) return;
cg(lc,l_len,lz2[x],lz[x]);
cg(rc,r_len,lz2[x],lz[x]);
//sg[lc]=mo(sg[lc]+l_len*lz[x]%p); lz[lc]=mo(lz[lc]+lz[x]);
//sg[rc]=mo(sg[rc]+r_len*lz[x]%p); lz[rc]=mo(lz[rc]+lz[x]);
lz[x]=; lz2[x]=;
} void upd(int x,int l,int r,int ql,int qr,LL k,LL v) {
if(l>=ql&&r<=qr) {
cg(x,r-l+,k,v);
return;
}
down(x,mid-l+,r-mid);
if(ql<=mid) upd(lc,l,mid,ql,qr,k,v);
if(qr>mid) upd(rc,mid+,r,ql,qr,k,v);
sg[x]=mo(sg[lc]+sg[rc]);
} LL qry(int x,int l,int r,int ql,int qr) {
if(l>=ql&&r<=qr) return sg[x];
down(x,mid-l+,r-mid);
if(qr<=mid) return qry(lc,l,mid,ql,qr);
if(ql>mid) return qry(rc,mid+,r,ql,qr);
return mo(qry(lc,l,mid,ql,qr)+qry(rc,mid+,r,ql,qr));
} queue<int>que;
int fa[N],son[N],fson[N],dfn[N],dfk;
void bfs() {
que.push();
while(!que.empty()) {
int x=que.front();
dfn[x]=++dfk;
que.pop();
for(int i=fir[x];i;i=nxt[i]) if(to[i]!=fa[x]) {
son[x]++;
if(son[x]==) fson[x]=to[i];
fa[to[i]]=x;
que.push(to[i]);
}
}
} #define ANS
int main() {
#ifdef ANS
freopen("ruby.in","r",stdin);
freopen("ruby.out","w",stdout);
#endif
read(n); read(m);
For(i,,n) {
int x,y;
read(x); read(y);
add(x,y);
}
bfs();
memset(lz2,,sizeof(lz2));
For(i,,m) {
read(x); read(k); read(b);
upd(,,n,dfn[x],dfn[x],k,b);
if(fa[x]) upd(,,n,dfn[fa[x]],dfn[fa[x]],k,b);
if(son[x]) upd(,,n,dfn[fson[x]],dfn[fson[x]]+son[x]-,k,b);
LL rs=;
rs=mo(rs+qry(,,n,dfn[x],dfn[x]));
if(fa[x]) rs=mo(rs+qry(,,n,dfn[fa[x]],dfn[fa[x]]));
if(son[x]) rs=mo(rs+qry(,,n,dfn[fson[x]],dfn[fson[x]]+son[x]-));
printf("%lld\n",rs);
}
Formylove;
}

B 君的第三题 haskell

很智障的题,然后机房得分超低,毕姥爷说我们大概是要凉了。

k=1的时候算每条边两边的点就知道每条边的贡献了。

如果一条路径长度mod k==x贡献就要加上k-x,最后答案除以k。k很小只有10,那么统计长度mod k=0~9的路径条数就好了。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int n,k;
LL ans; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int ecnt,fir[N],nxt[N<<],to[N<<],val[N<<];
void add(int u,int v,int w) {
nxt[++ecnt]=fir[u]; fir[u]=ecnt; to[ecnt]=v; val[ecnt]=w;
nxt[++ecnt]=fir[v]; fir[v]=ecnt; to[ecnt]=u; val[ecnt]=w;
} int sz[N];
LL f[N][],c[];
void dfs(int x,int fa) {
sz[x]=;
f[x][]=;
for(int i=fir[x];i;i=nxt[i]) if(to[i]!=fa) {
int y=to[i];
dfs(y,x);
sz[x]+=sz[y];
ans+=(LL)val[i]*sz[y]*(n-sz[y]);
For(a,,k-) For(b,,k-)
c[(a+b+val[i])%k]+=f[x][a]*f[y][b];
For(a,,k-)
f[x][(a+val[i])%k]+=f[y][a];
}
} #define ANS
int main() {
#ifdef ANS
freopen("haskell.in","r",stdin);
freopen("haskell.out","w",stdout);
#endif
read(n); read(k);
For(i,,n) {
int x,y,z;
read(x); read(y); read(z);
add(x,y,z);
}
dfs(,);
For(i,,k-)
ans+=c[i]*(k-i);
printf("%lld\n",ans/k);
Formylove;
}

NOIp2018集训test-10-16 (bike day2)的更多相关文章

  1. [NOIP2018模拟赛10.16]手残报告

    [NOIP2018模拟赛10.16]手残报告 闲扯 炉石乱斗模式美滋滋啊,又颓到好晚... 上来T2先敲了树剖,看T1发现是个思博DP,然后没过大样例,写个暴力发现还是没过大样例!?才发现理解错题意了 ...

  2. NOIp2018集训test-9-16(联考二day2)

    T1旋转子段 一开始脑袋抽了花了近一个小时写了个跟这题毫无关系的莫名其妙的代码,一急代码就各种bug,最后t1就花了一个半小时多,然后后面时间不太够了,考得稀烂. 因为每个数存在唯一的中心使得绕这个中 ...

  3. NOIp2018集训test-10-22 (联考六day2)

    中间值 两个log肯定会被卡.我用的第一种做法,就是要各种特判要在两个序列都要二分比较麻烦. //Achen #include<bits/stdc++.h> #define For(i,a ...

  4. 背水一战 Windows 10 (16) - 动画: ThemeAnimation(主题动画)

    [源码下载] 背水一战 Windows 10 (16) - 动画: ThemeAnimation(主题动画) 作者:webabcd 介绍背水一战 Windows 10 之 动画 PopInThemeA ...

  5. ERROR 2003 (HY000): Can&#39;t connect to MySQL server on &#39;10.16.115.101&#39; (111)

    ubuntu安装之后mysql,使用apt-get安装命令,默认为同意只本地访问 root@idata1:~/software# mysql -uroot -p123456 -h10.16.115.1 ...

  6. 10.16 NOIP模拟赛

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

  7. ERROR: openstack Error finding address for http://10.16.37.215:9292/v1/images: [Errno 32] Broken pipe

    Try to set: no_proxy=10.16.37.215 this should help 转自: http://askubuntu.com/questions/575938/error-i ...

  8. 2019.10.16&17小结

    话说也蛮久没写小结了,主要这两次考试失分严重,还是总结下吧. 10.16 T1 小奇挖矿2 100/0 [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市 ...

  9. NOIp2018集训test-10-6/test-10-7 (联考五day1/day2)

    昨天考完月考,明天初赛,dcoi2017级今天终于开始停课准备noip了,大概没有比本弱校停课更晚的学校了吧.本来就够菜了,怕是要凉透哦. DAY1 T1石头剪刀布 据说爆搜随便做,但是我觉得我的O( ...

随机推荐

  1. Stacks of Flapjacks(栈)

     Stacks of Flapjacks  Background Stacks and Queues are often considered the bread and butter of data ...

  2. vue项目创建流程和使用

    vue项目的创建 npm run dev 让项目执行起来 #下载vuex npm install vuex --save#下载axiosnpm install axios --save 当我们生成项目 ...

  3. linux c编程:系统数据文件和信息

    linux系统相关的文件信息包含在/etc/passwd文件和/etc/group中.每次登录linux系统以及每次执行ls -l命令时都要使用口令文件.这些字段都包含在<pwd.h>中定 ...

  4. TensorFlow 初级教程(三)

    TensorFlow基本操作 import os import tensorflow as tf os.environ[' # 使用TensorFlow输出Hello # 创建一个常量操作( Cons ...

  5. linux基础part2

    linux基础 一.linux基础命令 1.pwd:用来显示当前目录位置 2.cd:用来切换目录位置.(eg:cd...cd../...cd-.cd~) 3.ls:用来查看目录或文件信息(eg:ls ...

  6. HDU - 1430 魔板 【BFS + 康托展开 + 哈希】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1430 思路 我刚开始 想到的 就是 康托展开 但是这个题目是 多组输入 即使用 康托展开 也是会T的 ...

  7. linux操作系统使用中的一些总结

    VIM常用命令 gg   //到第一行 (N)G   //到第n行(N为整数) G    //到最后一行 0    //到行头 $  //到行尾 (N)dd  //删除N行,并将内容保存到粘贴板 p ...

  8. 0523 CSS知识点

    高级选择器分为:后代选择器.子代选择器.并集选择器.交集选择器 后代选择器 使用空格表示后代选择器.顾名思义,父元素的后代(包括儿子,孙子,重孙子) .father .item .a p{color: ...

  9. STL+位运算的文件

    1.queue 队列 queue的头文件是<queue>. 定义queue对象的示例代码如: queue<int>q;  队列内存放的是int类型的数 queue<dou ...

  10. XShell 连接虚拟机中的服务器 失败 、连接中断(Connection closed by foreign host.)

    在使用XShell连接虚拟机中的服务器时,报以下错误并断开连接,之前连接还是挺稳定的,忽然就这样了 Last login: Thu Aug :: from 192.168.1.102 [root@no ...