Skip to content

Commit 2ddd10f

Browse files
committed
Add few more problem solutions
1 parent 89f9685 commit 2ddd10f

File tree

73 files changed

+4667
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+4667
-0
lines changed
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
int main() {
5+
int TC,tc,a,b;
6+
scanf("%d",&TC);
7+
tc = 1;
8+
while(tc<=TC) {
9+
scanf("%d%d",&a,&b);
10+
printf("Case %d: %d\n",tc,(a+b));
11+
tc++;
12+
}
13+
return 0;
14+
}

lightoj/1001 - Opposite Task.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#include <iostream>
2+
#include <cstdlib>
3+
4+
using namespace std;
5+
6+
int main() {
7+
int TC,n,r;
8+
cin >> TC;
9+
while(TC--) {
10+
cin >> n;
11+
r = n/2;
12+
cout << r << " " << n-r << endl;
13+
}
14+
return 0;
15+
}

lightoj/1003 - Drunk.cpp

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#include <string.h>
2+
#include <cstdio>
3+
#include <cstdlib>
4+
#include <cmath>
5+
6+
#include <iostream>
7+
#include <string>
8+
#include <vector>
9+
#include <map>
10+
#include <set>
11+
#include <bitset>
12+
#include <list>
13+
#include <stack>
14+
#include <queue>
15+
#include <algorithm>
16+
#include <numeric>
17+
#include <sstream>
18+
19+
20+
using namespace std;
21+
22+
#define FOR( i, L, U ) for(int i=(int)L ; i<=(int)U ; i++ )
23+
#define FORD( i, U, L ) for(int i=(int)U ; i>=(int)L ; i-- )
24+
#define SQR(x) ((x)*(x))
25+
26+
#define INF INT_MAX
27+
28+
29+
#define READ(filename) freopen(filename, "r", stdin);
30+
#define WRITE(filename) freopen(filename, "w", stdout);
31+
32+
typedef long long ll;
33+
typedef unsigned long long ull;
34+
typedef vector<int> vi;
35+
typedef vector<ll> vll;
36+
typedef vector<double> vd;
37+
typedef vector<char> vc;
38+
typedef vector<string> vs;
39+
typedef vector<vector<int> > vvi;
40+
typedef vector<vector<int> > vvc;
41+
typedef map<int, int> mii;
42+
typedef map<string, int> msi;
43+
typedef map<int, string> mis;
44+
typedef map<string, string> mss;
45+
typedef map<string, char> msc;
46+
47+
#define WHITE 0
48+
#define GRAY 1
49+
#define BLACK 2
50+
#define N 10009
51+
vi g[N];
52+
int color[N];
53+
bool cycle;
54+
void dfs_visit(int u){
55+
int v;
56+
color[u] = GRAY;
57+
FOR(i,0,g[u].size()-1){
58+
v = g[u][i];
59+
if(color[v]==WHITE)dfs_visit(v);
60+
else if(color[v]==GRAY){
61+
cycle = true;
62+
return;
63+
}
64+
65+
}
66+
color[u] = BLACK;
67+
}
68+
void DFS(int n){
69+
memset(color+1,0,sizeof(int)*n);
70+
FOR(i,1,n){
71+
if(cycle)return;
72+
if(color[i]==WHITE)dfs_visit(i);
73+
}
74+
}
75+
int main()
76+
{
77+
//READ("input.txt");
78+
//WRITE("output.txt");
79+
msi h;
80+
81+
int test,m,id,cs=0;
82+
string st,en;
83+
scanf("%d",&test);
84+
while(test--){
85+
scanf("%d",&m);
86+
id = 0;
87+
FOR(i,1,m){
88+
cin>>st >> en;
89+
if(!h[st])h[st] = ++id;
90+
if(!h[en])h[en] = ++id;
91+
g[h[st]].push_back(h[en]);
92+
}
93+
cycle = false;
94+
DFS(id);
95+
printf("Case %d: ",++cs);
96+
if(cycle)printf("No\n");
97+
else printf("Yes\n");
98+
FOR(i,1,id)g[i].clear();
99+
h.clear();
100+
}
101+
return 0;
102+
}
103+
+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#include <string.h>
2+
#include <cstdio>
3+
#include <climits>
4+
#include <cstdlib>
5+
#include <cmath>
6+
#include <iostream>
7+
#include <string>
8+
#include <vector>
9+
#include <map>
10+
#include <set>
11+
#include <bitset>
12+
#include <list>
13+
#include <stack>
14+
#include <queue>
15+
#include <algorithm>
16+
#include <numeric>
17+
#include <sstream>
18+
19+
using namespace std;
20+
int M[201][101];
21+
vector < int > A[201];
22+
int N, test;
23+
24+
int solve(int row, int col){
25+
if(row < 0 || col == (int) A[row].size() || col < 0 ) return 0;
26+
if( M[row][col] !=-1 ) return M[row][col];
27+
28+
if( row < N )
29+
return M[row][col] = max(solve(row-1, col-1), solve(row-1, col) ) + A[row][col];
30+
31+
else
32+
return M[row][col] = max( solve(row-1, col) , solve(row-1, col+1) ) + A[row][col];
33+
}
34+
void dump(){
35+
for( int i = 0; i < 2*N - 1; i++ ){
36+
for(int j = 0; j < A[i].size(); j++ ){
37+
printf("%10d", M[i][j]);
38+
}
39+
puts("");
40+
}
41+
}
42+
int main(){
43+
44+
//freopen("input.txt", "r", stdin);
45+
46+
int x, L, cs;
47+
cs = 1;
48+
scanf("%d", &test);
49+
while(test--){
50+
scanf("%d", &N);
51+
for( int i = 0; i <N; i++ ){
52+
A[i].clear();
53+
for( int j = 0; j <= i; j++ ){
54+
scanf("%d", &x);
55+
A[i].push_back(x);
56+
}
57+
}
58+
L = N - 1;
59+
for( int i = N; i <2*N - 1; i++ ){
60+
A[i].clear();
61+
for( int j = 0; j <L; j++ ){
62+
scanf("%d", &x);
63+
A[i].push_back(x);
64+
}
65+
L--;
66+
}
67+
68+
memset(M, -1, sizeof(M));
69+
printf("Case %d: %d\n", cs++, solve(2*N-2, 0));
70+
71+
}
72+
73+
return 0;
74+
}

lightoj/1006 - Hex-a-bonacci.cpp

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include <stdio.h>
2+
int main() {
3+
int a, b, c, d, e, f,x,i;
4+
int dp[10001];
5+
int n, caseno = 0, cases;
6+
scanf("%d", &cases);
7+
while( cases-- ) {
8+
scanf("%d %d %d %d %d %d %d", &a, &b, &c, &d, &e, &f, &n);
9+
dp[0]=a% 10000007;
10+
dp[1]=b% 10000007;
11+
dp[2]=c% 10000007;
12+
dp[3]=d% 10000007;
13+
dp[4]=e% 10000007;
14+
dp[5]=f% 10000007;
15+
x=dp[0]+dp[1]+dp[2]+dp[3]+dp[4];
16+
for(i=6; i<=n; i++) {
17+
x=x+dp[i-1];
18+
dp[i]=x% 10000007;
19+
x=x-dp[i-6];
20+
}
21+
printf("Case %d: %d\n", ++caseno, dp[n]);
22+
}
23+
return 0;
24+
}

lightoj/1009 - Back to Underworld.cpp

+109
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
#include <string.h>
2+
#include <cstdio>
3+
#include <cstdlib>
4+
#include <cmath>
5+
6+
#include <iostream>
7+
#include <string>
8+
#include <vector>
9+
#include <map>
10+
#include <set>
11+
#include <bitset>
12+
#include <list>
13+
#include <stack>
14+
#include <queue>
15+
#include <algorithm>
16+
#include <numeric>
17+
#include <sstream>
18+
19+
20+
using namespace std;
21+
22+
#define FOR( i, L, U ) for(int i=(int)L ; i<=(int)U ; i++ )
23+
#define FORD( i, U, L ) for(int i=(int)U ; i>=(int)L ; i-- )
24+
#define SQR(x) ((x)*(x))
25+
26+
#define INF INT_MAX
27+
28+
29+
#define READ(filename) freopen(filename, "r", stdin);
30+
#define WRITE(filename) freopen(filename, "w", stdout);
31+
32+
typedef long long ll;
33+
typedef unsigned long long ull;
34+
typedef vector<int> vi;
35+
typedef vector<ll> vll;
36+
typedef vector<double> vd;
37+
typedef vector<char> vc;
38+
typedef vector<string> vs;
39+
typedef vector<vector<int> > vvi;
40+
typedef vector<vector<int> > vvc;
41+
typedef map<int, int> mii;
42+
typedef map<string, int> msi;
43+
typedef map<int, string> mis;
44+
typedef map<string, string> mss;
45+
typedef map<string, char> msc;
46+
47+
#define WHITE 0
48+
#define GRAY 1
49+
#define BLACK 2
50+
#define MAX_NODES 100009
51+
vi g[MAX_NODES];
52+
mii hash;
53+
int lycans, vampires;
54+
int color[MAX_NODES];
55+
void bfs(int src){
56+
queue<int> q;
57+
int u,v,i;
58+
color[src] = GRAY;
59+
q.push(src);
60+
lycans++;
61+
while(!q.empty()){
62+
u = q.front();
63+
q.pop();
64+
for(i=0;i<g[u].size();i++){
65+
v = g[u][i];
66+
if(color[v]==WHITE){
67+
if(color[u]==GRAY){
68+
vampires++;
69+
color[v] = BLACK;
70+
}
71+
else{
72+
lycans++;
73+
color[v] = GRAY;
74+
}
75+
q.push(v);
76+
}
77+
}
78+
}
79+
}
80+
int main()
81+
{
82+
// READ("input.txt");
83+
//WRITE("output.txt");
84+
int test,e,i,st,en,index,cs=1,sum;
85+
scanf("%d", &test);
86+
while(test--){
87+
scanf("%d", &e);
88+
index=0;
89+
hash.clear();
90+
for(i=1;i<=e;i++){
91+
scanf("%d %d", &st,&en);
92+
if(!hash[st]){hash[st]=++index;g[hash[st]].clear();}
93+
if(!hash[en]){hash[en]=++index;g[hash[en]].clear();}
94+
g[hash[st]].push_back(hash[en]);
95+
g[hash[en]].push_back(hash[st]);
96+
}
97+
for(i=1;i<=index;i++)color[i]=WHITE;
98+
sum =0;
99+
for(i=1;i<=index;i++){
100+
if(color[i]!=WHITE)continue;
101+
lycans = vampires = 0;
102+
bfs(i);
103+
sum += max(lycans,vampires);
104+
}
105+
printf("Case %d: %d\n", cs++, sum);
106+
}
107+
return 0;
108+
}
109+
+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using namespace std;
2+
#include "cstring"
3+
#include "cstdio"
4+
#include "iostream"
5+
#include "algorithm"
6+
#include "vector"
7+
#include "string"
8+
#include "cctype"
9+
#include "set"
10+
11+
typedef long long Long;
12+
#define MAXN 16
13+
int dp[MAXN][1 << MAXN];
14+
int n;
15+
int solve(int i, int mask){
16+
if(dp[i][mask] != -1)return dp[i][mask];
17+
int ans = 0;
18+
for(int k = 0; k < n; k++ )
19+
if( (1 << k) & mask )
20+
ans = max(ans, solve(i-1, mask & (~(1 << k))) + dp[i][1 << k] );
21+
return dp[i][mask] = ans;
22+
}
23+
int main() {
24+
//freopen("input.txt", "r", stdin);
25+
int test, cs = 1;
26+
scanf("%d", &test);
27+
while(test--){
28+
scanf("%d", &n);
29+
for(int i = 0; i < n; i++){
30+
memset(dp[i], -1, sizeof(dp[i]));
31+
for(int j = 0; j < n; j++){
32+
scanf("%d", &dp[i][1 << j]);
33+
}
34+
}
35+
printf("Case %d: %d\n", cs++, solve(n-1, (1 << n ) -1 ));
36+
}
37+
38+
return 0;
39+
}

0 commit comments

Comments
 (0)