Level 1 | Level 2 | Level 3 | |
---|---|---|---|
Div 1 | Level 1 | Level 2 | Level 3 |
Div 2 | Level 1 | Level 2 | Level 3 |
Tutorials:
Division One - Level Three:
Solution
Source Code:
Division One - Level Two:
Solution
Source Code:
Division One - Level One:
Solution
The same with Div2 - 900 pts.Source Code:
Sivision Two - Level Three:
Solution
I just followed the tutorials on official website.Source Code:
//Wednesday, September 28, 2011 18:08 PDTimport java.util.*;
import java.util.regex.*;
import java.text.*;
import java.math.*;
import java.awt.geom.*;
public class BinaryCards
{
public long largestNumber(long A, long B) {
for (int i=60; i>=0; --i) // 60 = ceil( log2(10 ^ 18) )
if ( ((A^B) & (1L<<i) ) != 0)
return A | ((1L<<(i+1))-1);
return A;
}
}
//Powered by [KawigiEdit] 2.0!
Division Two - Level Two:
Solution
Solve the problem recursively. It's pretty natural.Source Code:
//Wednesday, September 28, 2011 18:08 PDTimport java.util.*;
import java.util.regex.*;
import java.text.*;
import java.math.*;
import java.awt.geom.*;
public class ThreeTeleports
{
public int shortestDistance(int xMe, int yMe, int xHome, int yHome, String[] teleports)
{
long dist = Math.abs(xMe - xHome) + Math.abs(yMe - yHome);
for(int i=0; i<teleports.length; i++){
String[] strs = teleports[i].split(" ");
int x1 = Integer.parseInt(strs[0]);
int y1 = Integer.parseInt(strs[1]);
int x2 = Integer.parseInt(strs[2]);
int y2 = Integer.parseInt(strs[3]);
String[] teles = new String[teleports.length - 1];
for(int j=0, k=0; j<teleports.length; j++){
if(i!=j){
teles[k++] = teleports[j];
}
}
dist = Math.min(dist, Math.abs(xMe - x1) + Math.abs(yMe - y1) + 10L + shortestDistance(x2, y2, xHome, yHome, teles));
dist = Math.min(dist, Math.abs(xMe - x2) + Math.abs(yMe - y2) + 10L + shortestDistance(x1, y1, xHome, yHome, teles));
}
return (int)dist;
}
}
//Powered by [KawigiEdit] 2.0!
Division Two - Level One:
Solution
Use the sum from 1 to 7, subtract every corresponding day from the sum, leave the only missing one to return.Source Code:
//Wed Sep 28 18:19:03 PDT 2011import java.util.*;
import java.util.regex.*;
import java.text.*;
import java.math.*;
import java.awt.geom.*;
public class WhichDay
{
public String getDay(String[] notOnThisDay)
{
int sum = (1 + 7) * 7 / 2;
for(String str : notOnThisDay){
sum -= getNumber(str);
}
return getDays(sum);
}
public int getNumber(String s){
if(s.compareTo("Sunday") == 0) return 7;
if(s.compareTo("Saturday") == 0) return 6;
if(s.compareTo("Friday") == 0) return 5;
if(s.compareTo("Thursday") == 0) return 4;
if(s.compareTo("Wednesday") == 0) return 3;
if(s.compareTo("Tuesday") == 0) return 2;
if(s.compareTo("Monday") == 0) return 1;
return 0;
}
public String getDays(int n){
if(n == 1) return "Monday";
if(n == 2) return "Tuesday";
if(n == 3) return "Wednesday";
if(n == 4) return "Thursday";
if(n == 5) return "Friday";
if(n == 6) return "Saturday";
if(n == 7) return "Sunday";
return "None";
}
}
//Powered by [KawigiEdit] 2.0!
No comments :
Post a Comment