| ||||||||||
| 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 | |||||||||
Re:我的这种写法你能看懂算我输,虽然很短In Reply To:我的这种写法你能看懂算我输,虽然很短 Posted by:nka_kun at 2017-08-06 20:05:22 > #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