NOIp2018集训test-10-16 (bike day2)
“毕姥爷:今天的题好简单啊,你们怎么考得这么烂啊,如果是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)的更多相关文章
- [NOIP2018模拟赛10.16]手残报告
[NOIP2018模拟赛10.16]手残报告 闲扯 炉石乱斗模式美滋滋啊,又颓到好晚... 上来T2先敲了树剖,看T1发现是个思博DP,然后没过大样例,写个暴力发现还是没过大样例!?才发现理解错题意了 ...
- NOIp2018集训test-9-16(联考二day2)
T1旋转子段 一开始脑袋抽了花了近一个小时写了个跟这题毫无关系的莫名其妙的代码,一急代码就各种bug,最后t1就花了一个半小时多,然后后面时间不太够了,考得稀烂. 因为每个数存在唯一的中心使得绕这个中 ...
- NOIp2018集训test-10-22 (联考六day2)
中间值 两个log肯定会被卡.我用的第一种做法,就是要各种特判要在两个序列都要二分比较麻烦. //Achen #include<bits/stdc++.h> #define For(i,a ...
- 背水一战 Windows 10 (16) - 动画: ThemeAnimation(主题动画)
[源码下载] 背水一战 Windows 10 (16) - 动画: ThemeAnimation(主题动画) 作者:webabcd 介绍背水一战 Windows 10 之 动画 PopInThemeA ...
- ERROR 2003 (HY000): Can't connect to MySQL server on '10.16.115.101' (111)
ubuntu安装之后mysql,使用apt-get安装命令,默认为同意只本地访问 root@idata1:~/software# mysql -uroot -p123456 -h10.16.115.1 ...
- 10.16 NOIP模拟赛
目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...
- 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 ...
- 2019.10.16&17小结
话说也蛮久没写小结了,主要这两次考试失分严重,还是总结下吧. 10.16 T1 小奇挖矿2 100/0 [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市 ...
- NOIp2018集训test-10-6/test-10-7 (联考五day1/day2)
昨天考完月考,明天初赛,dcoi2017级今天终于开始停课准备noip了,大概没有比本弱校停课更晚的学校了吧.本来就够菜了,怕是要凉透哦. DAY1 T1石头剪刀布 据说爆搜随便做,但是我觉得我的O( ...
随机推荐
- 忘记glassfish密码,那就重置密码呗
方法一:如果现有的 domain 上并没有你所需要的东西,删除现有的 domain,重新创建一个 domain. 找到安装glassfish的目录下的 \bin\asadmin 目录,然后打开asad ...
- POJ 2092 Grandpa is Famous【水---找出现第二多的数】
链接: http://poj.org/problem?id=2092 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=27454#probl ...
- 九度OJ 1206:字符串连接 (字符串操作)
时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:4127 解决:1957 题目描述: 不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来. 输入: 每一行包括两个 ...
- 【python】-- 函数非固定参数,返回值(return)
函数非固定参数 1.默认参数: 代码如下: def information_register(name,age,country,sex): print("----注册信息------&quo ...
- iOS线程浅析
一.线程概述 1. iOS里面的线程按种类可分为同步线程和异步线程.同步线程指调用同步线程的地方必须等到同步线程运行完成才干够继续向下运行.而调用异步线程的地方则在运行完调用异步线程的语句后就能够继续 ...
- JVM性能优化, Part 5 Java的伸缩性
很多程序员在解决JVM性能问题的时候,花开了很多时间去调优应用程序级别的性能瓶颈,当你读完这本系列文章之后你会发现我可能更加系统地看待这类的问题.我说过JVM的自身技术限制了Java企业级应用的伸缩性 ...
- vim 一键添加注释 自动添加文件头注释
估计大家也都和我一样用过不少的编辑器,什么notepad2,emeditor,editplus,ultraedit,vs2005,sourceinsight,slickedit,emacs,vim(g ...
- 数组元素的删除 【vector】
7-5 数组元素的删除(5 分) 完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素删除了,后面的元素依次前进一个位置. 重复若干次这样的删除,得到最后的结果. 输入格 ...
- Mysql——JDBC编程 简单的例子
第一类连接Mysql方法见下图: 第二类连接Mysql方法:(跟第一类差不多,并提供查询操作) 首先在Mysql中建立testjdbc数据库,在该数据库下面建立Student表: 参考代码: CREA ...
- 【leetcode刷题笔记】3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...