wikioi
PureWhiteWu
热爱C/C,古风,K歌,羽毛球,LOL
展开
-
wikioi 1166 矩阵取数游戏
#include #include #include typedef 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 · 592 阅读 · 0 评论 -
wikioi 3145 汉诺塔游戏
#include int 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 · 1047 阅读 · 0 评论 -
wikioi 3299 有序数组合并求第K大问题
不必开3个数组,两个够了。 #include int 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 · 589 阅读 · 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 · 834 阅读 · 0 评论 -
wikioi 2800 送外卖
其实就是TSP问题。 用状态压缩型动态规划 #include const 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 · 937 阅读 · 0 评论 -
wikioi 3297 木材加工
好吧其实就是基本的二分答案。 #include int 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 · 625 阅读 · 0 评论 -
wikioi 1115 开心的金明
#include #include int 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 · 534 阅读 · 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 · 898 阅读 · 0 评论 -
wikioi 1295 N皇后问题
不用打表就可以AC了,最主要的算法是中间每填写一次就check一次。 C++: #include #include #define MAXN 14 bool 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 · 587 阅读 · 0 评论 -
wikioi 1052 地鼠游戏
堆+快排 按照时间从大到小排序,然后倒着来。 使用最大堆。 附代码,可自行理解。 #include #include const 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 · 594 阅读 · 0 评论 -
wikioi 1282 约瑟夫问题
树状数组实现的名次树 这道题所用到的数据结构应该是名次树,名次树可以由线段树实现也可以由树状数组实现。而对于类似这道题这样的一个只需要删除和查询操作的名次树而言,可以用树状数组实现,因为用树状数组实现无论效率还是代码复杂度都较线段树而言更优,虽然算法较线段树而言更加巧妙。 首先,这个数据结构需要一个用于查询第k名是什么的函数select以及一个用于删除第k名的函数del。 先原创 2014-01-19 16:54:17 · 760 阅读 · 0 评论 -
wikioi 1078 最小生成树
#include #include const 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 · 672 阅读 · 0 评论 -
wikioi 1365 浴火银河星际跳跃
其实就是裸的并查集。 直接附上代码: #include int 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 · 1211 阅读 · 0 评论 -
wikioi 3143 二叉树的序遍历
#include #define L 1 #define R 2 int 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 · 1246 阅读 · 2 评论