wikioi专题

wikioi 1396 伸展树(两个模板)

题目描述 Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就

wikioi 2573 大顶堆与小顶堆并用

题目描述 Description 我们使用黑匣子的一个简单模型。它能存放一个整数序列和一个特别的变量i。在初始时刻,黑匣子为空且i等于0。这个黑匣子能执行一系列的命令。有两类命令: ADD(x):把元素x放入黑匣子;GET:把i加1的同时,输出黑匣子内所有整数中第i小的数。牢记第i小的数是当黑匣子中的元素已非降序排序后位于第i位的元素。 下面的表6_4是一个11个命令的例子:

wikioi 1246 堆或贪心

题目描述 Description 对于一给定的素数集合 S = {p1, p2, ..., pK},  来考虑那些质因数全部属于S 的数的集合。这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它)。这是个对于一个输入的S的丑数集合。 注意:我们不认为1 是一个丑数。 你的工作是对于输入的集合S去寻找集合中的第N个丑数。longint(signed 32-b

wikioi 1245 小顶堆

题目描述 Description 有两个长度为 N 的序列 A 和 B,在 A 和 B 中各任取一个数可以得到 N^2 个和,求这N^2 个和中最小的 N个。 输入描述 Input Description 第一行输入一个正整数N;第二行N个整数Ai 且Ai≤10^9;第三行N个整数Bi, 且Bi≤10^9 输出描述 Output Descriptio

wikioi 1052 大顶堆

题目描述 Description     王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不但学习刻苦,而且善于经常总结、完善自己的学习方法,所以他总能在每次考试中得到优异的分数,这一切很大程度上是由于他是一个追求效率的人。     但王钢也是一个喜欢玩的人,平时在学校学习他努力克制自己玩,可在星期天他却会抽一定的时间让自己玩一下,他的爸爸妈妈

wikioi 3031 字符串哗然并匹配查找

题目描述 Description 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词。     文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个)。并且在背诵的单词量尽量多的情况下,还要使选出的文章段落尽量短,这样她就可以用尽量短的时间学习尽可能多的单词了。 输入描述 Input Description

wikioi 2147 bitset+map解决

题目描述 Description 小明是一名天文爱好者,他喜欢晚上看星星。这天,他从淘宝上买下来了一个高级望远镜。他十分开心,于是他晚上去操场上看星星。 不同的星星发出不同的光,他的望远镜可以计算出观测到的星星发出的光的数值W。小明当然想尽可能地多看到星星,于是他每看到一颗星星,就要看看他之前有没有看过这颗星星。但是他看的星星太多了,他根本数不过来,于是他让你帮忙。

WIKIOI 1213 解的个数 题解与分析

1213 解的个数 题目描述 Description 已知整数x,y满足如下面的条件:   ax+by+c = 0 p<=x<=q r<=y<=s   求满足这些条件的x,y的个数。 输入描述 Input Description 第一行有一个整数n(n<=10),表示有n个任务。n<=10 以下有n行,每行有7个整数,分别为:a,b,c,p,q,r,s。均不超过108。

WikiOI 2924 数独挑战

说实话,有了这个程序,我就能通杀那个数独网了。真方便! #include<iostream>using namespace std;int a[9][9];int Line[9],Row[9],S[3][3];bool Flag;void Set(int x,int y,int n){int t=1<<n;Line[x]|=t;Row[y]|=t;S[x/3][y/3]|=t;

WikiOI 1012 最大公约数和最小公倍数问题

不太想写,直接搜的 #include<stdio.h>int main(){int x0, y0, x, i = 2, k = 0;scanf("%d%d",&x0, &y0);if (y0 % x0 != 0) {printf("0\n"); return 0;}x = y0 / x0;while (x != 1){while (x % i != 0) i++; k++;while (x

WikiOI 1160 蛇形矩阵

写起来太麻烦,直接在百度搜的, #include<stdio.h>#include <stdlib.h>int main(){ int i=0,j=0,n=0;scanf("%d",&n);//矩阵阶数int **p=NULL;//二维指针,存放矩阵n*n个元素p= (int**)malloc(n*sizeof(int*));//先分配n个一维指针if(NULL==p)exit(1);f

WikiOI 1083 Cantor表

不算难。 #include<stdio.h>int main(){int i,n,bn;scanf("%d",&bn);n=bn;for(i=1;n>0;i++)n-=i;n+=i;if(i%2==1)printf("%d/%d",n-1,i+1-n);else printf("%d/%d",i+1-n,n-1);return 0;}

WikiOI 1076 排序

使用快排,懒得写代码了。 #include<stdio.h>#include<stdlib.h>int cmp(const void *a,const void *b){return *(int *)a-*(int *)b;}int main(){int i,n,a[100001];scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);qs

WikiOI 2235 机票打折

四舍五入到10位!!!!! #include<stdio.h>int main(){int a;float b;scanf("%d %f",&a,&b);float k=a*b/10.0;k=(int)(k+5)/10;k*=10;printf("%.lf\n",k);return 0;}

WikiOI 1206 保留两位小数

用double,别用float,不然会挂 #include<stdio.h>int main(){double a;scanf("%lf",&a);printf("%.2lf",a);return 0;}

WikiOI 1203 判断浮点数是否相等

float读入,然后判断 #include<stdio.h>int main(){float a,b;scanf("%f %f",&a,&b);if(a==b){printf("yes\n");return 0;}printf("no\n");return 0;}

WikiOI 1202 求和

一个个读入,一个个加,一道水题 #include<stdio.h>int main(){int tmp,n,set=0;scanf("%d",&n);while(n--){scanf("%d",&tmp);set+=tmp;}printf("%d\n",set);return 0;}

蚯蚓的游戏问题 wikioi 1033

典型的网络流问题。把每一堆食物,分解成两个点(这里为什么要拆成两个点,我一直没想明白,后来才发现,题目中说每个结点只能经过一次,而假如每堆食物当成一个点,就无法保证改点只经过一次。要是不拆分,则此题只能拿50分),a,b。由a到b建立一个容量为1,cost为该堆食物量的负值的边(因为要求最大费用,所以用负值来代替,最后结果再取负即可)。在建立0结点和1结点。0结点向1结点建立一个容量为k,cost

WIKIOI--1202求和

题目描述 Description 求n个数的和 输入描述 Input Description 第一行一个整数n