apt-get update
sudo apt-get install vim
2015年1月30日 星期五
2015年1月29日 星期四
TIOJ 1174 The Shortest Distance
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main(){
int n, m, ans;
int a[100005], b[100005];
scanf("%d %d",&n, &m);
for (int i = 0; i < n; ++i)
scanf("%d", &a[i]);
for (int i = 0; i < m; ++i)
scanf("%d", &b[i]);
sort(a, a+n);
sort(b, b+m);
int x = 0, y = 0;
ans = abs(a[0] - b[0]);
while(x < n && y < m){
ans = min(ans ,abs(a[x] - b[y]));
if(a[x] < b[y])
x++;
else
y++;
}
printf("%d\n", ans);
}
TIOJ 1018 D.A Logical Problem
#include <cstdio> #include <cstdlib> #include <algorithm> #include <vector> using namespace std; int main(){ int T; char ss[100]; scanf("%d\n",&T); vector<char> v,vv; while(T--){ gets(ss); v.clear(); vv.clear(); for(int i = 0; ss[i] != '\0'; i++){ if(ss[i] == ' '){ if(ss[i+1] == 'n' && ss[i+2] == 'o' && ss[i+3] == 't') v.push_back('n'); else if(ss[i+1] == 'a' && ss[i+2] == 'n' && ss[i+3] == 'd') v.push_back('a'); else if(ss[i+1] == 'o' && ss[i+2] == 'r') v.push_back('o'); else if(ss[i+1] == 'T' && ss[i+2] == 'H' && ss[i+3] == 'E' && ss[i+4] == 'N') v.push_back('t'); else v.push_back(ss[i+1]); } } int s; bool f = true; for (s = 0; v[s] != 't'; ++s){ } for (int i = s+1; i < v.size(); ++i){ if(v[i] < 'A' || (v[i] > 'Z' && v[i] < 'a') || v[i] > 'z') continue; if(v[i] == 'a') vv.push_back('o'); else if(v[i] == 'o') vv.push_back('a'); else if(v[i] == 'n') f = false; else{ if(f) vv.push_back('n'); vv.push_back(v[i]); f = true; } } vv.push_back('t'); for (int i = 0 ; i < s; ++i){ if(v[i] == 'a') vv.push_back('o'); else if(v[i] == 'o') vv.push_back('a'); else if(v[i] == 'n') f = false; else{ if(f) vv.push_back('n'); vv.push_back(v[i]); f = true; } } printf("IF "); for (int i = 0; i < vv.size(); ++i){ if(vv[i] == 'a') printf("and "); else if(vv[i] == 'o') printf("or "); else if(vv[i] == 'n') printf("not "); else if(vv[i] == 't') printf("THEN "); else printf("%c ", vv[i]); } printf("\n"); } }
TIOJ 1210 圖論 之 簡單圖測試
#include <cstdio>
#include <cstdlib>
#include <algorithm>
int main(){
int degree[10005];
int n;
bool ans;
int num;
while(1){
scanf("%d", &n);
if(n == 0){ break; }
for (int i = 0; i < n; ++i)
scanf("%d", °ree[i]);
ans = true;
std::sort(degree, degree+n);
num = 0;
while(1){
if(degree[n-1] >= n)
ans = false;
if(degree[n-1] == 0 || ans == false)
break;
for (int i = n-2; i >= n-1-degree[n-1]; --i){
if(degree[i] == 0){
ans = false;
break;
}
degree[i]--;
}
degree[n-1] = 0;
std::swap(degree[num], degree[n-1]);
num++;
std::sort(degree+num, degree+n);
}
printf("%s\n", ans ? "Yes":"No");
}
}
TIOJ 1217 傳說中的簡單題
#include <cstdio>
#include <cstdlib>
int main(){
char s[1001];
while(gets(s) != NULL)
printf("%s\n", s);
}
TIOJ 1211 圖論 之 最小生成樹
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
int n,m;
bool ans = true;
struct node{
int color;
vector<int> edge;
};
node N[100005];
bool visit[100005];
void dfs(int x){
if(!ans){ return; }
if(visit[x]){ return; }
visit[x] = true;
for (int i = 0; i < N[x].edge.size(); ++i){
if(N[N[x].edge[i]].color == 0)
N[N[x].edge[i]].color = N[x].color * -1;
else if(N[N[x].edge[i]].color == N[x].color){
ans = false;
return;
}
if(!visit[N[x].edge[i]])
dfs(N[x].edge[i]);
}
}
int main(){
int a, b;
while(true){
scanf("%d %d", &n, &m);
if(n+m == 0){ break; }
for (int i = 1; i <= n; ++i){
N[i].color = 0;
N[i].edge.clear();
visit[i] = false;
}
for (int i = 0; i < m; ++i){
scanf("%d %d", &a, &b);
N[a].edge.push_back(b);
N[b].edge.push_back(a);
}
ans = true;
N[1].color = 1;
dfs(1);
printf("%s\n", ans? "Yes":"No");
}
}
TIOJ 1209 圖論 之 二分圖測試
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
int n,m;
bool ans = true;
struct node{
int color;
vector<int> edge;
};
node N[100005];
bool visit[100005];
void dfs(int x){
if(!ans){ return; }
if(visit[x]){ return; }
visit[x] = true;
for (int i = 0; i < N[x].edge.size(); ++i){
if(N[N[x].edge[i]].color == 0)
N[N[x].edge[i]].color = N[x].color * -1;
else if(N[N[x].edge[i]].color == N[x].color){
ans = false;
return;
}
if(!visit[N[x].edge[i]])
dfs(N[x].edge[i]);
}
}
int main(){
int a, b;
while(true){
scanf("%d %d", &n, &m);
if(n+m == 0){ break; }
for (int i = 1; i <= n; ++i){
N[i].color = 0;
N[i].edge.clear();
visit[i] = false;
}
for (int i = 0; i < m; ++i){
scanf("%d %d", &a, &b);
N[a].edge.push_back(b);
N[b].edge.push_back(a);
}
ans = true;
N[1].color = 1;
dfs(1);
printf("%s\n", ans? "Yes":"No");
}
}
訂閱:
文章 (Atom)