A:Second-price Auction ZOJ 3202
题目大意:n人竞拍,输出拍价最高的下标,以及拍价第二高的数值
代码:
#include
#include
#include
#include
using namespace std;
int a[110];
int main(){
int T;
while(scanf("%d",&T)!=EOF){
while(T--){
int n;
int maxn=-1;
int flag=0;
scanf("%d",&n);
for(int i=0;imaxn)
{maxn=a[i];flag=i;}
}
sort(a,a+n);
printf("%d %d\n",flag+1,a[n-2]);
}
}
return 0;
}
F:80ers' Memory ZOJ 3207
题目大意:N个标准字符串,给k行数据,每行数据x个字符串,问这x个字符串有几个在N个标准字符串中。
#include
#include
I:A Stack or A Queue? ZOJ 3210
题目大意:每个测试案例中有n个数据,两行数据,第一行代表入,第二行代表出。问这组数据是满足queue、stack、both、neiher其中的哪种情况。(数据没有全部进入前,没有数据输出)
思路:先让第一组数据向右依次与第二组数据进行比较,遇到不符合的情况就标记flag1为0,break循环。再让第一组数据反着与第二组数据进行比较,遇到不符合的情况就标记flag2为0,break循环。(flag1与flag2的初始值为1)。最后进行判断
if(flag1==1&&flag2==1) 输出both
if(flag==1&&flag2==0)输出 queue
if(flag==0&&flag2==1)输出 stack
if(flag==0&&flag2==0)输出 neither
J:Dream City ZOJ 3211
K:K-Nice ZOJ 3212
题目大意:
当一个元素的四周均有元素时,定义为这个元素在矩阵内。"nice"数的意思是,在矩阵内的元素,且该元素四周元素的和等于该元素本身。现有一个n*m矩阵,在该矩阵内有k个nice数,请你输出一个这样的矩阵。
思路:有案例可以看出,k个nice数均使它为0即可。接下来的目标就是输出多少个0可以构造出k个nice 0 。
注意两个问题:1、由于有大量的案例用scanf与printf,用cin与cout会超时
2、不是0元素的值,不可以全是1,若全是1遇见特殊情况会出错。
如: 0000 这个矩阵的本意是构造出一个nice数,但实际上会有两个。第三行第三个1元素是额外的1个nice数。
0000
0010
0110
代码: 自己的代码是先输出0,再输出其他数
#include
#include
#include
using namespace std;
int a[20][20];
int main()
{
int T;
int n,m,k;
while(scanf("%d",&T)!=EOF)
{
while(T--)
{
//cin>>n>>m>>k;
scanf("%d%d%d",&n,&m,&k);
//memset(a,-1,sizeof(a));
if(n>=3&&m>=3)//n与m大于于3时,才存在nice数
{
int flag=1;//对不是0元素的数进行输出
int h=k/(m-2);
int f=k%(m-2);
for(int i=0; i
代码二:看到一个题解是
先输出数,所需数的个数输出完就输出0,第一列与最后一列也是均为0 代码来源
#include
#include
#include
#include
using namespace std;
int T, n, m, k;
#define maxn 20
int a[maxn][maxn];
int main(){
scanf("%d", &T);
while(T--){
scanf("%d%d%d", &n, &m, &k);
k = (n-2)*(m-2)-k;//此处是关键
for(int i = 1; i <= n; i++){
printf("0");
for(int j = 2; j <= m-1; j++){
if(k == 0) printf(" 0");
else printf(" %d", k--);
}printf(" 0\n");
}
}