- 博客(22)
- 收藏
- 关注
原创 bzoj1150: [CTSC2007]数据备份Backup
细节好多优先队列+贪心#include#include#include#include#include#includeusing namespace std;struct data{ int l,r,v,ni,w; bool operator <(const data &m)const{ return v>m.v;
2017-04-18 22:08:11
230
原创 bzoj1145: [CTSC2008]图腾totem
数学+树状数组真是一道神题233果然符合CTSC用来练习思维与树状数组很不错的膜拜hzwer.com/5357.html#include#include#include#include#include#includeusing namespace std;int op[200005];int a[200005];int lc[200005],rc[200005];
2017-04-18 22:00:32
387
原创 bzoj2876: [Noi2012]骑行川藏
二分+拉格朗日乘数法膜拜http://blog.csdn.net/popoqqq/article/details/42366599今天算是学习了一波,太神了还有就是精度有毒233#include#include#include#include#include#include#define INF 1000000009using namespace std;int n
2017-04-18 21:54:58
341
原创 bzoj3956:Count
ST表+单调栈先用单调栈O(n)处理出以每个点为左、右端点的所有的点对组数。然后考虑询问区间,用ST表找出区间内最大点的位置,所有好的点对都不会跨越这个点然后以最大点左边所有点为左端点的好的点对+以最大点右边所有点为右端点的好的点对便是最后的答案(前缀和处理)今天算是复习 学习了ST表和单调栈挺好的一道题#include#include#include#inclu
2017-04-18 21:10:31
300
原创 POJ2373:Dividing the Path
单调队列优化dp经过推到若设dp[i]为[0…i]最少所需喷头数则当i不是牛所喜欢的地方时dp[i]=min(dp[k])+1;其中(i-2*b当i是牛所喜欢的地方时dp[i]=INF;然后最小的dp[k]用单调队列找就好注意i为奇数时没有考虑的必要#include#include#include#include#include#define INF 100000
2017-04-17 22:20:48
438
原创 bzoj2330: [SCOI2011]糖果
差分约束今天又一次学习了一波,才发现这种问题可以转化为图论,好神奇233再次证明我好菜2333#include#include#include#include#include#includeusing namespace std;int n,k;int f[100005];int to[300005],_next[300005],head[100005],v[30
2017-04-17 22:14:38
202
原创 bzoj3894: 文理分科
最小割……我觉得重点是建图,细节挺多(表示很菜的我WA了好多次)理解后其实并不难#include#include#include#include#include#include#define INF 1000000009using namespace std;queueque;int n,m;int S,T;int art[105][105],science[105]
2017-04-17 22:00:16
205
原创 bzoj1857: [Scoi2010]传送带
看到这题第一感觉暴力呀233然后就乱搞水过了(数据太水?)我的做法是将AB,CD分别等分为512段这样AB,CD上各有513个顶点,不妨设AB上的顶点为E,CD上的顶点为F通过数学容易得到A到D的最短时间移动路径是AE-EF-FD,那枚举E在AB上那513个顶点位置,枚举F在CD上那513个顶点位置,其中满足AE/P+FD/Q+EF/R最小的E,F点时路径移动时间最短,此时
2017-04-17 11:36:23
296
原创 poj3352-Road Construction
无向图双连通分量昨天刚复习了一波割顶和桥,tarjin相关,今天就写了一道233算是比较简单的题大概直接将目前图中所以边-双连通都缩为一个点,然后得到一颗树设这颗树上所有出度为1的点的个数为sum容易证明答案为(sum+1)/2#include#include#include#include#include#include#include#include
2017-04-14 22:11:52
213
原创 SPOJDISUBSTR - Distinct Substrings
听说是后缀数组结果被我暴力给过了233我的做法是分别将字符的所有后缀加如建一颗trie树,然后树的结点数就是答案由于不卡空间(1536MB)但卡时间(0.159s)所以可以多开数组避免清空数组时的时间浪费然后就暴力(0.06s)水了过去233#include#include#include#include#include#include#include#inclu
2017-04-14 22:02:23
205
原创 uoj#9【UTR #1】vfk的数据
水题注意字符串中的数字长度可以爆longlong所以直接比字符串就好#include#include#include#include#include#include#include#includeusing namespace std;int n;struct data{ char s[105]; char c[105];
2017-04-14 00:10:32
357
原创 bzoj3671: [Noi2014]随机数生成器
贪心乱搞?读完题感觉题面好神奇然后现暴力求出格子排列然后从1开始枚举看能否加入,若可以把其左下右上所有点标记(用bool否则超空间)每个点至多被记一次,所以复杂度为O(n*m),常数好像较大#include#include#include#include#include#include#includeusing namespace std;bool st;in
2017-04-14 00:05:19
241
原创 bzoj4805: 欧拉函数求和
杜教筛 网上讲解可多了,我也刚学会?好像是会了就不讲了#include#include#include#include#include#include#includeusing namespace std;long long phi[160005];mapG;int n;void lcr(){ int i,k,l,j,t; long l
2017-04-13 23:57:18
260
原创 bzoj3450: Tyvj1952 Easy
令dp[i][0]表示点击i次且第i次失败的期望,dp[i][1]表示点击i次且第i次成功的期望通过观察分析找规律发现当i-1次一定失败时dp[i][0]=dp[i-1][0];dp[i][1]=dp[i-1][0]+1;当i-1次一定成功时dp[i][0]=dp[i-1][1];dp[i][1]=2*dp[i-1][1]+2-dp[i-1][0];当i-1次一定随机时dp[i][
2017-04-13 23:51:08
210
原创 bzoj1821: [JSOI2010]Group 部落划分 Group
并查集水题假设刚开始一个点就是一个部落然后合并两两距离最小且不是同一部落,直到k然后就完啦#include#include#include#include#include#include#include#includeusing namespace std;int n,k;int xi[1005],yi[1005];int fa[1005];struct d
2017-04-13 23:45:43
216
原创 bzoj1307: 玩具
好像数据很弱……但我还是写了个较正常的乱搞解法?考虑到这联续k个必定为1……k排列才能更新答案我们先找到所有1的位置,然后在一个1到左右两个1的整个区间里扫描判重统计,具体参照代码大概就是O(nlogn)的时间复杂度了#include#include#include#include#include#include#include#include#include
2017-04-13 23:38:03
402
原创 bzoj3244: [Noi2013]树的计数
神题……不到1k的noiT2重在理解dfs,bfs性质#include#include#include#include#include#includeusing namespace std;int n;double ans=2;int dx[200005],pos[200005],lc[200005],rc[200005];int cnt=0;int main(){
2017-04-13 23:33:16
219
原创 bzoj2823: [AHOI2012]信号塔
随机增量算法可以去参照下面网站中的论文https://wenku.baidu.com/view/a836ff44ad02de80d4d84095.html#include#include#include#include#include#includeusing namespace std;int n;double x[1000005],y[1000005];d
2017-04-13 23:26:47
277
原创 bzoj2431: [HAOI2009]逆序对数列
dp……令b[i][j]表示n=i,k=j时的答案;则b[1][0]=1;b[2][0]=1;b[2][1]=1;b[3][0]=1;b[3][1]=2;b[3][2]=2;b[3][3]=1;我们观察发现(至少我是观察)b[i][j]=b[i-1][j-i+1]+……b[i-1][j];注意j-i+1(i-1)*(i-2)/2,即j大于i-1层逆序对最大值时,b[i][j]=b[
2017-04-13 22:51:40
249
原创 bzoj1090 [SCOI2003]字符串折叠
dp……#include#include#include#include#include#includeusing namespace std;int n;char s[105];int dp[105][105];bool lcr(int l,int r,int c){ int i,j,k; for(i=0;i<=c-1;i++) fo
2017-04-13 22:44:29
210
原创 bzoj4722: 由乃
我们发现(看题解)知道当区间长度大于13时一定可以找到两集合总贡献值相等证明:长度为L的区间共有2^L种集合,而每个元素贡献小于等于1000(v13时2^L>1000*L于是乎解决了第一个问题,接下来发现区间问题,那就线段树搞一搞233……可修改操作是将原数立方,那单重不断标记叠加就炸了……由于v很小,然后发现倍增可以很好解决这一问题,设f[a][b]数组,表示a的2^b次立方
2017-03-30 13:30:37
296
原创 bzoj3172: [Tjoi2013]单词
第一篇竟然是这个题233终于决定把写过的题整理一下了233刚开始看不懂题呀,然后在Discuss 中才明白题,我语文好菜。转译下大概就是每一个词,在所有n个词中总共出现多少次。……词原来可以重复,贡献了2次WA我的做法:AC自动机胡写,,,大概在建trie树时记录一下每个节点出现次数,并记录一下重复单词。然后算fail,然后枚举所有节点让其查找fail直至根,每当遇到单
2017-03-30 11:09:55
401
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人