zoukankan      html  css  js  c++  java
  • 雅礼集训游记

    其实感觉真的是跟来玩的一样  所以叫游记么.......

    其实感觉来这里的最大收获不是考试,而是认识了许多强省的大佬,知道了自己高二该干些什么,学习的方向

    感觉学到的知识还是有的,以前知道但是没实现过的算法,通过考试题都实现了一下,感觉学习效率着实要比自己学习高得多

    day0

    我们坐高铁去长沙,本来书包里装的都是集训队论文集,我想这十几天的晚上就肝论文集吧

    谁知道论文那么水,在高铁上肝完了两篇,只有胡泊涛的最小割模型讲的还不错,比较耗时间

    长沙果然热啊,到了目的地,我买了三瓶水才解了渴,晚上吃了黄焖鸡,焦景辉说他曾经吃了一周的黄焖鸡

    感觉味道还行,我认为我不太能吃辣的,所以就要了一份不辣的 感觉还行

    day1

    第一天是讲课  讲课人是去年noi国家集训队的

    是个小胖子,挺可爱的,就是说话有点听不清,上午讲了一上午计数题,感觉有点听不懂,我决定大力学一波生成函数

    下午讲概率与期望,讲课人ppt标题的后面加了一个及计数,让全场哈哈大笑

    day2

    woc  纸质的试卷,没有大样例。。。。。。。。

    第一题计数   第二题 计数。。。。 第三题 计数。。。。。。。。。

    woc 全他妈是计数 果断弃疗。。。。。。。。。

    day3

    还是考试  还是纸质试卷  还是没有大样例 。。。。。

    第一题 数据结构  第二题 数据结构   第三题  数据结构。。。

    中午去吃了便当,感觉只是我人生第一次吃这种叫便当的东西,感觉还行

    最可笑的是下午出题人居然说他擅长的是数据结构不是计数

    day4

    讲课时间到   感觉这个讲课人还行  与听众同学互动频繁,讲的也挺有用的  讲的数据结构

    感觉要学习的就是二进制划分   划分树什么的等有空了看情况吧

    中午吃了黄焖鸡,尝试了一下微辣,感觉并不是很辣啊,难道我变得能吃辣椒了么

    day5

    又到了喜闻乐见的考试时间了

    好像又是三个计数题,我他妈不想写了

    第三题居然和HAOI2018下午T2很像  广义容斥+分治FFT

    晚上尝试了一下黄焖鸡特辣  感觉就那样  woc我的口味为啥在逐渐变态  感觉特辣已经满足不了我了  需要变态辣

    day6~day100

    考试愈发显得不正常,要么是板子题,要么是不可做题,感觉对水平的提升没有很大帮助

    所以叫雅礼noi2018分治FFT集训  垃圾出题人,骗钱还骗时间,真毒瘤,但是我感觉真正毒瘤的是那些能A掉毒瘤题的人

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    和集训撇清关系

    下面讲些有营养的东西

    比如说  线段树分治  了

    线段树分治主要处理一类可以离线的问题

    一般有两种操作,查询和修改

    我们可以按操作的时间,也就是操作的序号来建一棵线段树,考虑,每个修改操作所影响的区间,然后在线段树上打上标记 每一个操作最多打log(m)个标记

    最后从根部dfs遍历一遍线段树,按题目要求的方式,让父亲的标记和自己的标记合并

    当到叶子节点的时候,就可以直接输出结果了  复杂度 mlogm*合并的复杂度  很优秀的算法

    BZOJ 5334

    5334: [Tjoi2018]数学计算

    Time Limit: 10 Sec  Memory Limit: 256 MB
    Submit: 133  Solved: 98
    [Submit][Status][Discuss]

    Description

    小豆现在有一个数x,初始值为1. 小豆有Q次操作,操作有两种类型: 
    1 m: x = x  *  m ,输出 x%mod;
    2 pos: x = x /  第pos次操作所乘的数(保证第pos次操作一定为类型1,对于每一个类型1 的操作至多会被除一次),输出x%mod

    Input

    一共有t组输入(t ≤ 5)
    对于每一组输入,第一行是两个数字Q, mod(Q ≤ 100000, mod  ≤ 1000000000); 
    接下来Q行,每一行为操作类型op,操作编号或所乘的数字m(保证所有的输入都是合法的).
    1 ≤ Q ≤ 100000

    Output

    对于每一个操作,输出一行,包含操作执行后的x%mod的值

    Sample Input

    1
    10 1000000000
    1 2
    2 1
    1 2
    1 10
    2 3
    2 4
    1 6
    1 7
    1 12
    2 7

    Sample Output

    2
    1
    2
    20
    10
    1
    6
    42
    504
    84

    HINT

    Source

    很板子的板子题   拿来练练手

    #include <bits/stdc++.h>
    #define ll long long
    #define inf 1e9+10
    using namespace std;
    inline int read(){
    	int x=0;int f=1;char ch=getchar();
    	while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}
    	while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}
    	return x*f;
    }
    const int MAXN=4e5+10;
    struct node{
    	ll x;
    }T[MAXN];
    int n,t,mod,a[MAXN],x,y,vis[MAXN],v,b[MAXN];
    inline void sig(int l,int r,int rt){
    	if(l==r){
    		printf("%lld
    ",T[rt].x);
    		return ;
    	}
    	int mid=(l+r)>>1;
    	T[rt<<1].x=T[rt<<1].x*T[rt].x%mod;
    	T[rt<<1|1].x=T[rt<<1|1].x*T[rt].x%mod;
    	sig(l,mid,rt<<1);
    	sig(mid+1,r,rt<<1|1);
    }
    inline void insert(int l,int r,int rt){
    	if(l>=x&&r<=y){
    		T[rt].x=T[rt].x*v%mod;
    		return;
    	}
    	if(l>y||r<x) return;
    	int mid=(l+r)>>1;
    	insert(l,mid,rt<<1);
    	insert(mid+1,r,rt<<1|1);
    }
    inline void build(int l,int r,int rt){
    	if(l==r){
    		T[rt].x=1;return;
    	}
    	int mid=(l+r)>>1;
    	T[rt].x=1;
    	build(l,mid,rt<<1);
    	build(mid+1,r,rt<<1|1);
    }
    int main(){
    	t=read();
    	while(t--){
    		n=read();mod=read();
    		for(int i=1;i<=n;i++) vis[i]=0;
    		build(1,n,1);
    		for(int i=1;i<=n;i++){
    			a[i]=read();b[i]=read();
    			if(a[i]==2){
    				x=b[i];y=i-1;v=b[b[i]];vis[b[i]]=1;
    				insert(1,n,1);
    			}
    	    }
    		for(int i=1;i<=n;i++){
    			if(a[i]==1&&vis[i]==0){
    				x=i;y=n;v=b[i];
    				insert(1,n,1);
    			}
    		}
    		sig(1,n,1);
    	}
    	return 0;
    }
    
  • 相关阅读:
    VC++ MFC工程中中如何将一个工程的资源(如对话框)复制到另外一个工程
    VS调试_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));崩溃原因及解决方法
    使用libcurl下载文件小例
    [工具] 程序员必须软件
    [Linux] Linux软连接和硬链接
    [Android Pro] Android的Animation之LayoutAnimation使用方法
    [Java基础] java的守护线程与非守护线程
    [Linux] 守护进程和守护线程
    [Linux] linux文件系统学习
    [Java基础] Java线程复习笔记
  • 原文地址:https://www.cnblogs.com/something-for-nothing/p/9288073.html
Copyright © 2011-2022 走看看