实际上并没有训整整一周-_-||

只训了三天

听说纪中全员没过节(ΩДΩ)好可怕

这三天考了5场模拟赛,一场初赛模拟

让我感觉我和开学时比起来还是有很大的提升的

最主要就是在dp方面。

经过整个九月疯狂的刷Vjudge和usaco月赛题目,我现在有种满脑子都是dp的感觉

然而因为在打牌的时候用dp所以输的很惨

十一期间的题目,我感觉质量略有参差,但是总体还是很棒(nan)的。

在这里放几道比较好(我没做出来)的

还教室

题意:给一段区间,每个数有一个值,每次可能有三种操作:更改一段值,询问一个区间的平均数和方差

题解:线段树显然,但是要构建两棵,而且要推导一下方差的公式

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
const int N=1e5+;
#define m (l+r)/2
#define lson o<<1,l,m
#define rson o<<1|1,m+1,r
#define lc o<<1
#define rc o<<1|1
typedef long long ll;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,q,flag,l,r; ll d;
struct node{
ll s,s2,mark;
}t[N<<];
inline void paint(int o,int l,int r,ll d){
t[o].mark+=d;t[o].s2+=d*d*(r-l+)+*d*t[o].s;
t[o].s+=d*(r-l+);
}
inline void merge(int o){
t[o].s=t[lc].s+t[rc].s;
t[o].s2=t[lc].s2+t[rc].s2;
}
inline void pushDown(int o,int l,int r){
if(t[o].mark){
ll d=t[o].mark;
paint(lson,d);
paint(rson,d);
t[o].mark=;
}
}
void build(int o,int l,int r){
if(l==r) {ll a=read();t[o].s=a;t[o].s2=a*a;}
else{
build(lson);
build(rson);
merge(o);
}
}
void add(int o,int l,int r,int ql,int qr,ll d){
if(ql<=l&&r<=qr) paint(o,l,r,d);
else{
pushDown(o,l,r);
if(ql<=m) add(lson,ql,qr,d);
if(m<qr) add(rson,ql,qr,d);
merge(o);
}
}
ll query1(int o,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr) return t[o].s;
else{
pushDown(o,l,r);
ll ans=;
if(ql<=m) ans+=query1(lson,ql,qr);
if(m<qr) ans+=query1(rson,ql,qr);
return ans;
}
}
ll query2(int o,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr) return t[o].s2;
else{
pushDown(o,l,r);
ll ans=;
if(ql<=m) ans+=query2(lson,ql,qr);
if(m<qr) ans+=query2(rson,ql,qr);
return ans;
}
}
ll gcd(ll a,ll b){return b==?a:gcd(b,a%b);}////
void print(ll x,ll y){
ll g=gcd(x,y);
printf("%lld/%lld\n",x/g,y/g);
}
int main(){
freopen("classroom.in","r",stdin);
freopen("classroom.out","w",stdout);
n=read();q=read();
build(,,n);
for(int i=;i<=q;i++){
flag=read();l=read();r=read();
if(flag==){d=read();add(,,n,l,r,d);}
else if(flag==){
ll x=query1(,,n,l,r),len=r-l+;
print(x,len);
}else{
ll x1=query1(,,n,l,r),x2=query2(,,n,l,r),len=r-l+;//printf("hi %lld %lld\n",x1,x2);
print(len*x2-x1*x1,len*len);
}
}
}

来自erickin的爱(-_-||)

题意:求一个图的最小生成树长度和个数,这个图中没有三个以上相等权值的边

题解:第一问kruskal

      第二问,显然不同的最小生成树中每一种长度的边数量是一定的。所以我们只需要求得每个阶段的方案总数,累乘起来即可。对于每一条树边进行dfs,同时在第一问时记录每对点用了tot条边联通,dfs处理这个阶段的等价方案(即为联通所需的tot相等)

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const ll mod=1e9+;
struct ed{
int k,w,next;
}e[];
struct edge{
int x,y,w;
}E[];
bool cmp(edge a,edge b){
return a.w<b.w;
}
int n,m,fa[];
int find(int *fa,int k){
if(fa[k]!=k) fa[k]=find(fa,fa[k]);
return fa[k];
}
int find1(int *fa,int k){
while(fa[k]!=k) k=fa[k];
return k;
}
int R,cnt,pos[],val;
void dfs(int k,int w){
if(k==R){
if(w==val)cnt++;
return;
}
dfs(k+,w);
int x=find(pos,E[k].x);
int y=find(pos,E[k].y);
if(find(pos,x)!=find(pos,y)){
pos[x]=y;
dfs(k+,w+);
pos[x]=x;
}
}
int main(){
freopen("love.in","r",stdin);
freopen("love.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++) scanf("%d%d%d",&E[i].x,&E[i].y,&E[i].w);
sort(E+,E+m+,cmp);
ll ans=,sum=;
for(int i=;i<=n;i++) fa[i]=i;
for(int i=,p;i<=m;i=p){
val=;
for(p=i;p<=m&&E[p].w==E[i].w;p++){
E[p].x=find(fa,E[p].x),E[p].y=find(fa,E[p].y);
pos[E[p].x]=find(fa,E[p].x);
pos[E[p].y]=find(fa,E[p].y);
}
for(int j=i;j<p;j++){
int x=find(fa,E[j].x),y=find(fa,E[j].y);
if(x!=y){
ans+=E[j].w;
val++;
fa[x]=y;
}
}
R=p;cnt=;
dfs(i,);
sum=sum*ll(cnt)%mod;
}
printf("%lld %lld",ans,sum);
return ;
}

最后:曾老师的月饼真好吃\(^o^)/~

十一黄(xun)金(lian)周感想的更多相关文章

  1. Python数据分析【炼数成金15周完整课程】

    点击了解更多Python课程>>> Python数据分析[炼数成金15周完整课程] 课程简介: Python是一种面向对象.直译式计算机程序设计语言.也是一种功能强大而完善的通用型语 ...

  2. python第九十一天----第十六周作业

    实现功能: 1.非编辑模式 ​ 可以对每行进行选择,全选,取消,反选 : 2.编辑模式 ​ 进入编辑模式时: 如果行被选中,则被选中的行变为可编辑状态,未选中则不改变 ​ 退出编辑模式时: 保存所有的 ...

  3. 周根项《一分钟速算》全集播放&amp;下载地址

    点击图片就可以观看 ↓↓↓↓↓↓↓↓ 第1章:指算法 周根项<一分钟速算>第1章:指算法 第一节 对手的认识 周根项<一分钟速算>第1章:指算法 第二节 个位数比十位数大1乘以 ...

  4. 【Alpha版本】冲刺阶段——Day 6

    我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...

  5. 白条VS花呗,快餐式消费金融成巨头新战场

    在这一次的国庆假期前,90后网红密子君吃空麦当劳事件引发了网友们的热议.短短半个小时,这位90后网红就吃光了25包薯条,随后又吃下两杯麦旋风,其疯狂举动引得四周食客纷纷围观拍照.那么,是什么刺激这位9 ...

  6. 电容值E系列标称方法

    本节首先介绍常用的E系列标称方法,然后介绍电阻.电容器.电感器.二极管的分类.性能和识别方法,以及简单的实用电路. 一.E系列标称方法 厂家生产的电阻器,并不是包含任何阻值,就像人民币,只有1.2.5 ...

  7. 20172305 暑假作业 之 TimeCalculate & Save Iron Man

    20172305 暑假作业 之 TimeCalculate & Save Iron Man TimeCalculate 项目介绍 项目名称: TimeCalculate 项目简介: 本项目基于 ...

  8. 专利事务所信息Python爬取

    数据来源:http://www.acpaa.cn/ 目前事务所的信息没有做反爬限制,还是很容易拿到数据的 没有用html解析工具,直接上正则,结果就是需要处理很多乱七八糟的空格...为了能将日期顺利的 ...

  9. K米APP----案例分析

    K米APP----案例分析 第一部分 调研,评测 第一次上手体验 软件的美工做得不错,功能排版很清楚,用户很容易上手,不至于用户不知道怎么用这个APP点歌 软件最主要的功能是KTV的点歌功能,这个功能 ...

随机推荐

  1. ipynb-->pdf

    ipython nbconvert notebookname.ipynb --to latex --post pdf

  2. iOS 多线程(NSThread、GCD、NSOperation)

    ios中得多线程技术主要使用3种:NSThread.NSOperation和GCD 一.NSThread: 最轻量级方法,但是不安全需要手动加锁,需要自己管理生命周期 NSThread的使用方法有2种 ...

  3. PAT 乙级 1078 / 1084

    题目 PAT 乙级 1078 PAT 乙级 1084 题解 1078和1084这两道题放在一块写,主要是因为这两道题的解法和做题思路非常相似:之前我做这一类题没有一个固定的套路,想到哪写到哪,在某种程 ...

  4. Linux运维常用命令详解

    1.ls 文件属性:  -:普通文件  d:目录文件  b:块设备  c:字符设备文件  l:符号连接文件  p:命令管道  s:套接字文件  文件权限: 9位数字,每3位一组  文件硬链接次数  文 ...

  5. 【Python学习之十】yield之send方法

    yield作用 简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator.下面以斐波拉 ...

  6. 同时启动多个tomcat的配置信息

    同时启动多个tomcat的配置信息 下面把该配置文件中各端口的含义说明下. <Server port="8005" shutdown="SHUTDOWN" ...

  7. [Wolfgang Mauerer] 深入linux 内核架构 第二章 进程管理与调度【未完】

     作为Linux开发爱好者,从事linux 开发有三年多时间.做过bsp移植,熟悉u-boot代码执行流程:看过几遍<linux 设备驱动程序开发>,分析过kernel启动流程,写过驱动, ...

  8. linux文件属性之时间戳及文件名属性知识

    7  8  9 三列是时间(默认是修改时间) modify 修改时间  -mtime  修改文件内容 change 改变时间 -ctime  文件属性改变 access 访问时间  -atime  访 ...

  9. 用jq给img添加error事件

    <img src="xxxx.jpg" alt="" /> <script> $(document).ready(function(){ ...

  10. 求 1 到 n 的所有数的约数和

    求 1 到 n 的所有数的约数和 暴力方法就是枚举每个数,算出他的约数和即可,这样有点慢. 另一种思路,枚举约数,判断他是谁的约数,并记录(即他的倍数有多少个),在乘以他自己. n/i求的是n以内,i ...