Skip to main content
  1. Tags/

算法竞赛

2016

20160813随笔

·1 min
感觉终于走在了正确的道路上了。 要是时间再多一点就好了。 我对成绩没有太多期待,顺其自然就好咯。

科学上网小记

·1 min
终于忍不了因为没办法科学上网而不能做什么事的感觉了。。。 买了班瓦工 20刀/年。。。搭了ss。。然后全平台(ios/androd/fedora/win)的上网问题就全解决了。。。

2016暑假计划

·1 min
1 * <del>树的直径,次小生成树()</del> 2 * <del>最小生成树(拒绝划水,推一波难题)</del> 3 * 《编程珠玑》 4 * 博弈论。。全部搞定。。。 5 * dp。。。基础dp,区间dp,树形dp,概率dp。。至少搞定这些。。(从头开始学dp2333) 6 * <del>markdown语法。。还是有必要学一下的。</del> 7 * <del>multi 2016 #4 1006 -> SA SA? SA SA!</del> 8 * <del>单调栈?单调栈?单调栈单调栈! (一堆题卡在这里了。。。)</del> 9 * <del>单调队列也来一发</del> 10 * <del>kmp?kmp? kmp!kmp!</del> 11 * 扩展kmp 12 * <del>trie->ac自动机</del> 13 * 线段树线段树? 线段树线段树! 14 * mutli 2016 %5 1006 -> 回文树 15 * <del>字符串的最小表示法。。。是啥。。。同构什么的orz</del> 16 * 复习数论同余->高斯消元 17 * bitset?! 18 * hdu 5313 ->二分图的黑白染色? 19 * 交叉染色法判断二分图? ->http://blog.csdn.net/yujuan_mao/article/details/8221091

实训相关&&近况

·3 mins
哈哈哈哈哈哈哈哈哈 即将身败名裂。。。。 原文音频《少女幻葬 ~ Necro-Fantasy - 来夢緑》在 WordPress 迁移后已丢失,待恢复。

(转)树形dp题目集

·4 mins
树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多信息,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树、三叉树、静态搜索树、AVL树,线段树、SPLAY树,后缀树等等.. 枚举那么多种数据结构只是想说树方面的内容相当多,本专辑只针对在树上的动态规划,即树形DP.做树形DP一般步骤是先将树转换为有根树,然后在树上进行深搜操作,从子节点或子树中返回信息层层往上更新至根节点。这里面的关键就是返回的信息部分,这个也没一般性的东西可讲,因为每道题目要求做的事都不尽相同。

20160416

·1 min
最近各种比赛各种滚粗。。。 武大。。。武科大。。。地大。。。还有在路上的华农以及我科校赛。。。 然而还有10天考试。 然而还有15天要搞定OS大作业,然而我还没开始。

tmp

·1 min
1#include <iostream> 2#include <vector> 3#include <cstring> 4#include <set> 5#include <algorithm> 6#include <cstdio> 7 8using namespace std; 9const int N=1E4+7; 10int n,k,Q; 11int siz; 12int pos[N]; 13int sum[N]; 14int dis[N]; 15bool vis[N]; 16vector < pair<int,int> > edge[N]; 17 18struct node 19{ 20 int l,r; 21 int id; 22 23 bool operator < (node b)const 24 { 25 if (pos[l]==pos[b.l]) return r<b.r; 26 return pos[l]<pos[b.l]; 27 } 28 29 30}q[N]; 31 32 33void dfs( int u,int val) 34{ 35 vis[u] = true; 36 dis[u+1] = val; 37 38 int Siz = edge[u].size(); 39 for ( int i = 0 ; i < Siz ; i ++) 40 { 41 int v = edge[u][i].first; 42 43 if (!vis[v]) 44 { 45 dfs(v,val+edge[u][i].second); 46 } 47 } 48} 49int main() 50{ 51 52 freopen("in.txt","r",stdin); 53 siz = 100; 54 for ( int i = 0 ; i < 10000 ; i++) pos[i] = i/siz; 55 while (scanf("%d %d %d",&n,&k,&Q)!=EOF) 56 { 57 memset(vis,false,sizeof(vis)); 58 memset(dis,0,sizeof(dis)); 59 memset(sum,0,sizeof(sum)); 60 for ( int i = 1 ;i < n ; i++) 61 { 62 int u = i; 63 int v = i/k; 64 edge[u].push_back(make_pair(v,i)); 65 edge[v].push_back(make_pair(u,i)); 66 } 67 68 for ( int i = 1 ;i <= Q ; i++) 69 { 70 scanf("%d %d",&q[i].l,&q[i].r); 71 q[i].id = i; 72 } 73 74 sort(q+1,q+Q+1); 75 76 dfs(0,0); 77 for ( int i = 1 ; i <= n ; i++) sum[i] = sum[i-1]+dis[i]; 78 } 79}

codeforces #346 div 2 A. Round House

·1 min
题目链接 水题 乱搞。 1/* *********************************************** 2Author :111qqz 3Created Time :2016年03月30日 星期三 23时59分47秒 4File Name :code/cf/#346/A.cpp 5************************************************ */ 6 7#include <cstdio> 8#include <cstring> 9#include <iostream> 10#include <algorithm> 11#include <vector> 12#include <queue> 13#include <set> 14#include <map> 15#include <string> 16#include <cmath> 17#include <cstdlib> 18#include <ctime> 19#define fst first 20#define sec second 21#define lson l,m,rt<<1 22#define rson m+1,r,rt<<1|1 23#define ms(a,x) memset(a,x,sizeof(a)) 24typedef long long LL; 25#define pi pair < int ,int > 26#define MP make_pair 27 28using namespace std; 29const double eps = 1E-8; 30const int dx4[4]={1,0,0,-1}; 31const int dy4[4]={0,-1,1,0}; 32const int inf = 0x3f3f3f3f; 33int n,a,b; 34int main() 35{ 36 #ifndef ONLINE_JUDGE 37 freopen("code/in.txt","r",stdin); 38 #endif 39 cin>>n>>a>>b; 40 a = a + b; 41 while (a<=0) a+=n; 42 while (a>n) a-=n; 43 cout<<a<<endl; 44 45 #ifndef ONLINE_JUDGE 46 fclose(stdin); 47 #endif 48 return 0; 49}

codeforces croc 2016 C. Enduring Exodus

·1 min
题目链接 题意:给出n和k,给出一个长度为n的字符串表示房间的占用情况(0表示没占用,1表示已占用),从n个房间中找出k+1个,使得k+1中的k个距离k+1个中的1个的距离和最小。