其他
苏_幕遮
......
展开
-
几种读入方式
字符串读入 1.getline(cin,s); //string读入,遇到换行符停止,先使用了cin或scanf输入数据然后再使用getline时,需使用getchar接收后面的换行符 2. fgets(s,maxn,stdin); //char数组读入,遇到换行符停止 3. cin>> //char数组和string均可读入,遇空格或换行符停止 4. scanf...原创 2019-09-11 21:09:22 · 309 阅读 · 0 评论 -
主席树的学习(粘板子之旅)
求区间第k小 操作: 将原始数组复制一份,排序后去掉多余的数,即将数据离散化。推荐使用STL中的unique函数; 以离散化数组为基础,建一个全0的线段树,称作基础主席树;(和权值线段树类似) 对原数据中每一个[1,i]区间统计,有序地插入新节点(题目中i每增加1就会多一个数,仅需对主席树对应的节点增加1即可) 对于查询[1,r]中第k小值的操作,找到[1,r]对应的根节点,我们按照线段树的方...原创 2019-08-26 21:37:11 · 103 阅读 · 0 评论 -
二分&二分答案
二分其实是一种很优的算法,其特点是有一个判断条件满足单调,可以去找到一个满足条件与不满足条件的一个转折点 二分以及二分答案的题目都有比较明显的特质,相信做上两三道就能够体会到 经过我长时间做二分连WA+TLE的经验,总结出自己觉得还行的模板 while(r > l) //递增,先是不满足条件,后来转折点变成满足 { int mid = (l + r) / 2; i...原创 2019-07-30 20:49:49 · 124 阅读 · 0 评论 -
分块---优雅的暴力
顾名思义:把长度为n的序列长度切成(根号n)个,把每一块当成一个整体(默认分成根号n个) 完整块---被操作区间完全覆盖-----可以作为整体操作 不完整块----暴力即可 对于分块类问题,常常可以提取出“在给定区间内进行操作,或询问区间内满足给定条件的元素等” 数列简单分块问题实际上有三项东西要我们思考: 对于每次区...原创 2019-07-30 19:58:34 · 150 阅读 · 0 评论 -
Ugly Pairs 思维
http://codeforces.com/contest/1156/problem/B 题目:讲一个给定的字符串(只包含小写字母)重新排序,要求相邻字符在字母表中不相邻 解:将奇数偶数字母分开,奇数的字符存起来再加上偶数的,或者偶数的加上奇数的就是答案,如果不行的话,输出No answer #include<cstdio> #include<iostream> #...原创 2019-08-02 21:52:21 · 136 阅读 · 0 评论 -
uva 12096 集合栈计算机
uva 12096 集合栈计算机 题目:有一个专门为了集合运算而设计的“集合栈”计算机。该机器有一个初始为空的栈,并且 支持以下操作。 PUSH:空集“{}”入栈。 DUP:把当前栈顶元素复制一份后再入栈。 UNION:出栈两个集合,然后把二者的并集入栈。 INTERSECT:出栈两个集合,然后把二者的交集入栈。 ADD:出栈两个集合,然后把先出栈的集合加入到后出栈的集合中,把结果入栈...原创 2019-07-22 15:51:06 · 196 阅读 · 0 评论 -
线段树kuangbin专题
先来一个通用的模板(好像用x * 2 不如用 x >> 1 , x * 2 + 1 不如用 x >> 1 | 1 呢,位运算很厉害的,慢慢习惯吧) typedef long long ll; const int maxn = 2e5 + 10; struct node { ll minn,maxx,sum,f,c; //f是加法标记,c是乘法标记 }tree...原创 2019-07-29 16:52:40 · 141 阅读 · 0 评论 -
一些乱七八糟的东西整理
1)四舍五入 floor(x + 0.5) 2)查看运行时间: #include<time.h> printf("Time used = %.2f\n",(double)clock() / CLOCKS_PER_SEC); 运行时间除以常数CLOCKS_PER_SEC后得到的值以秒为单位 3)从数组a复制k个元素到数组b memcpy(b,a,sizeof(int) * ...原创 2019-06-05 22:09:27 · 134 阅读 · 0 评论 -
HDU 6025
从n个数中选n-1个数字使得他们的gcd最大 思路:求一个前缀和一个后缀 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int a[N],t[N],s[N]; int T,n,ans; int gcd(int x,int y) { if(y == 0) return x; ...原创 2019-05-23 16:55:04 · 186 阅读 · 0 评论 -
博弈专题
巴什博弈: 一堆n个物品,两人轮流取,最少1个,最多m个,最后取光者胜 结论: if(n%(m+1) == 0) 先手必败 else 先手必胜 推广: 只有一堆n个物品,两个人轮流从中取物,规定每次取数区间[s,m],当然如果少于s那么必须一次取完,最后取光者为胜。 结论:如果 0<n%(s+m)<=s后手获胜 poj 2897 #include<bits/...原创 2019-05-20 19:42:17 · 92 阅读 · 0 评论 -
2019山东省赛记事
第一次打省赛,不得不说真是一波三折,好在队友给力hh 备战时: 省赛前两天和田健师兄跑去了杭州团聚(玩),对于晓龙师兄独自打比赛,我们深感歉意(贼爽),杭州体验很不错(虽然目前为此要吃土很久) 回来以后就五一了,发现自从回来田健师兄就特别颓(我猜测可能是从杭州回来对济南水土不服嘤),然后我大概是杭州玩的太嗨了一直没有调回来状态,总的来说前几天状态都不是很好,还好我们...原创 2019-05-15 15:46:40 · 204 阅读 · 0 评论 -
ZOJ 3940 E - Modulo Query 区间取模
看了好久的题解,快看的自闭了才看懂(是我太菜了QAQ) 区间取模 [0,m + 1) 区间依次对a1,a2...an取模 一个区间[0,r)的数 mod a[i], 如果r>a[i],那么—— 这个区间会变成r/a[i]个[0,a[i])的区间,以及一个[0,r%a[i])的区间 map记录的是区间出现的频率 对于每个Yi,统计Σ(p[xi]) ,xi代表小于Yi的数字,p[xi]代...原创 2019-04-17 21:23:22 · 189 阅读 · 0 评论 -
知识点汇总
1. 平闰年400一变,且星期也一致(所以400年与下一个四百年星期与日期的匹配是完全一致的) 2.去重set 3.memset不要轻易用鸭 4.注意重边,单向还是双向 ...原创 2019-04-13 20:07:43 · 102 阅读 · 0 评论