北京赛车彩票网站怎么做,定制家具品牌排行榜前十名,节省时间用wordpress,东莞市官网网站建设品牌正题
CF226D 题目大意
给一个n*m的矩阵#xff0c;每次操作可以使一行或一列全部变号#xff08;变-#xff0c;-变#xff09;#xff0c;问如何操作可以使所有行列之和都是正数 解题思路
考虑每次暴力找小于0的一行或一列#xff0c;然后反转
因为每次反转肯定会使…正题
CF226D 题目大意
给一个n*m的矩阵每次操作可以使一行或一列全部变号变--变问如何操作可以使所有行列之和都是正数 解题思路
考虑每次暴力找小于0的一行或一列然后反转
因为每次反转肯定会使数字之和至少加2且ai≤100a_i\leq 100ai≤100数字之和最小为-1e6最多反转到1e6所以最多反转1e6次
时间复杂度 O(n4)O(n^4)O(n4) code
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#define ll long long
#define N 110
using namespace std;
int n,m,pp,sum,a[N][N],s1[N],s2[N],q[N],qq[N];
int main()
{scanf(%d%d,n,m);for(int i1;in;i)for(int j1;jm;j){scanf(%d,a[i][j]);s1[i]a[i][j];s2[j]a[i][j];}while(1){pp0;for(int i1;in!pp;i)if(s1[i]0)ppi;if(pp){q[pp]^1;for(int i1;im;i){s1[pp]-a[pp][i]*2;s2[i]-a[pp][i]*2;a[pp][i]*-1;}}else{for(int i1;im!pp;i)if(s2[i]0)ppi;if(pp){qq[pp]^1;for(int i1;in;i){s1[i]-a[i][pp]*2;s2[pp]-a[i][pp]*2;a[i][pp]*-1;}}else break;}}sum0;for(int i1;in;i)if(q[i])sum;printf(%d,sum);for(int i1;in;i)if(q[i])printf( %d,i);putchar(10);sum0;for(int i1;im;i)if(qq[i])sum;printf(%d,sum);for(int i1;im;i)if(qq[i])printf( %d,i);return 0;
}