1 条题解
-
0Guest LV 0 MOD
-
0
这题思路很简单,就是把能比较轻重的都比一边,统计比第i个重的个数是否超过一半,超过一半这颗珍珠就可以排除,答案+1,然后轻的再统计一遍。用二维数组来存储两个珍珠间的轻重关系, a[i][j] = 1 表示第i个比第j个重,既第j个比第i个轻。如果a[i][k] = 1 并且 a[k][j] = 1 ,那么就可以推出a[i][j] = 1
/* 检查: 一、数据范围 二、输入输出 三、边界条件(2、循环 3、判断 4、递归) 四、数据处理(计算) 五、理论论证(思路) */ #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<string> #include<algorithm> #include<climits> #include<cfloat> #include<queue> using namespace std; int n,m,ans,a[105][105]; int main() { // freopen("x.in","r",stdin); // freopen("x.out","w",stdout); int x,y; cin>>n>>m; for(int i = 1; i <= m; i++) { cin>>x>>y; a[x][y]=1; } for(int k = 1; k <= n; k++) { for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(a[i][k]&&a[k][j]) a[i][j]=1; } } } for(int i = 1; i <= n; i++) { int ansp=0; for(int j = 1; j <= n; j++) { if(a[i][j]) ansp++; } if(ansp>=(n+1)/2) ans++; ansp=0; for(int j = 1; j <= n; j++) { if(a[j][i]) ansp++; } if(ansp>=(n+1)/2) ans++; } cout<<ans; return 0; }
- 1
信息
- 难度
- 4
- 分类
- (无)
- 标签
- 递交数
- 30
- 已通过
- 11
- 通过率
- 37%
- 上传者