Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
-ordi-
HV vaatleja
liitunud: 03.06.2009
|
14.02.2010 22:47:10
Ülesanded mida võiks lahendada, soovitused nende lahendamiseks! |
|
|
Olen vaikselt proovinud lahendada igasuguseid programmeerimisülesandeid.
Hetkel vaevan pead sellisega http://www.upload.ee/image/397828/Pealkirjata.jpg
Kas keegi viitsiks mõne vihje anda kuidas tuleks, võiks seda lahendada, koodi ei soovi.
Kergemad olen suht enamvähem Eesti IO ära lahendanud, aga osad on päris keerukad vähemalt minu jaoks.
Mõned on veel aga alustaks sellest.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
Deadlock
Kreisi kasutaja
liitunud: 16.07.2004
|
15.02.2010 00:08:03
|
|
|
Mina teeksin selle nii:
Kirjutaksin funktsiooni, mis annab järjestikku asuvate aialippide "põhja" pindala, ehk leiaks sisestatud aialippide põhjal visualiseerides midagi sellist:
Kuna sama funktsioon võib võtta sisendiks ka ainult ühe lipi, andes kogu lipi pindala, saan ma kasutada seda üldiselt, ning kirjutada kahekordne tsükkel, mis kontrollib kõik võimalikud järjestikku asuvad lipikombinatsioonid ära. Seega saavad arvestatud ka igasugused kahest ja ühest lipist koosnevad "pilvelõhkujad", mis pindalalt suurimad on.
Kui mingi ajapiirang ka on arvutamisel, siis ei tea, kas see just optimaalne lahendus oleks, aga vähemalt töötab...
NewScientist pakub nädalas korra lahendamist, kellel viitsimist on: http://www.newscientist.com/topic/enigma
|
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
guest1902
Kreisi kasutaja

liitunud: 05.11.2005
|
15.02.2010 20:59:23
|
|
|
Bluebull, kuna antud piirid pole suured, siis t55tab küll. Ajaline piir on 1s.
See ylesanne on selle 6ppeaasta lahtisest v6istlusest ja ise arvasin samuti, et nii labane algo ei l2he l2bi.
Kui piirid oleksid suuremad (nt lippide k6rgus oleks 10^9), siis tuleks midagi targemat v2lja m6elda...
_________________ assumption is the mother of all fuck ups
,,think before you print and save a ROOT::TTree'' |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
-ordi-
HV vaatleja
liitunud: 03.06.2009
|
15.02.2010 23:35:51
|
|
|
Ülesanne tundub lihtsam kui arvasin, vb keerukaks osutub see elementide läbikäimine kahe tsükliga aga pmst muu ma tegin ära.
Kle Elrak oled selle nt javas ära teinud ja kas mahtus aega?
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
guest1902
Kreisi kasutaja

liitunud: 05.11.2005
|
16.02.2010 00:27:16
|
|
|
Ma progresingi Javas (kindluse mõttes), sest c++ süntaks tundus liiga roostes, ning mahtus aega ilusti.
_________________ assumption is the mother of all fuck ups
,,think before you print and save a ROOT::TTree'' |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
-ordi-
HV vaatleja
liitunud: 03.06.2009
|
16.02.2010 17:32:38
|
|
|
Muidu ma lugesin need andmed kõik massiivi ja funktsioon, mis leiab põhja pindala on samuti kirjutatud arvestades massiivi.
Aga ma ei saa ju toda funktsiooni kasutada seal kahekordses tsüklis, sest see leiab mul kõige lühema lipi ja korrutab selle N lippide arvuga.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
Deadlock
Kreisi kasutaja
liitunud: 16.07.2004
|
17.02.2010 15:42:57
|
|
|
tsitaat: |
Aga ma ei saa ju toda funktsiooni kasutada seal kahekordses tsüklis, sest see leiab mul kõige lühema lipi ja korrutab selle N lippide arvuga. |
Vastav funktsioon peaks vastu võtma 1 kuni N lippi ja korrutamama lühima lipi sisestatud lippide arvuga. Saadud tulemust tuleb kontrollida eelmise parima tulemusega ja see vajadusel asendada.
Oletame, et meil on lipid: ABCDE
kahekordne tsükkel peaks sisestama funktsiooni lipid nii:
1) A
2) AB
3) ABC
4) ABCD
5) ABCDE
6) B
7) BC
8) BCD
9) BCDE
10) C
11) CD
12) CDE
13) D
14) DE
15) E
selle saavutamiseks määrad sisemise tsükli "stardinumbriks" välimise tsükli hetke numbri, ehk for(j = i; j < N; j++)
|
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
guest1902
Kreisi kasutaja

liitunud: 05.11.2005
|
17.02.2010 18:29:24
|
|
|
Ma vist tegin niimoodi, et leidsin suurima ja väikseima lipi kõrguse (andmeid sisse lugedes) ja siis välimine tsükkel käib läbi väärtused minimaalsest kõrgusest maksimaalseni, enne sisemist tsüklit loob mingi loenduri, sisemises tsüklis käib läbi massiivi iga elemendi ning võrdleb seda jooksva lipi kõrgusega; kui on suurem-võrdne, siis suurendab loendurit; kui mitte, siis omistab vastusele loenduri ja jooksva lipi kõrguse korrutise juhul, kui saadud korrutis on vastusest suurem. Pole just teab mis efektiivne, kuid seda annaks lippide suure arvu korral optimeerida küll.
e: lisan oma versiooni
Spoiler 
java:
|
import java.io.*; import java.util.*; public class rekl { int n= Integer. parseInt(sis. readLine()); sis.close(); int[] a=new int[n]; for(int i=0;i<n;i++) { a [i ]= Integer. parseInt(st. nextToken()); if(a[i]<min) min=a[i]; if(a[i]>max) max=a[i]; } //int result=max; int result=0; for(int i=min;i<=max;i++) { int counter=0; for(int j=0;j<n;j++) { if(a[j]>=i) counter++; else counter=0; if(result<counter*i) result=counter*i; // see rida tuli nüüd juurde } if(result<counter*i) result=counter*i; } val.println(result); val.flush(); } }
|
_________________ assumption is the mother of all fuck ups
,,think before you print and save a ROOT::TTree''
viimati muutis guest1902 18.02.2010 00:50:37, muudetud 1 kord |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
-ordi-
HV vaatleja
liitunud: 03.06.2009
|
17.02.2010 18:57:18
|
|
|
Millegi pärast on mul loll komme kõik asjad väga raskesti ära lahendada .
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
Renka
HV Guru

liitunud: 01.04.2002

|
17.02.2010 19:50:15
|
|
|
Elrak, proovi oma koodi sellise sisendiga:
Ma eeldaks väljundiks 20. Su kood annab minuarust aga väljundiks 8 (kui ma õigesti selle läbi närisin)
_________________ There is no place like 127.0.0.1 |
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
 |
-ordi-
HV vaatleja
liitunud: 03.06.2009
|
17.02.2010 20:33:03
|
|
|
Testisin ka seda koodi, töötab suht ainult mõne sisendiga, nii lihtne see lahendus ikka ei ole.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
DoS
HV veteran

liitunud: 19.08.2002
|
17.02.2010 21:00:28
|
|
|
põhimõtteliselt tal see töötab, lihtsalt vaja if(result<counter*i) result=counter*i; kopeerida ka sisemise tsükli else'i (enne counter=0)
teeks veel nii, et ei kontrollita olematuid lipi kõrgusi läbi, oleks ilmselt päris hea lahendus kuigi tundub, et antud ülesande püstitusel eriti vahet ei ole, mahub aega igat pidi
|
|
Kommentaarid: 50 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
47 |
|
tagasi üles |
|
 |
mrkaarel
HV vaatleja
liitunud: 08.07.2008
|
17.02.2010 22:22:50
|
|
|
Kahekordsetele tsüklitele vahelduseks üks rekursiivne lahendus ka. Funktsioon saab ette aialippide massiivi, leiab madalaima lipi, arvutab selle järgi pindala ja kutsub sama funktsiooni välja madalaimast lipist vasakule ja paremale poole jäävate lippide jaoks. Failist input-output osa ei tundunud erutav, see jäi välja
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
List<int> fence = new List<int>() { 1, 5, 5, 4, 5, 5, 3, 1 };
Console.WriteLine(ReturnMaxArea(fence));
}
public static int ReturnMaxArea(List<int> fence)
{
if (fence.Count == 0) {
return 0;
}
int lowestHeight = Int32.MaxValue, lowestHeightIndex = -1;
for (int i = 0; i < fence.Count; i++) {
if (fence[i] < lowestHeight) {
lowestHeight = fence[i];
lowestHeightIndex = i;
}
}
int currentBaseArea = fence.Count * lowestHeight;
List<int> leftFence = fence.GetRange(0, lowestHeightIndex);
List<int> rightFence = fence.GetRange(lowestHeightIndex + 1, fence.Count - lowestHeightIndex - 1);
return Math.Max(currentBaseArea, Math.Max(ReturnMaxArea(leftFence), ReturnMaxArea(rightFence)));
}
}
|
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
Deadlock
Kreisi kasutaja
liitunud: 16.07.2004
|
17.02.2010 23:11:16
|
|
|
Proovisin ka ära, kui kõik juba proovivad:
Spoiler 
public class Test {
public static void main(String[] args) {
int[] array = {8,2,2,1,3,6,2,8};
int result = getMaxRectArea(array);
System.out.println(result);
}
public static int getMaxRectArea(int[] array){
int maxArea = 0;
for(int i = 0; i < array.length; i++)
for(int j = i; j < array.length; j++){
int val = getSurfaceArea(array, i, j);
if(val > maxArea) maxArea = val;
}
return maxArea;
}
public static int getSurfaceArea(int[] array, int startIndex, int endIndex){
Integer lowestValue = null;
for(int i = startIndex; i <= endIndex; i++){
if(lowestValue == null || array[i] < lowestValue){
lowestValue = array[i];
}
}
return lowestValue * (endIndex - startIndex +1);
}
} |
|
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
-ordi-
HV vaatleja
liitunud: 03.06.2009
|
17.02.2010 23:58:25
|
|
|
No võtame järgmise ülesande?
kellelgi midagi välja pakkuda ei ole?
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
guest1902
Kreisi kasutaja

liitunud: 05.11.2005
|
18.02.2010 01:03:15
|
|
|
Eelmisest ülesandest nii palju, et tookord ma suutsin ikka max p kätte saada, sest ma testisin igasuguste kombinatsioonidega. Nüüd peaks kood korras olema.
http://www.ttkool.ut.ee/comp/balt/boi96d1e.htm
Esimene ülesanne näris kunagi täiega, kuid vahepeal on ununenud. Nv proovin uuesti. Vihjeks pidavat olema kahendotsing...
_________________ assumption is the mother of all fuck ups
,,think before you print and save a ROOT::TTree'' |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
-ordi-
HV vaatleja
liitunud: 03.06.2009
|
18.02.2010 20:54:37
|
|
|
Elrak kirjutas: |
Eelmisest ülesandest nii palju, et tookord ma suutsin ikka max p kätte saada, sest ma testisin igasuguste kombinatsioonidega. Nüüd peaks kood korras olema.
http://www.ttkool.ut.ee/comp/balt/boi96d1e.htm
Esimene ülesanne näris kunagi täiega, kuid vahepeal on ununenud. Nv proovin uuesti. Vihjeks pidavat olema kahendotsing... |
Ega sa sassi ei ajanud? Mulle tundub et esimeses ülesandes ei ole kahendotsinguga midagi teha, teises on küll.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
guest1902
Kreisi kasutaja

liitunud: 05.11.2005
|
18.02.2010 22:19:43
|
|
|
-ordi- kirjutas: |
Elrak kirjutas: |
Eelmisest ülesandest nii palju, et tookord ma suutsin ikka max p kätte saada, sest ma testisin igasuguste kombinatsioonidega. Nüüd peaks kood korras olema.
http://www.ttkool.ut.ee/comp/balt/boi96d1e.htm
Esimene ülesanne näris kunagi täiega, kuid vahepeal on ununenud. Nv proovin uuesti. Vihjeks pidavat olema kahendotsing... |
Ega sa sassi ei ajanud? Mulle tundub et esimeses ülesandes ei ole kahendotsinguga midagi teha, teises on küll. |
Ei ajanud... Selles asja probleem ongi.
_________________ assumption is the mother of all fuck ups
,,think before you print and save a ROOT::TTree'' |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
virus152
HV vaatleja

liitunud: 05.03.2009
|
20.02.2010 18:34:02
|
|
|
See ülesanne oli paar aastat tagasi valikvõistlusel või õppesessioonil kasutusel. Näidislahendus oli mäletamist mööda realiseeritud nii, et kattuva osa sisse üritati lihtsalt panna järjest väiksemaid ruute seni kuni kasutatava ruudu pindala oli mingi järk allpool nõutud täpsust.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
webromps
HV kasutaja
liitunud: 13.06.2005
|
|
Kommentaarid: 6 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
virus152
HV vaatleja

liitunud: 05.03.2009
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
-ordi-
HV vaatleja
liitunud: 03.06.2009
|
27.02.2010 23:54:10
|
|
|
Neid lehti kus saab lahendada ülesandeid on väga palju, http://uva.onlinejudge.org/ siin on ühed keerukamad, vähemalt tundub nii.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
guest1902
Kreisi kasutaja

liitunud: 05.11.2005
|
13.09.2010 06:49:29
|
|
|
Topic resurrection!!1
kk
Selline ülesanne siis (väike abstraheerimine ), et on antud k-pikkune arv alusel n (k<=n), kusjuures iga number esineb selles arvus ühe korra. Leida kõik sellised arvud, milles esimesest i numbrist moodustatud arv jagub arvuga i.
Lihtsuse mõttes olgu esialgu k=n=10.*
Permutatsioonid 10 puhul ei tohiks erilist raskust valmistada (paberi pealgi lahendatav, kuid võtab rohkem aega kui koodimine)... küll jääb mulle mõistatuseks igas ülejäänud arvusüsteemis permutatsioonide genereerimine (ja omakorda jaguvuse kontrollimine), et asi võtaks mõistuse piires aega. Jäägi leidmine mitte-kümnendsüsteemi arvudega pole just asi, millega tegelenud.
* esialgses ülesandes oligi antud just see variant ning asi lahenes (veits bruutfoorsides) valutult. Et ülesanne veidike arusaadavam oleks, siis nt 1234567890 ei sobi, sest 1234%4==2. 10_P_10 puhul leidub 1 vastus.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
troglodyte
Kreisi kasutaja

liitunud: 09.08.2002
|
13.09.2010 13:43:14
|
|
|
Jäägi leidmiseks teisendad arvu kümnendsüsteemi.
_________________ ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
mark11
HV vaatleja
liitunud: 28.01.2006
|
18.09.2010 09:49:42
|
|
|
oletame, et I on paaris arv, siis me ei pea genereerima paarituid permutatsioone, sest paaritu % paaris > 0
kui me nüüd vaatame mitu võimalust on sellist, et paarisarv on viimane, siis tuleb meil[kui ma nüüd väga võssa ei pannud][/ot]
C(9, 5)*5! * C(5, 4) * 4! = 1814400
mis põhimõtteliselt on ju teatavasti 10!/2
ehk siis juba on näha pool võitu
sama asi kehtib teiste asjade kohta ka, näiteks 9'ga jaguvad arvud ainult siis kui ristsumma jagub 9'ga.. seega kui vahet pole millise arvu ristsumma ei jagu 9'ga siis vastus on 0 näiteks
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
|