“毕姥爷:今天的题好简单啊,你们怎么考得这么烂啊,如果是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. 【基础版限时免费】致敬WebForms,ASP.NET Core也能这么玩!

    ASP.NET WebForms ASP.NET WebForms 随着微软 2000 年的 .Net Framework 一起发布,至今也将近 20 年的时间.相信很多人和我一样,对 WebForm ...

  2. Lifting the Stone(多边形重心)

    Lifting the Stone Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  3. 我的Android进阶之旅------>Android关于TextWatcher的初步了解

    首先来看一下TextWatcher的源代码 package android.text; /** * When an object of a type is attached to an Editabl ...

  4. 我的Android进阶之旅------>android中getLocationInWindow 和 getLocationOnScreen的区别

    View.getLocationInWindow(int[] location) 一个控件在其父窗口中的坐标位置 View.getLocationOnScreen(int[] location) 一个 ...

  5. 我的Android进阶之旅------>对Android开发者有益的40条优化建议

    下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...

  6. python+NLTK 自然语言学习处理五:词典资源

    前面介绍了很多NLTK中携带的词典资源,这些词典资源对于我们处理文本是有大的作用的,比如实现这样一个功能,寻找由egivronl几个字母组成的单词.且组成的单词每个字母的次数不得超过egivronl中 ...

  7. mysql 大数据 查询方面的测试

    ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适应场景: 适用于数据量较少的情况(元组百/千 ...

  8. 【leetcode刷题笔记】Subsets

    Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...

  9. 【FLASK模板】set,with语句

    # set with 语句 ###set语句:在模板中, 可以使用 ‘set’语句来定义变量, 实例如下: <body> {% set username='zhiliaoketang' % ...

  10. P4388 付公主的矩形(gcd+欧拉函数)

    P4388 付公主的矩形 前置芝士 \(gcd\)与欧拉函数 要求对其应用于性质比较熟,否则建议左转百度 思路 有\(n×m\)的矩阵,题目要求对角线经过的格子有\(N\)个, 设函数\(f(x,y) ...