“毕姥爷:今天的题好简单啊,你们怎么考得这么烂啊,如果是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. TP框架的增删改

    TP添加数据有三种方式 1. //1.使用数组添加 $n = M("nation"); $arr = array("Code"=>"n007&q ...

  2. 【BZOJ3270】博物馆 期望DP+高斯消元

    [BZOJ3270]博物馆 Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博物馆.这座博物馆有着特别的样式.它包含由m条走廊连接的n ...

  3. Springboot整合日志时候出现的问题

    上图是问题,按照路径去找下,发现其实是jar包重复导致的! 在对应的项目上,右键--->属性(Properties)--->JavaBuild Path  然后选择Libraries 页签 ...

  4. spring boot ajax post 前后端

    1 传输的数据格式是json 1.1 前端ajax json的所有的key都必须是双引号引用的,并且最外层也要用双引号引用.例如 "{"a":b, "b&quo ...

  5. TRansportation ANalysis and SIMulation System

    https://www.fhwa.dot.gov/planning/tmip/transims/background.cfm?from=groupmessage

  6. 【JavaScript专题】--- 立即执行函数表达式

    一 什么是立即执行函数表达式 立即执行函数表达式,其实也可以叫初始化函数表达式,英文名:IIFE,immediately-inovked-function expression.立即执行函数表达式就是 ...

  7. linux 字符驱动

    1 结构体说明:     struct cdev {         struct kobject kobj;          // 每一个 cdev 都是一个 kobject         st ...

  8. ABAP xml

    [转]Part 1 - Expressiveness of Simple TransformationsSimple Transformations are a SAP proprietary pro ...

  9. ubunbu退出nano

    无意中进入ubuntu GNU nano ctrl+x即可退出

  10. 每天一个Linux命令(17)whereis命令

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息.     (1)用法:   用法:    w ...