Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
我的这种写法你能看懂算我输,虽然很短#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<stack> #include<cstring> #include<vector> #include<cmath> #include<map> using namespace std; typedef long long ll; const int maxn = 1e6+5; const int ff = 0x3f3f3f3f; typedef struct { int b; int g; int w; } node1; int n,m,k; int visb[10005],visg[10005]; node1 re[50005]; bool cmp(node1 a,node1 b) { return a.w> b.w; } void init() { memset(visg,0,sizeof(visg)); memset(visb,0,sizeof(visb)); } int main() { int t; cin>>t; while(t--) { init(); scanf("%d %d %d",&n,&m,&k); for(int i = 1;i<= k;i++) { scanf("%d %d %d",&re[i].g,&re[i].b,&re[i].w); } sort(re+1,re+k+1,cmp); int sum = 0; for(int i = 1;i<= k;i++) { if(re[i].g>= n||re[i].b>= m) continue; if(!visg[re[i].g]&&!visb[re[i].b]) { sum+= (20000-re[i].w); visg[re[i].g] = 1; visb[re[i].b] = 1; } else if(!visg[re[i].g]&&visb[re[i].b]||visg[re[i].g]&&!visb[re[i].b]) { sum+= (10000-re[i].w); visg[re[i].g] = 1; visb[re[i].b] = 1; } else if(visg[re[i].g]&&visb[re[i].b]) continue; } for(int i = 0;i< n;i++) if(!visg[i]) sum+= 10000; for(int i = 0;i< m;i++) if(!visb[i]) sum+= 10000; printf("%d\n",sum); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator