Ճիշտ համընկնում, սանդղակից դուրս
Ձեր KNN ալգորիթմը մարդկանց համեմատում է երկու հատկանիշով՝ ոտքի երկարությամբ (սանտիմետրերով) և բյուջեով (դոլարներով)։ Երբեմն գնի սենսորը հաղորդում է բյուջեի այնպիսի արժեքներ, որոնք նախկինում չեն հանդիպել ձեր ունեցած տվյալներում։ Դոլարի արժեքները կարող են անհամաչափ մեծ լինել սանտիմետրերի համեմատ, և KNN-ը չի կարողանա արդարացի գնահատում կատարել, եթե երկու հատկանիշներն էլ մասշտաբավորված չլինեն։ Դուք որոշում եք կիրառել մասշտաբավորում՝ օգտագործելով նախնական տվյալների հիման վրա հաշվարկված min-max մեթոդը։ Այնուհետև կիրառում եք այդ նույն մասշտաբավորումը նոր տվյալների վրա, նույնիսկ եթե դրանք դուրս են գալիս հայտնի միջակայքից։
Պահանջվում է կարդալ նախնական տվյալները, այնուհետև մասշտաբավորել նոր տվյալները։ Հաշվեք յուրաքանչյուր սյունակի համար մինիմում և մաքսիմում արժեքները՝ օգտագործելով միայն նախնական տվյալները, այնուհետև ձևափոխեք յուրաքանչյուր նոր տող՝ օգտագործելով (v - min) / (max - min)
բանաձևը։ Արժեքները կարող են լինել 0-ից փոքր կամ 1-ից մեծ. դրանք կլորացնել կամ սահմանափակել պետք չէ։ Եթե նախնական տվյալների որևէ սյունակում բոլոր արժեքները նույնն են, ապա դրա մասշտաբավորված արժեքը ցանկացած նոր տվյալի համար պետք է լինի 0։
Մուտքի առաջին տողում տրված է n
ամբողջ թիվը, որը ցույց է տալիս նախնական տվյալների տողերի քանակը։ Հաջորդ n
տողերից յուրաքանչյուրը պարունակում է երկու իրական թիվ՝ ոտքի երկարությունը սանտիմետրերով և բյուջեն դոլարներով։
Այնուհետև հաջորդ տողում տրված է q
ամբողջ թիվը՝ նոր տվյալների տողերի քանակը, որոնք պետք է մասշտաբավորել։ Հաջորդ q
տողերից յուրաքանչյուրը պարունակում է երկու իրական թիվ՝ ոտքի երկարություն և բյուջե, որոնք պետք է մասշտաբավորվեն՝ օգտագործելով նախնական տվյալներից հաշվված min
և max
արժեքները։
Ծրագիրը պետք է տպի q
տող։ Յուրաքանչյուր տող պետք է պարունակի երկու իրական թիվ՝ համապատասխան նոր տողի մասշտաբավորված ոտքի երկարությունը և բյուջեն։
Մուտք | Ելք |
---|---|
3 | -0.5 0.5 |
2 | -0.5 0 |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB