摘要: void Cin(int &x) { char c=getchar();x=0; int y=1; while(c'9') { if(c=='-') y=-1; c=getchar(); } while(c='0')x=x*10+c-'0',c=getchar(); x*=y; } 阅读全文
posted @ 2017-08-07 16:57 WeiAR 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 洛谷P1440 求m区间内的最小值 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 以上代表我此时的心情,调了一个小时。。。。只因为顺序,维护一个单调递增队列就好了,这里n很大,输出要优化 阅读全文
posted @ 2017-08-07 16:55 WeiAR 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 洛谷P1725 琪露诺 交了15遍,差点砸电脑,我对自己无语了,为什么不好好想,耐下心来。。第一感觉是dp,然后没仔细想,瞎觉得好像不是,然后没管住自己,看了标签,果然是dp,后悔自己为何没好好想想。不过自己写出了转移方程,很好,然后编程的时候没有按方程转移,再次无语。。最后确定答案时,范围卡小了, 阅读全文
posted @ 2017-08-07 14:50 WeiAR 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 洛谷P1714 切蛋糕 O(mn)的枚举,按框的长度枚举,A了两个点,TLE了3个。Ans=max(ans,s[i]-s[j]); 然后进行单调队列优化,ans=max(ans,s[i]-min(s[j));i-m<=j<=i-1;用一个单调递增的单调队列来维护s[j]的最小值,每次直接取队首元素就 阅读全文
posted @ 2017-08-07 10:25 WeiAR 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 洛谷P1638 逛画展 很经典的一道类似有一个头,一个尾,然后头和尾移动,从前往后扫一遍的题,我以前做过一道类似的,很相似,不过我不记得了,唉,可惜。正解是枚举区间的左右端点,右端点不断移动直到正好框住k种,此时,(r-l)与(j-i)比较,更新l,r,最后i++,直到i==n. 我一开始也没想到这 阅读全文
posted @ 2017-08-07 08:09 WeiAR 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 洛谷1025 简单dp f[i][j]表示把数i分成j分的方案数,则最终答案为f[n][k]。把f分为两种状态,第一种为分出来的数中最小值为1,即f[i-1][j-1];另一种为最小值大于一,怎么办呢?可以先在j个位置上放1,再划分,即f[i-j][j],所以转移方程为f[i][j]=f[i-1][ 阅读全文
posted @ 2017-08-05 18:02 WeiAR 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 洛谷1091 合唱队列 觉得自己就是个ZZ,打眼一看,没思路,一看数据,n<=100,这不会是大法师吧。。。于是打暴力,快一小时(加上30分钟下课~~哦,下课时和陈国凯聊了一会QQ,%%%学神,mac啊)也没调出来,信心倍挫,然后放弃,看题解,哦cao,是最长上升子序列,然后秒掉了。。。。。。。。。 阅读全文
posted @ 2017-08-05 17:44 WeiAR 阅读(407) 评论(0) 推荐(0) 编辑
摘要: //拓扑排序 #include using namespace std; queueq; int n,m; int in[1000]; bool b[1001]; struct node { int n; node *next; }*e[1000]; int main() { cin>>n>>m; node *p; int x; for(int ... 阅读全文
posted @ 2017-08-05 15:12 WeiAR 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-08-05 14:53 WeiAR 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 等价表达式 栈的经典题目,开两个栈,一个存符号,一个存数字; 分情况讨论: 1.如果当前读到的运算符优先级小于栈顶,就进行一次运算,直到大于等于; 2.如果读到数字用类似读入优化的方法读入进来; 3.如果当前符号为“(”则直接入栈; 4.如果当前符号为“)”则进行运算直到碰到“(”; 5.小技巧 在 阅读全文
posted @ 2017-08-05 09:59 WeiAR 阅读(546) 评论(0) 推荐(0) 编辑