随笔分类 -  衡阳八中oj

摘要:用set写真是轻松愉快;#include#include#include#includeusing namespace std;setst;int ans;int main(){ int n,x; st.insert(-99999999); st.insert(99999999); scanf("%d",&n); for(int i=0; i0) { ans+=y; st.insert(x); } } } printf("%d\n",a... 阅读全文
posted @ 2013-12-05 18:14 Yours1103 阅读(320) 评论(0) 推荐(0)
摘要:很直观的一个gauss题;用的是以前用过的一个模板;#include#include#include#include#define maxn 12#define eps 0.00001using namespace std;double matrix[15][15];double ans[15];void exchange_col(int p1,int p2,int n){ double t; int i; for(int i=0; ifabs(matrix[p][i])) p=j; if(p!=i) exch... 阅读全文
posted @ 2013-12-04 21:27 Yours1103 阅读(222) 评论(0) 推荐(0)
摘要:先对a排序,a相等的话就对b排序;维护一个栈,每次取栈的头两个,和当前的直线相比较;如果当前的直线把头第一个屏蔽,就将他出栈,一直到不能屏蔽为止;代码:#include#include#include#define maxn 500005using namespace std;int st[maxn],top;int num[maxn];struct line{ int a,b; int id; bool operatort.b; else return a1) { if(check(i,st[top-1],st[top-2]... 阅读全文
posted @ 2013-12-04 18:50 Yours1103 阅读(178) 评论(0) 推荐(0)
摘要:图上的最小的染色方案;学习了陈丹绮的论文: MCS算法#include#define maxn 10005#define maxm 2000005using namespace std;int head[maxn],next[maxm],edge[maxm];int cnt;int d[maxn],f[maxn];void add(int a,int b){ edge[++cnt]=b; next[cnt]=head[a]; head[a]=cnt;}int main(){ int n,m,x,y; scanf("%d%d",&n,&m); while(m- 阅读全文
posted @ 2013-12-04 17:05 Yours1103 阅读(196) 评论(0) 推荐(0)
摘要:spfa+dp;刚刚开始一直想不通怎么判断他是否换了道;后来才知道,将那个时间段打包,找出这段时间内的最短路;真是太奇妙了!#include#include#include#include#define inf 1e6using namespace std;int map[22][22];int pass[22][105];int d[22],inq[22];int n,m,k,e;int dp[22];int spfa(int s,int t){ queueq; for(int i=1; id[u]+map[u][i])) { ... 阅读全文
posted @ 2013-12-03 23:44 Yours1103 阅读(178) 评论(0) 推荐(0)
摘要:单点更新,区间求最大值的题;可以使用树状数组和线段树;#include#include#include#define maxn 2000009#define ll long longusing namespace std;int m,n=0;ll ma[maxn],d[maxn];void insert(int w,ll x){ d[w]=x; while(w=l) { ret=max(ret,ma[r]); r-=r&-r; } else r--; } return ret;}cha... 阅读全文
posted @ 2013-12-03 15:28 Yours1103 阅读(136) 评论(0) 推荐(0)
摘要:n个人,m种信仰;问你相邻的人信仰不同的情况有多少种?首先第一个人有m种选择,第二个人有m-1种选择,后面所有的人都只有m-1种选择;所以结果就是m^n-m*(m-1)^(n-1)#include#include#include#define ll long long#define mod 100003using namespace std;ll pow_mod(ll n,ll p){ ll ans=1; while(p) { if(p&1) ans=ans*n%mod; n=n*n%mod; p>>=1; } retur... 阅读全文
posted @ 2013-12-02 20:14 Yours1103 阅读(157) 评论(0) 推荐(0)
摘要:斜率优化dp;推荐学习http://www.cnblogs.com/perseawe/archive/2012/05/12/bz1010.html看着别人的题解自己学着推,终于理解了#include#include#include#define ll long long#define maxn 50005using namespace std;int q[maxn],head=0,tail=0;ll f[maxn];ll g[maxn],s[maxn];ll dp[maxn];ll get_g(int k,int j,int c){ return dp[k]+(f[k]+c)*(f[k]... 阅读全文
posted @ 2013-12-02 14:58 Yours1103 阅读(189) 评论(0) 推荐(0)
摘要:刚刚看到题,感觉是最小割最大流;但是数据量很大,看看网上的题解,发现要把它变成最短路来做;每个孔作为一个点,孔之间的边作为点之间的边;然后利用spfa就可以了!不过这个题runtime error了我15发;经大师提醒才知道,在main函数里面不能够开大数组;因为main函数中的变量保存在栈中;代码:#include#include#include#define inf 1e8using namespace std;const int maxn=2*1005*1005;const int maxm=3*maxn;struct edge{ int from,to,dist; edge... 阅读全文
posted @ 2013-12-01 20:57 Yours1103 阅读(152) 评论(0) 推荐(0)