![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
wikioi
PureWhiteWu
热爱C/C,古风,K歌,羽毛球,LOL
展开
-
wikioi 1166 矩阵取数游戏
#include#include#includetypedef structnode{ int a[40];}hugeint;hugeint f[81][81],k1,k2,a[81],max;int n, m;hugeint add(hugeint k,hugeint l){ hugeint j; //if (k.a[0] // return add(l, k)原创 2014-01-19 17:05:53 · 590 阅读 · 0 评论 -
wikioi 3145 汉诺塔游戏
#includeint f[11];int getint(){ int n; scanf("%d",&n); return n;}void move(int n,char s,char d,char m){ if(n==1) printf("%d from %c to %c\n",n,s,d); else { move(n-1,s,m,d); printf("%原创 2014-02-18 14:53:21 · 1045 阅读 · 0 评论 -
wikioi 3299 有序数组合并求第K大问题
不必开3个数组,两个够了。#includeint n,m,k;int a[1000001],b[1000001];int main(){ scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=m;i++) scanf("%d原创 2014-02-18 14:49:48 · 587 阅读 · 0 评论 -
wikioi 3285 转圈游戏
哎,noipD1T1。记得开int64,用快速幂。这道题的数学结论就不推理了,相信大家都能通过找规律找出来。#include int n,m,k,x,ans;long long int t,tmp;int main(){ scanf("%d%d%d%d",&n,&m,&k,&x); t=1; tmp=10; int turn; if(n%m==0) { t原创 2014-02-18 14:52:21 · 832 阅读 · 0 评论 -
wikioi 2800 送外卖
其实就是TSP问题。用状态压缩型动态规划#includeconst int MAXN=15;const int INF=1<<30;int n;int d[MAXN+1][MAXN+1];int f[1<<(MAXN+1)][MAXN+1];int ans;int getint(void){ int a; scanf("%d",&a); return a;}原创 2014-02-15 14:25:19 · 936 阅读 · 0 评论 -
wikioi 3297 木材加工
好吧其实就是基本的二分答案。#includeint n,k,a[100001];int ans,mid,l,r;void check(){ int num=0; for(int i=1;in;i++) { num+=a[i]/mid; } if(num>=k) { ans=mid; l=mi原创 2014-02-04 23:43:09 · 622 阅读 · 0 评论 -
wikioi 1115 开心的金明
#include#includeint f[30001],v[26],temp,n,vp[26],top,max,m;int main(){ f[0]=1; scanf("%d%d",&n,&m); for(int i=1;i { scanf("%d%d",&v[i],&temp); vp[i]=v[i]*原创 2014-01-19 17:05:21 · 532 阅读 · 0 评论 -
wikioi 1069 关押罪犯
贪心+快排+并查集+图论做这道题记住一句话:敌人的敌人就是朋友#include #include const int maxn = 20000;const int maxm = 200000;int tail[maxm+1],c[maxm+1],head[maxm+1];int oppo[maxn+2],fri[maxn+2];int n, m;原创 2014-01-19 17:04:05 · 895 阅读 · 0 评论 -
wikioi 1295 N皇后问题
不用打表就可以AC了,最主要的算法是中间每填写一次就check一次。C++:#include#include#define MAXN 14bool used[MAXN];int n,a[MAXN],ans;int getint(){int n;scanf("%d",&n);return n;}bool check(int n){f原创 2014-01-19 17:04:48 · 586 阅读 · 0 评论 -
wikioi 1052 地鼠游戏
堆+快排按照时间从大到小排序,然后倒着来。使用最大堆。附代码,可自行理解。#include#includeconst int maxn=102;int n,time[maxn],score[maxn],q[maxn],s;int ans;void swap(int &a,int &b){ int tmp=a; a=b; b=tmp;}void原创 2014-01-19 16:57:41 · 592 阅读 · 0 评论 -
wikioi 1282 约瑟夫问题
树状数组实现的名次树这道题所用到的数据结构应该是名次树,名次树可以由线段树实现也可以由树状数组实现。而对于类似这道题这样的一个只需要删除和查询操作的名次树而言,可以用树状数组实现,因为用树状数组实现无论效率还是代码复杂度都较线段树而言更优,虽然算法较线段树而言更加巧妙。首先,这个数据结构需要一个用于查询第k名是什么的函数select以及一个用于删除第k名的函数del。先原创 2014-01-19 16:54:17 · 757 阅读 · 0 评论 -
wikioi 1078 最小生成树
#include#includeconst int maxn=102;const int maxm=10002;int n,m;int parent[maxn],ans;int head[maxm],tail[maxm],w[maxm];int find(int a){if(parent[a]==a)return a;parent[a]=find(parent[a]);re原创 2014-01-19 17:02:37 · 670 阅读 · 0 评论 -
wikioi 1365 浴火银河星际跳跃
其实就是裸的并查集。直接附上代码:#includeint parent[20002],n,m,x;int find(int a){ if(parent[a]==a) return a; parent[a]=find(parent[a]); return parent[a];}void Union(int a,int b){ p原创 2014-01-19 17:01:45 · 1208 阅读 · 0 评论 -
wikioi 3143 二叉树的序遍历
#include#define L 1#define R 2int son[17][3],n;void f(int n){ printf("%d ",n); if(son[n][L]) f(son[n][L]); if(son[n][R]) f(son[n][R]);}void m(int n){ if(son[n][L])原创 2014-02-18 14:54:06 · 1244 阅读 · 2 评论