济南day3
连续几天都有点炸
预计的分拿不到,调整好心态,考试的时候多想一下,think twice,code once
唉,什么情况啊
0+0+0
T1读错题输出反了
n*m%2判断是否==1
T2
40分暴力忘记取mod了,全炸了gg
T3
70分暴力输出了中间变量,然后主席树写成了区间第k小,gg
建立10颗线段树维护前k大,因为k<=10
总结:以后认真点.....多推一下样例,合理分配时间,多思考
做完之后检查,最后几分钟不调新程序
下午
我可能只能口头ac了,考完后都能说出正解,就是写不来,也许不吃饭就考不好????,我好菜啊
10+20+10
没状态,笔记本不好用,其实T2和T3是都可以切的,但是做了T1,虽然最后想出来了,没写不出来,不值。
T1 找环dfs瞎搞找错了,做了2h,后边没法做了
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
const int maxn = ;
struct node{
int v,next;
}edge[maxn*];
int head[maxn*];
const int mod =1e9+;int num;
inline void add_edge(int u,int v) {
edge[++num].v=v;edge[num].next=head[u];head[u]=num;
}
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;
}
bool vis[maxn*];
int n,m;bool flag=;
int dfs(int u,int f) {
int cnt=;
vis[u]=;
for(int i=head[u];i;i=edge[i].next) {
int v=edge[i].v;
if(v==f)continue;
if(vis[v])flag=;
else cnt=(cnt+dfs(v,u))%mod;
}
return cnt%mod;
}
int rd[maxn];
int main () {
n=read();m=read();
for(int i=;i<=m;++i) {
int a=read(),b=read();
add_edge(a,b);add_edge(b,a);
}
long long ans=;
for(int i=;i<=n;++i) {
if(!vis[i]){
flag=;
int qqq=dfs(i,)%mod;
if(!flag)ans=(ans%mod*qqq%mod)%mod;
else ans=(ans<<)%mod;
}
}
printf("%lld\n",ans);
}
T2 想出来了正解,没时间写了,暴力写炸
#include<cmath>
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long LL;
LL n,ans,cnt;
LL a[],k;
int main() {
// freopen("endless.in","r",stdin);
// freopen("endless.out","w",stdout);
cin>>n>>k;
LL x=n;
while(x) {
a[++cnt]=x%k;
x/=k;
}
if(cnt%==) ans=pow(k,cnt/);
else {
for(int i=cnt;i>=1;i--) {
if(a[i]>0&&i%2==0) {
ans+=pow(k,i/2);
break;
}
if(a[i]==&&i%) continue;
ans+=a[i]*pow(k,i/);
if(i==&&a[i]>) ans++;
}
}
cout<<ans<<endl;
return ;
}
T3 想出来了正解,没写,暴力写炸
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
#define maxn 200007
#define LL long long
int n,K;
int num=;
int val[maxn<<],pos[maxn<<],fa[maxn<<];
int clo[maxn<<],cle[maxn<<],lason[maxn<<],tot=;
struct node{
int v,next;
}edge[maxn<<];
int head[maxn<<];
LL dis[maxn<<],tree[maxn<<],tag[maxn<<],ans=;//I64d见祖宗
void add_edge(int u,int v){
edge[++num].v=v;edge[num].next=head[u];head[u]=num;
}
void dfs(int rt) {
clo[rt]=++tot;cle[tot]=rt;
for(int i=head[rt];i;i=edge[i].next) {
if(edge[i].v==fa[rt]) continue;
fa[edge[i].v]=rt;dis[edge[i].v]=dis[rt]+(LL)val[edge[i].v];
dfs(edge[i].v);
}
lason[rt]=tot;
}
void merge(int l,int r,int rt) {
tree[rt]=tree[rt<<];pos[rt]=pos[rt<<];
if(tree[rt] < tree[rt<<|]) tree[rt]=tree[rt<<|],pos[rt]=pos[rt<<|];
return ;
}
void pushdown(int rt) {
if(!tag[rt]) return ;
tag[rt<<]+=tag[rt];tag[rt<<|]+=tag[rt];
tree[rt<<]-=tag[rt];tree[rt<<|]-=tag[rt];
tag[rt]=;return ;
}
void build(int l,int r,int rt) {
if(l==r) {
tree[rt]=dis[cle[r]];
pos[rt]=cle[r];return ;
}
int mid=(l+r)>>;
build(l,mid,rt<<);
build(mid+,r,rt<<|);
merge(l,r,rt);
}
void update(int l,int r,int rt,int ll,int rr,int c) {
if(ll<=l&& r<=rr) {
tree[rt]-=(LL)c;tag[rt]+=(LL)c;return ;
}
pushdown(rt);
int mid=(l+r)>>;
if(ll<=mid) update(l,mid,rt<<,ll,rr,c);
if(rr>mid) update(mid+,r,rt<<|,ll,rr,c);
merge(l,r,rt);
}
int main() {
//freopen("tour.in","r",stdin);
//freopen("tour.out","w",stdout);
int u,v,now;
scanf("%d%d",&n,&K);
for(int i=;i<=n;i++) scanf("%d",val+i);
for(int i=;i<n;i++)
scanf("%d%d",&u,&v),add_edge(u,v),add_edge(v,u);
dis[]=val[];
dfs();
build(,n,);
while(K--) {
if(!tree[]) break;
ans+=tree[];now=pos[];
while(val[now]) {
update(,n,,clo[now],lason[now],val[now]);val[now]=;now=fa[now];
}
}
printf("%lld\n",ans);
return ;
}
济南day3的更多相关文章
- 冲刺阶段day3
day3 项目进展 今天周三,我们五个人难得的一整个下午都能聚在一起.首先我们对昨天的成果一一地查看了一遍,并且坐出了修改.后面的时间则是做出 登录界面的窗体,完善了登录界面的代码,并且实现了其与数据 ...
- python笔记 - day3
python笔记 - day3 参考:http://www.cnblogs.com/wupeiqi/articles/5453708.html set特性: 1.无序 2.不重复 3.可嵌套 函数: ...
- python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理
python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...
- Spark菜鸟学习营Day3 RDD编程进阶
Spark菜鸟学习营Day3 RDD编程进阶 RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lambda表示式来替换对象写 ...
- Spark Tungsten揭秘 Day3 内存分配和管理内幕
Spark Tungsten揭秘 Day3 内存分配和管理内幕 恭喜Spark2.0发布,今天会看一下2.0的源码. 今天会讲下Tungsten内存分配和管理的内幕.Tungsten想要工作,要有数据 ...
- Catalyst揭秘 Day3 sqlParser解析
Catalyst揭秘 Day3 sqlParser解析 今天我们会进入catalyst引擎的第一个模块sqlparser,它是catalyst的前置模块. 树形结构 从昨天的介绍我们可以看到sqlPa ...
- Kakfa揭秘 Day3 Kafka源码概述
Kakfa揭秘 Day3 Kafka源码概述 今天开始进入Kafka的源码,本次学习基于最新的0.10.0版本进行.由于之前在学习Spark过程中积累了很多的经验和思想,这些在kafka上是通用的. ...
- python s12 day3
python s12 day3 深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- Day3 - Python基础3 函数、递归、内置函数
Python之路,Day3 - Python基础3 本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...
随机推荐
- python3 连接 mysql和mariadb的模块
是pymysql python2中是MySQL-python sudo pip install pymysql 参考博客https://www.jb51.net/article/140387.htm
- drf版本控制 django缓存
drf的版本控制 内置的版本控制类 from rest_framework.versioning import QueryParameterVersioning,AcceptHeaderVersion ...
- Nordic Collegiate Programming Contest 2015 G. Goblin Garden Guards
In an unprecedented turn of events, goblins recently launched an invasion against the Nedewsian city ...
- re--参考手册
表达式全集 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个向后引用.或一个八进制转义符.例如,“n”匹配字符“n”.“\n”匹配一个换行符.串行“\\”匹配“\”而“\(”则匹 ...
- 常见的Linux目录及其含义
/ 系统根目录,通常不会在这里存放文件 . /bin 二进制目录,存放许多 ...
- 关于ios 和 android 录音(语音)对聊文件格式问题
关于ios 和 android 录音(语音)对聊文件格式问题 在做语音对讲的时候,将会碰到录制语音格式的问题,这些需要跨平台我们可能需要使用双方平台都支持的格式,或者执行编码转换 解决方式如下: wa ...
- iOS启动图 LaunchImage LaunchScreen.xib
1.Images.xcassets添加LaunchImage 2.具体大小和添加类别都是可以调的 640*960 (4/4s) 2X ...
- day04_01 知识回顾、算术运算符
","和"+"的区别 除法运算,整除//,别名"地板除" 取余数 2**10 2的10次方 指数运算 指数运算符优先级要比乘法要高,所以先算 ...
- AtCoder Regular Contest 083
C - Sugar Water Time limit : 3sec / Memory limit : 256MB Score : 300 points Problem Statement Snuke ...
- PreResultListener
PreResultListener是要给监听器接口,他可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调. Struts 2 可以由ActionInvocation的addPreRe ...