<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[With_thewind的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/With_thewind</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; With_thewind]]></copyright><item><title><![CDATA[Topcoder SRM 561 DIV2 1000 FoxAndTouristFamilies]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/54695915</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/54695915</guid><author>With_thewind</author><pubDate>Mon, 23 Jan 2017 21:26:00 +0800</pubDate><description><![CDATA[由于是树,所以两点之间只有一条路径,那么只要把每一条边砍断,再根据左右节点计算一下就好了具体计算方法:假设这条砍掉的边就是full路，那么可以得到一个简单的性质，从这条路的左边到右边或者从右边到左右都一定会经过这条路，每一个点到除了自己以外其他点的概率就是p=1/(n-1).那么就可以转化为ans+=(当前情况的概率)*1.0也就是一条full路，到时候枚举边就可以得到总期望值了。期望值到底怎么算呢]]></description><category></category></item><item><title><![CDATA[Topcoder SRM 559 ToyTrain]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/54695894</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/54695894</guid><author>With_thewind</author><pubDate>Mon, 23 Jan 2017 21:22:25 +0800</pubDate><description><![CDATA[解题大概有以下几个思路 
首先判一定不能有解 有三种情况 
1.图中没有’A’或’B’ 
2.题目中给到的’S’点没有用到 
3.有一个点非’A’非’B’点被用到了两次 ，用于横竖两个方向 那必然无解了，因为方向已经规定了 
然后有解的情况 
同一行中’A’的数量等于’B’，同一列同理。（显然的。。） 
按照两个两个来分组 必然是A-B 或者B-A 组合  A后面总不能直接连着自己吧我的做法大概是先]]></description><category></category></item><item><title><![CDATA[Topcoder SRM 597 LittleElephantAndSubset]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/54695848</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/54695848</guid><author>With_thewind</author><pubDate>Mon, 23 Jan 2017 21:12:06 +0800</pubDate><description><![CDATA[#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#inclu]]></description><category></category></item><item><title><![CDATA[USACO2014FebruaryGold Roadblock Dijkstra+路径还原]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/53914404</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/53914404</guid><author>With_thewind</author><pubDate>Wed, 28 Dec 2016 21:51:39 +0800</pubDate><description><![CDATA[先用一遍Dijkstra 然后路径还原 记录一下哪些边处在最短路径上 然后for过去把这几条边都乘个2试试看 再Dijkstra更新答案 比较水的题目 很好想 就是路径还原部分要注意一下 详细可以参见代码#include<stdio.h>
#include<string.h>
#include<queue>
#include<vector>
#include<iostream>
#include<a]]></description><category></category></item><item><title><![CDATA[莫队+树状数组 题解【bzoj3289】Mato的文件管理]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/53914348</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/53914348</guid><author>With_thewind</author><pubDate>Wed, 28 Dec 2016 21:45:58 +0800</pubDate><description><![CDATA[首先题目意思很简单 
就是求每一段区间内的逆序对个数 在我认知中有两种求逆序对的方法 1.归并排序可以求逆序对 2.树状数组求逆序对 修改和查询都是O(logn)的复杂度  
本题要不断修改逆序对数据结构只能选择树状数组  
然后 就往莫队上去套咯 离线求解 分块 然后按左端点所在的块排序 再按后端点排序 
定义一个L，R，不断++,–，update树状数组和更新ans就好了 不过感觉有点抽象 一个]]></description><category></category></item><item><title><![CDATA[莫队模板题 小Z的袜子]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/53889493</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/53889493</guid><author>With_thewind</author><pubDate>Mon, 26 Dec 2016 21:39:44 +0800</pubDate><description><![CDATA[离线的经典算法 
先分块 然后按左端点所在的块先后顺序排序 再按右端点排序  
L和R一直移动就好 不知道为什么感觉莫队就是优化+暴力  
复杂度O(n^2)降到O（n^1.5） 
分了个块也就排序用用o(╯□╰)o  之后就用不着了 很神奇的算法 表示已经被折服了#include<stdio.h>
#include<string.h>
#include<iostream>
#include<alg]]></description><category></category></item><item><title><![CDATA[USACO2014FebruaryGold Cow Decathlon]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/53844495</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/53844495</guid><author>With_thewind</author><pubDate>Fri, 23 Dec 2016 22:24:58 +0800</pubDate><description><![CDATA[可利用状压DP 只有2的20次方空间#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string>
#include<string.h>
#include<vector>
#define M 1200005
using namespace std;
int n,b;
struct node{
    int p,g;]]></description><category></category></item><item><title><![CDATA[状压DP的基本操作]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/53844094</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/53844094</guid><author>With_thewind</author><pubDate>Fri, 23 Dec 2016 21:30:17 +0800</pubDate><description><![CDATA[状态压缩动态规划（简称状压dp）是另一类非常典型的动态规划，通常使用在NP问题的小规模求解中，虽然是指数级别的复杂度，但速度比搜索快，其思想非常值得借鉴。

为了更好的理解状压dp，首先介绍位运算相关的知识。

1.’&’符号，x&y，会将两个十进制数在二进制下进行与运算，然后返回其十进制下的值。例如3(11)&2(10)=2(10)。

2.’|’符号，x|y，会将两个十进制数在二进]]></description><category></category></item><item><title><![CDATA[USACO2014JanuaryGold]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/53792082</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/53792082</guid><author>With_thewind</author><pubDate>Wed, 21 Dec 2016 22:20:30 +0800</pubDate><description><![CDATA[更优解法 不需要整体二分 直接并查集即可 再开一个并查集的size存1的个数 
把所有的边按权值从小到大排序 一层for过去 用并查集把点并在一起 
当size大于等于k时 直接res+=权值*1的个数 再把size2清0 这样就不会重复计算  
比整体二分复杂度低了好多哦 然而我没想到╭(╯^╰)╮#include<stdio.h>
#include<string.h>
#include<iost]]></description><category></category></item><item><title><![CDATA[USACO2014JanuaryGold]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/53791739</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/53791739</guid><author>With_thewind</author><pubDate>Wed, 21 Dec 2016 21:45:41 +0800</pubDate><description><![CDATA[在线赛C题 USACO2014JanuaryGold拖拉机 
这题挺难 考试的时候完全没思路 切入点比较偏 QAQ 
首先明确一个性质 结果具有单调性 能用n*n 那么(n-1)（n-1）一定也能完成（不需要证明 覆盖4次即可） 
所以答案可以从大到小递减下来 
其次 最重要的切入点就是 最后一次覆盖一定是ans*ans的正方形 也就是一块里面所有相同的 然后就可以用逆向思维 倒着来进行 先找一个整]]></description><category></category></item><item><title><![CDATA[在线赛题解以及总结]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/53769908</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/53769908</guid><author>With_thewind</author><pubDate>Tue, 20 Dec 2016 22:11:35 +0800</pubDate><description><![CDATA[在线赛题解  
A题：跑操 
实际上题目没有想象中那么难 只是一些精度处理问题 什么*1.0啊 double之类的 四舍五入 搞来搞去很烦 
也就是弄两个数组然后sort一波判一下先后#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<vector>
#i]]></description><category></category></item><item><title><![CDATA[刷漆升级线段树优化]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/52916145</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/52916145</guid><author>With_thewind</author><pubDate>Mon, 24 Oct 2016 21:57:13 +0800</pubDate><description><![CDATA[题目描述
这次是机器人来刷漆啦。先在有n面排列在一起的墙，有一个机器人，每次会对一段墙进行刷漆，把这段墙随机的刷成黑色或者白色。请问机器人刷完之后，这n面墙呈现的颜色会有多少种不同的情况？
输入
第一行一个整数n。接下来n行，表示机器人依次要刷的地方。每行两整数L和R，表示机器人要对
 [L,R]这段墙进行刷漆。答案对1000000007取余。
输出
输出最后n面墙呈现的颜色会有多少种]]></description><category></category></item><item><title><![CDATA[noip2016年初赛总结与反思]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/52894605</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/52894605</guid><author>With_thewind</author><pubDate>Sat, 22 Oct 2016 20:33:23 +0800</pubDate><description><![CDATA[NOIP2016 惨烈的初赛错题总结反思
选择题 
2．如果开始时计算机处于小写输入状态，现在有一只小老鼠反复按照CapsLock、字母键A、字母键S和字母键D的顺序来回按键，即CapsLock、A、S、D、S、A、CapsLock、A、S、D、S、A、……，屏幕上输出的第81个字符是字母（A）
A：A      B：S     C：D        D：a
题目很水 可是没有把题目看完就]]></description><category></category></item><item><title><![CDATA[排序算法的总结]]></title><link>https://blog.youkuaiyun.com/With_thewind/article/details/52894570</link><guid>https://blog.youkuaiyun.com/With_thewind/article/details/52894570</guid><author>With_thewind</author><pubDate>Sat, 22 Oct 2016 20:31:10 +0800</pubDate><description><![CDATA[1计数排序 
一开始学排序算法想必就是用的计数排序话不多说直接上代码
复杂度最低的排序算法，稳定排序，O(n+m)，n为元素个数，m为数值范围。在范围小的时候可以采用
#include
#include
#include
#include
#define M 1000005
using namespacestd;
int cnt[M];
int main(){
      i]]></description><category></category></item></channel></rss>