2013
11-11

Strategies

Background

Bill, Steve and Linus participate in programming contests just like the one you’re competing in right now. They have different strategies and we’d like to find out whose strategy is the best.

Problem

Bill simply solves the problems in the order he gets them from the contest organizers. Steve first reads all the problems and then solves them in increasing order of difficulty. Linus also reads all problems first, but he’s quite ambitious and thus solves them in decreasing order of difficulty.

The difficulty of a problem is measured in minutes it takes the guys to solve it. We have collected statistics and we’ve consulted the oracle Larry so we know for all kinds of problems how long the guys will need. We have also found out that the three of them always need the same time for each problem (which depends on the difficulty of the problem), so they only differ by their strategies.

For several contests, we’d like you to tell us the winner, the number of problems he solved and his score. The score for a single problem is the time in minutes from start of the contest until you solve it. The overall score is the sum of scores of the problems you solved. The guys never make mistakes so you don’t have to deal with penalties. The winner is the one who solved the most problems, and in case of a tie, the one with the lowest score. If there’s still a tie, then they agree that Steve wins because he always brings delicious apple pie.

The first line contains the number of scenarios. Each scenario describes one contest and its first line tells you how long the contest lasts (in minutes, from 30 to 1440) and the number of problems (from 3 to 24). In a second line you’ll get the difficulties of the problems, as explained above they tell you how many minutes (from 1 to 600) the guys need in order to solve the problems.

The output for every scenario begins with a line containing “Scenario #i:”, where i is the number of the scenario starting at 1. Then print a single line telling who wins, the number of problems he solves and his score. Use the exact format as shown below in the sample output, even if the winner only solves 0 or 1 problems. Terminate the output for the scenario with a blank line.

2
180 6
23 42 170 33 7 19
60 2
43 17

Scenario #1:
Steve wins with 5 solved problems and a score of 288.

Scenario #2:
Steve wins with 2 solved problems and a score of 77.

//* @author: [email protected]/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */
import java.io.*;
import java.util.Arrays;
public class Main
{
public static void main(String[] args) throws IOException
{
int cnt=0;
while((a--)!=0)
{
cnt++;
int t=Integer.parseInt(ss[0]);
int w=Integer.parseInt(ss[1]);
int[] p=new int[w];
for(int i=0;i< w;i++)
p[i]=Integer.parseInt(ss[i]);
Arrays.sort(p);
int sum=0,i,j;
for(i=0;i< w;i++)
{
if(t< p[i])break;
t-=p[i];
}
for(j=0;j< i;j++)
sum+=(i-j)*p[j];
System.out.println("Scenario #"+cnt+":");
System.out.println("Steve wins with "+i+" solved problems and a score of "+sum+".");
System.out.println();
}
}
}

1. 第2题，TCP不支持多播，多播和广播仅应用于UDP。所以B选项是不对的。第2题，TCP不支持多播，多播和广播仅应用于UDP。所以B选项是不对的。

2. 为什么for循环找到的i一定是素数叻，而且约数定理说的是n=p1^a1*p2^a2*p3^a3*…*pk^ak，而你每次取余都用的是原来的m，也就是n