求助一个站外题求调,错了一个点很奇怪
  • 板块学术版
  • 楼主ljs150
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/1 18:31
  • 上次更新2023/11/2 10:24:11
查看原帖
求助一个站外题求调,错了一个点很奇怪
383293
ljs150楼主2023/11/1 18:31

题面``` 聪明的农民(farmers) 问题描述

在城中有一个贪婪而愚蠢的领主,他总是不管农民的死活,疯狂地敲诈农民们辛勤耕种的劳动成果。眼看每年的秋收日十月十日已经到了,这时城中所有的农民在忙完一年的收成后,又要向领主上缴一年的粮食了。很久以来当地就采用一个特殊的“抽签”决定各户农民上缴粮食的方法:领主将一些写有不同的数的纸条放入一个盒子中,每户农民从中抽取两张纸条并在第二天上缴和两张纸条上的数值相乘结果同样数量的粮食。 城中的农民是个既聪明又团结的整体,他们非常痛恨残暴的领主,不希望向他多交一粒粮食,所以他们每年在抽完签后,秘密地交换一些纸条,使最后向领主上缴的粮食总量最少。不幸的是,以往决定如何交换纸条的老农夫杰克病倒了,不能为大家出力了,所以请你帮助他们决定如何交换纸条。另外,为了瞒过领主,活动只能在夜间悄悄进行,因此务必要使交换次数最少(两个农民将各自的一张纸条对调叫做一次交换)。

输入(farmers.in) 文件的第一行为农户数目n(n≤500),接下来的n行,每行为两个数a、b,其中a、b两数均不超过1000。相邻两个数之间由一个或多个空格分隔。

输出(farmers.out) 输出文件由两个数组成,每个数占一行,分别为交换后向领主上缴的粮食总量和需要交换的总次数。

输入输出示例:

farmers.in 3 10 13 7 12 9 6 Farmers.out 252 1

这是我的代码
```cpp
#include<bits/stdc++.h>
using namespace std;	
int a[1009],b[1009],n,cnt,jutc,c=0;
int main()
{
	//freopen("farmers.in","r",stdin);
//	freopen("farmers.out","w",stdout);
	scanf("%d",&n);
	n*=2;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=n;i++)
	{
		b[i]=a[i];
	}
	sort(b+1,b+1+n);
	for(int i=1;i<=n;i+=2)
	{
		for(int j=1;j<=n;j++)
		{
			if(b[j]==a[i])
			{
				jutc=b[n-j+1];
				break;
			}
		}
		for(int j=1;j<=n;j++)
		{
			if(a[j]==jutc)
			{
				swap(a[j],a[i+1]);
				if(i<j)
				{
					if(j!=i+1)
					{
						c++;
					}
				}
				else
				{
					if(i!=j+1)
					{
						c++;
					}
				}
				break;
			}
		}
	}
	for(int j=1;j<=n;j+=2)
	{
		cnt+=a[j]*a[j+1];
	}
	printf("%d\n%d",cnt,c);
	return 0;
}

样例是这样:``` 200
11 998 15 997 17 996 20 995 24 992 26 990 27 989 28 986 31 985 32 984 33 981 34 980 35 978 36 977 38 974 41 973 42 971 48 970 49 969 50 967 51 965 52 957 60 955 64 952 66 949 68 947 71 946 72 942 73 939 77 938 81 937 86 935 87 933 88 924 89 922 90 915 91 914 100 912 102 911 106 910 107 905 113 901 115 893 116 891 117 889 124 888 125 882 127 880 136 873 137 869 139 868 140 867 141 865 142 863 144 862 146 856 150 853 156 850 157 845 158 844 161 838 162 837 163 832 166 830 176 829 178 825 179 824 180 822 182 820 185 818 187 816 194 815 195 812 198 807 199 806 200 804 202 801 203 796 209 794 210 788 216 786 217 785 218 783 221 780 224 778 225 777 230 775 231 773 232 769 235 767 237 763 240 762 241 758 243 756 244 755 245 754 247 748 250 746 252 741 255 731 257 730 259 729 262 728 264 725 266 724 267 723 269 722 271 720 272 717 273 715 276 714 281 713 282 712 285 710 287 709 296 703 299 697 300 696 305 694 307 691 309 689 312 688 313 685 315 680 317 677 319 675 321 668 324 665 328 664 334 663 336 661 338 659 339 655 341 654 342 653 345 652 346 651 347 650 348 648 350 646 353 645 355 642 357 641 360 640 361 638 362 637 367 635 372 632 376 631 377 630 379 622 382 621 384 620 385 617 386 616 388 614 394 611 396 609 398 606 401 605 404 604 405 598 407 597 408 596 409 594 413 592 415 591 417 590 423 589 424 586 425 581 426 573 429 572 431 570 433 569 436 566 440 564 452 559 453 558 461 555 463 554 465 549 468 548 471 546 472 542 477 540 483 539 490 538 491 537 492 536 494 533 495 531 496 529 500 527 502 525 503 523 509 522 511 520 512 515 514 257

输出是34144613
98
我的输出是34144613  
99(只挂了这一个点)
2023/11/1 18:31
加载中...