codeforces 804A Find Amir http://codeforces.com/problemset/problem/804/A
/*
题意:给定n个学校,需要遍历所有学校,可从任意一点开始.
i到j有(i+j) mod (n+1) 的花费,求最小花费。 考虑贪心:先走和为n+1的两处,走完后最小只能再走到和为n+1的学校,再走到和为n的
例如: 1 2 3 4 5 6 7 8 9 10
先走1->10 花费为0
再走10->2 花费为1
再走2->9 花费为0
...
最后答案,如果n是奇数,就是n/2 否则就是n/2-1.
*/
#include<iostream>
#include<cstdio>
#include<cstring> using namespace std;
int n,ans; int main()
{
scanf("%d",&n);
if(n%==) printf("%d\n",n/);
else printf("%d\n",n/-);
return ;
}
难度系数0.2
codeforces 803A Maximal Binary Matrix http://codeforces.com/problemset/problem/803/A
/*
题意:给你一个n*n的矩阵,让你往里面填1,使得这个矩阵对称
然后输出这个矩阵字典序最大的那个矩阵
如果无法完成就输出-1,矩阵字典序就是每行都进行字典序比较 贪心.首先k>n*N肯定是输出-1,剩下的,由于是要输出字典序最大的,
那么肯定是尽可能把每一行都填满,但是要对称着填,对角线上消耗一个1,其余地方消耗两个1
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define maxn 101 using namespace std;
int a[maxn][maxn];
int n,k,cnt,ans; int main()
{
scanf("%d%d",&n,&k);
if(k>n*n)
{
puts("-1");
return ;
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(a[i][j])continue;
if(i==j&&k)
{
k--;
a[i][j]=;
}
else if(k>=)
{
k-=;
a[i][j]=a[j][i]=;
}
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
printf("%d ",a[i][j]);
if(j==n)
printf("\n");
}
return ;
}
难度系数0.4