Open zhaokuohaha opened 8 years ago
//AC LeetCode57
/**
* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
class Solution {
public:
vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) {
vector<Interval> result;
bool inserted = false;
for(auto it : intervals)
{
if(!inserted)
{
if(it.start <= newInterval.start && it.end >= newInterval.end)
return intervals;
if(it.start >= newInterval.start && it.end <= newInterval.end)
continue;
if(it.start < newInterval.start && it.end >= newInterval.start)
{
newInterval.start = it.start;
continue;
}
if(it.start <= newInterval.end && it.end > newInterval.end)
{
newInterval.end = it.end;
continue;
}
if(it.start > newInterval.end)
{
result.push_back(newInterval);
inserted = true;
}
}
result.push_back(it);
}
if(!inserted)
result.push_back(newInterval);
return result;
}
};
POJ 1006 中国剩余定理(孙子定理,一次同余方程组)
import java.util.*;
import java.lang.Math;
import java.text.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int p,e,i,d;
int time = 1;
while(cin.hasNext()){
p = cin.nextInt();
e = cin.nextInt();
i = cin.nextInt();
d = cin.nextInt();
if(p==-1 && e==-1 && i==-1 && d==-1)
break;
int n=(5544*p+14421*e+1288*i-d+21252)%21252;
if(n==0)
n=21252;
System.out.println("Case " + (time++) + ": the next triple peak occurs in " + n +" days.");
}
}
}
// LeetCode 57 AC
/**
* Definition for an interval.
* function Interval(start, end) {
* this.start = start;
* this.end = end;
* }
*/
/**
* @param {Interval[]} intervals
* @param {Interval} newInterval
* @return {Interval[]}
*/
var insert = function(intervals, newInterval) {
var flag = true;
var res = [];
if(intervals.length === 0){
res.push(newInterval);
return res;
}
intervals.forEach(function(interval){
if(interval.end < newInterval.start)
res.push(interval);
else if(interval.start > newInterval.end){
if(flag){
res.push(newInterval);
flag = false;
}
res.push(interval);
}else{
newInterval.start = Math.min(newInterval.start, interval.start);
newInterval.end = Math.max(newInterval.end,interval.end);
}
});
if(flag){
res.push(newInterval);
}
return res;
};
POJ1006描述
一些人相信从出生开始,人的一生伴随这三种周期,分别是体力周期,情绪周期和智力周期,各周期的时长分别为23天,28天,和33天,每种周期内拥有一个峰值点,一个人在峰值点上,他相应的特质(体力,情绪或智力)将会达到最佳。比如,当处在智力周期的峰值点上,人很容易拥有清晰和深邃的思维。
因为各周期拥有不同的时长,三各周期峰值点将在不同的时间出现,我们想试图确定超级峰值点(三个峰值点出现在同一天)出现的时间。对于每一种周期,我们将给出一个今年出现的峰值点时间(不一定是第一个),同时我们将给出一个日期表示这是今天的第几天,你的任务是确定下一个超级峰值点发生在多少天之后(不计今天,比如今天是10号,下个超级峰值点发生在在12号,则答案是2天,不是3天)。如果今天已经是超级峰值点,则依旧计算下一个超级峰值点发生在多少天之后。
LeetCode-57-C#
/**
* Definition for an interval.
* public class Interval {
* public int start;
* public int end;
* public Interval() { start = 0; end = 0; }
* public Interval(int s, int e) { start = s; end = e; }
* }
*/
public class Solution
{
public IList<Interval> Insert(IList<Interval> intervals, Interval newInterval)
{
List<Interval> ret = new List<Interval>();
if(intervals.Count == 0) { ret.Add(newInterval); return ret; }
int i = 0;
while(i < intervals.Count && intervals[i].end < newInterval.start)
{
ret.Add(new Interval { start = intervals[i].start, end = intervals[i].end });
i++;
}
while(i < intervals.Count && newInterval.end >= intervals[i].start )
{
newInterval.end = System.Math.Max(newInterval.end, intervals[i].end);
newInterval.start = System.Math.Min(newInterval.start, intervals[i].start);
i++;
}
ret.Add(newInterval);
while (i < intervals.Count)
{
ret.Add(new Interval { start = intervals[i].start, end = intervals[i].end });
i++;
}
return ret;
}
}
POJ 1006 普通模拟方法 Time Exceeded
import java.util.Scanner;
/**
* Created by laowang on 2016/7/11.
*/
public class Main {
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
int p=scanner.nextInt();
int e=scanner.nextInt();
int i=scanner.nextInt();
int d=scanner.nextInt();
int n=0;
while (p!=-1 && e!=-1 && i!=-1 && d!=-1){
int f=0;
p=p%23;
e=e%28;
i=i%33;
if(p==0 && e==0 && i==0){
System.out.println("Case "+(++n)+":"+" the next triple peak occurs in 21252 days.");
}else{
int n1=(21252+23-p)/23;
int n2=(21252+28-e)/28;
int n3=(21252+33-i)/33;
for(int j=1;j<=n1;j++){
for(int k=1;k<=n2;k++){
for(int l=1;l<=n3;l++){
if(p+(j-1)*23 == e+(k-1)*28 && e+(k-1)*28 == i+(l-1)*33){
System.out.println("Case "+(++n)+":"+" the next triple peak occurs in "+(p+(j-1)*23-d)+" days.");
f=1;
break;
}
}
if(f==1)
break;
}
if(f==1)
break;
}
}
p=scanner.nextInt();
e=scanner.nextInt();
i=scanner.nextInt();
d=scanner.nextInt();
}
}
}
POJ1006
LeetCode 57