Explanation Assignment
Explanation Assignment
struct Point
double x,y;
};
Point p[10001];
return min;
double min = d;
qsort(strip, size, sizeof(Point), compareY);
for (int j = i+1; j < size && (strip[j].y - strip[i].y) < min;
++j)
return min;
if (n <= 3)
Point strip[n];
int j = 0;
int main()
int n;
scanf("%d",&n);
while (n!=0)
scanf("%lf%lf",&p[i].x,&p[i].y);
double a = closest(p,n);
if(a>=10000)
printf("INFINITY\n");
else
printf("%.4f\n",a);
scanf("%d",&n);
Assignment 5
#include<cstdio>
#include<algorithm>
#include<vector>
int main()
vector<int> v;
{
int i;
scanf("%d", &num[i]);
v.clear();
int size = 1;
v.push_back(num[0]);
lis[0] = 1;
v.push_back(num[i]);
lis[i] = ++size;
else
v[temp] = num[i];
lis[i] = temp + 1;
v.clear();
size = 1;
v.push_back(num[n - 1]);
lds[n - 1] = 1;
v.push_back(num[i]);
lds[i] = ++size;
}
else
v[temp] = num[i];
lds[i] = temp + 1;
int max = 0;
max = temp;
return 0;
Assignment 6
#include <iostream>
int t, T;
struct Item {
};
Item items[1000];
int nItem;
void init() {
std::cin >> T;
t = 0;
bool input() {
if (t++ == T)
return false;
dp[i][j] = -1;
return true;
if (n < 0)
return 0;
if (dp[n][weight] >= 0)
return dp[n][weight];
return dp[n][weight];
}
void run() {
int nCustomer;
int main() {
init();
while (input())
run();
return 0;
Assignment 7
#include<string>
#include<algorithm>
#include<iostream>
string arr[300];
int n = 0;
int maxx = 0;
int main()
{
string string1;
string string2;
while(cin>>string1)
{
cin>>string2;
int s1 = string1.length()+1;
int s2 = string2.length()+1;
int T[300][300];
for(int i = 0; i<=s1-1; i++)
{
for(int j=0; j<=s2-1; j++)
{
if(i==0 || j==0)
{
T[i][j] = 0;
}
else
{
if(string1[i-1] == string2[j-1])
{
T[i][j]= T[i-1][j-1]+1;
}
else
{
T[i][j] = (T[i-1][j]>T[i][j-1]) ? T[i-1][j]:T[i]
[j-1];
}
}
}
}
string S = "";
backT(T,s1-1,s2-1,T[s1-1][s2-1],string1,string2,S);
if(n == 0)
{
cout<<"No common sequence."<<endl;
}
else
{
Assignment 8
#include <iostream>
#include<vector>
#include <algorithm>
using namespace std;
struct node
{
double le,ri;
node(double l,double r):le(l),ri(r) {}
bool operator<(const node& e)const
{
return le<e.le;
}
};
int n;
double l,w;
vector<node> v;
int main()
{
while(scanf("%d%lf%lf",&n,&l,&w)==3)
{
v.clear();
for(int i=0; i<n; ++i)
{
double p,r;
scanf("%lf%lf",&p,&r);
if(r<=w/2)
continue;
double x=sqrt(r*r-w*w/4.0);
if(p+x>=0 || p-x<=l)
v.push_back(node(p-x,p+x));
}
sort(v.begin(),v.end());
int ans=0;
bool ok=1;
double maxr=0;
int i=0;
while(1)
{
if(v[i].le>maxr)
{
ok=0;
break;
}
double tmp=0;
++ans;
for(; i<v.size() && v[i].le<=maxr; ++i)
{
tmp=max(tmp,v[i].ri);
}
maxr=max(maxr,tmp);
if(i==v.size()||maxr>=l)
break;
}
if(maxr<l)
ok=0;
if(!ok)
puts("-1");
else
printf("%d\n",ans);
}
return 0;
}
Assignment 9
#include <iostream>
#include <vector>
#include <queue>
#define in pair<int, int>
#include <limits>
using namespace std;
int infinity =numeric_limits<int>::max();
int latency[100000];
int n, m, s, t;
vector< vector<in> > com;
void dijkstra(int s)
{
for(int i = 0; i<n; i++)
latency[i] = infinity;
latency[s] = 0;
priority_queue<in, vector<in>, greater<in> > pq;
pq.push( in(latency[s], s) );
in p;
int t, u;
while(!pq.empty())
{
p = pq.top();
pq.pop();
t = p.first;
u = p.second;
if(t > latency[u] )
continue;
for(int i = 0; i<com[u].size(); i++)
{
if(latency[com[u][i].first] > latency[u] + com[u][i].second)
{
latency[com[u][i].first] = latency[u] + com[u][i].second;
pq.push( in(latency[com[u][i].first], com[u][i].first) );
}
}
}
}
int main()
{
int tc;
scanf("%d", &tc);
for(int k = 1; k<=tc; k++)
{
scanf("%d%d%d%d", &n, &m, &s, &t);
com.assign(n, vector<in>(0));
int c1, c2, cable;
for(int i = 0; i<m; i++)
{
scanf("%d%d%d", &c1, &c2, &cable);
com[c1].push_back( in(c2, cable) );
com[c2].push_back( in(c1, cable) );
}
dijkstra(s);
printf("Case #%d: ", k);
if(latency[t] != infinity)
printf("%d\n", latency[t]);
else
printf("unreachable\n");
}
}
Assignment 10
#include <iostream>
#include <vector>
#include <queue>
Assignment 11
#include <cstdio>
#include <queue>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
#define INF 9999999999999
#define eps 0.00000000001
vector<int> edge[50];
int cap[50][50], flow[50][50], pre[50];
double cost[50][50], dis[50];
int main()
{
int N, M;
while (scanf("%d %d", &N, &M) && (N || M)) {
int S = 0,
T = N+M+1;
Initial(S, T, N, M);
double travel_time;
for (int i = 1; i <= N; ++i) {
for (int j = N+1; j <= N+M; ++j) {
scanf("%lf", &travel_time);
cost[i][j] = travel_time;
}
}
printf("%.2f\n", MCMF(S, T) / N + eps);
}
}
void Initial(int S, int T, int N, int M)
{
for (int i = S; i <= T; ++i) edge[i].clear();
memset(cap, 0, sizeof(cap));
memset(flow, 0, sizeof(flow));
memset(cost, 0, sizeof(cost));
dis[S] = 0;
Q.push(S);
inQueue[S] = true;
while (!Q.empty()) {
int cur = Q.front();
inQueue[cur] = false;
Q.pop();