济南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. ...
随机推荐
- Python基础——判断和循环
判断 缩进代替大括号. 冒号(:)后换号缩进. if test=100 if test>50: print('OK') print('test') if-elif-else test=50 if ...
- Decorator——Python初级函数装饰器
最近想整一整数据分析,在看一本关于数据分析的书中提到了(1)if __name__ == '__main__' (2)列表解析式 (3)装饰器. 先简单描述一下前两点,再详细解说Python初级的函数 ...
- JQuery速记
速记笔记的作用是将一些零碎的点整合在一起,这些点太小并不适合写一篇随笔,将这些点揉合在一起,可能有时候,互相就擦出火花,形成一篇博客. 1,可以用一个变量来表示某一个元素,这样就不用每次都输入$(&q ...
- selenium2中的TestNg注解和数据驱动的简介及使用
TestNg常用注解介绍,先来张图: 先看一下,以上各个注释的运行次序: @Test 表示的意义: 1.表示示该方法是一个测试方法,在运行时,会自动的运行有@Test注脚的方法. 示例: @Be ...
- UVa 12235 状压DP Help Bubu
题解戳这 一开始没看懂题解,后来想明白以后,d(i, j, s, x)是考虑第i本书的时候,前面已经拿走了j本书,剩下的书的种类的二进制状态为s,剩下的最后一本书的编号为x,所能得到的最小混乱度. 这 ...
- JavaScript日期时间格式化函数
这篇文章主要介绍了JavaScript日期时间格式化函数分享,需要的朋友可以参考下 这个函数经常用到,分享给大家. 函数代码: //格式化参数说明: //y:年,M:月,d:日,h:时,m分,s:秒, ...
- webdriver高级应用- 无人工干预地自动上传附件
方法一:使用webdriver的send_keys方法上传文件,代码如下: #encoding=utf-8 from selenium import webdriver import unittest ...
- css图像处理与动画
先讨论几个css 问题 1,css 清除浮动的方法 2,css 居中 3,多行省略号 4,小布局技巧 2D 动画功能属性兼容性:transform.transition.animation trans ...
- 集合篇 —— Collection(1):JDK 中的重复实现问题
1. 问题的提出 在 Java 的集合体系当中,无论是 List(列表)还是 Set(集),在设计的时候都存在一个很奇怪的现象:这两种集合的接口,Java 都为其设计了抽象类 Abstrac ...
- 【bzoj3566】[SHOI2014]概率充电器 树形概率dp
题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器,您生活不可或缺的 ...