From fe92a5ff455826e69f4c68ccd430daa67f17260a Mon Sep 17 00:00:00 2001 From: MachangDoniel Date: Tue, 28 Jan 2025 23:50:46 +0600 Subject: [PATCH] added solutions by MachangDoniel --- 1. Flip Columns/7.cpp | 72 ++++++++++ 10. Sum of kth level Nodes/2.cpp | 47 +++++++ 11. Detect Cycle in Directed Graph/1.cpp | 167 +++++++++++++++++++++++ 2. Kim and Refrigerators/5.cpp | 58 ++++++++ 3. Travelling SalesPerson/4.cpp | 86 ++++++++++++ 4. Endoscope/5.cpp | 164 ++++++++++++++++++++++ 5. Wormhole/1.cpp | 68 +++++++++ 6. Burst Balloons/3.cpp | 62 +++++++++ 7. FisherMen/3.cpp | 79 +++++++++++ 8. Aeroplane Bombing/3.cpp | 57 ++++++++ 9. Rock Climbing/4.cpp | 88 ++++++++++++ 11 files changed, 948 insertions(+) create mode 100644 1. Flip Columns/7.cpp create mode 100644 10. Sum of kth level Nodes/2.cpp create mode 100644 11. Detect Cycle in Directed Graph/1.cpp create mode 100644 2. Kim and Refrigerators/5.cpp create mode 100644 3. Travelling SalesPerson/4.cpp create mode 100644 4. Endoscope/5.cpp create mode 100644 5. Wormhole/1.cpp create mode 100644 6. Burst Balloons/3.cpp create mode 100644 7. FisherMen/3.cpp create mode 100644 8. Aeroplane Bombing/3.cpp create mode 100644 9. Rock Climbing/4.cpp diff --git a/1. Flip Columns/7.cpp b/1. Flip Columns/7.cpp new file mode 100644 index 0000000..297c15a --- /dev/null +++ b/1. Flip Columns/7.cpp @@ -0,0 +1,72 @@ +// Solution with Bitmasking +#include +#include +#include +#include +#include +using namespace std; + +int n,m,k,ans; +vector>mat; + +void print(){ + cout<<"mat: "<>n>>m>>k; + mat.resize(n,vector(m)); + for(int i=0;i>mat[i][j]; + } + } + ans=0; + for(int j=0;j +#include +#include +#include +#include +using namespace std; + + +int sToi(string node){ + int value=0; + for(int i=node.size()-1,mul=1;i>=0;i--,mul*=10){ + value+=(node[i]-'0')*mul; + } + return value; +} + + +int main() { + /* Enter your code here. Read input from STDIN. Print output to STDOUT */ + int k; + string s; + vector>v(10); + cin>>k>>s; + int count=-1; + string node; + for(int i=0;i +#include +#include +#include +#include +#include // extra added +using namespace std; + +#define pb push_back +#define pp pop_back + +// // solution 1 +// int n,m,adj[11][11],stack[11],ans[11],idx,minCycleSum=200005; +// int vis[11]; + +// void detectCycle1(int node,int index){ +// if(vis[node]){ +// int sum=node; +// for(int i=index-2;i>=0 && stack[i]!=node;i--){ +// sum+=stack[i]; +// } +// if(sum=0 && stack[i]!=node;i--){ +// ans[idx++]=stack[i]; +// } +// } +// return; +// } +// else{ +// vis[node]=1; +// for(int i=1;i<=n;i++){ +// if(adj[node][i]==1){ +// stack[index]=i; +// detectCycle1(i,index+1); +// } +// } +// vis[node]=0; +// } +// } + +// void solve1(){ +// cin>>n>>m; +// memset(&adj[0][0],0,(n+1)*(n+1)*sizeof(int)); +// memset(vis,0,(n+1)*sizeof(int)); +// for(int i=0;i>u>>v; +// adj[u][v]=1; +// } +// for(int i=1;i<=n;i++){ +// stack[0]=i; +// detectCycle1(i,1); +// } +// sort(ans,ans+idx); +// for(int i=0;i>adj; +// int n,m,idx,minCycleSum=200005; +// vectorvis,stack,ans; + +// void detectCycle2(int node,int index){ +// if(vis[node]){ +// int sum=node; +// for(int i=index-2;i>=0 && stack[i]!=node;i--){ +// sum+=stack[i]; +// } +// if(sum=0 && stack[i]!=node;i--){ +// ans[idx++]=stack[i]; +// } +// } +// return; +// } +// else{ +// vis[node]=1; +// for(int num:adj[node]){ +// stack[index]=num; +// detectCycle2(num,index+1); +// } +// vis[node]=0; +// } +// } + +// void solve2(){ +// cin>>n>>m; +// adj.resize(n+1); +// vis.resize(n+1,0); +// stack.resize(n+1); +// ans.resize(n+1); +// for(int i=0;i>u>>v; +// adj[u].pb(v); +// } +// for(int i=1;i<=n;i++){ +// stack[0]=i; +// detectCycle2(i,1); +// } +// sort(ans.begin(),ans.begin()+idx); +// for(int i=0;i>adj; +vectorans; + +void findWay(int idx,int mask){ + // cout<temp; + for(int i=0;i>n>>m; + adj.resize(n); + for(int i=0;i>u>>v; + u--,v--; + adj[u].push_back(v); + } + min_sum=1e9; + for(int i=0;i +#include +#include +#include +#include +using namespace std; + +int n; +int startX,startY,endX,endY; +int ans; +vector>v; +int allone; + +int dist(int x1,int y1,int x2,int y2){ + return abs(x1-x2)+abs(y1-y2); +} + +void find(int sum,int mask,int last){ + if(mask==allone){ + int d=dist(v[last].first,v[last].second,endX,endY); + ans=min(ans,sum+d); + return; + } + for(int i=0;i>n; + cin>>startX>>startY>>endX>>endY; + v.clear(); + for(int i=0;i>x>>y; + v.push_back({x,y}); + } + ans=1e9; + allone=(1< +#include +#include +#include +#include +using namespace std; + +#define INT_MAX 2147483647 + +int n; +vector>adj; +int visited_all; + +// O(n!) solution +int tsp(int mask,int pos){ + if(mask==visited_all){ + return adj[pos][0]; + } + int ans=INT_MAX; + for(int city=0;city>n; + adj.resize(n); + for(int i=0;i>adj[i][j]; + } + } + visited_all=(1<>dp; +int tsp2(int mask,int pos){ + if(mask==visited_all){ + return adj[pos][0]; + } + if(dp[mask][pos]!=-1){ + return dp[mask][pos]; + } + int ans=INT_MAX; + for(int city=0;city>n; + adj.resize(n); + for(int i=0;i>adj[i][j]; + } + } + visited_all=(1<>T; + for(int t=1;t<=T;t++){ + solve2(t,T); + } + return 0; +} diff --git a/4. Endoscope/5.cpp b/4. Endoscope/5.cpp new file mode 100644 index 0000000..c6af480 --- /dev/null +++ b/4. Endoscope/5.cpp @@ -0,0 +1,164 @@ +// Solution with DFS +#include +#include +#include +#include +#include +using namespace std; + +int n,m,x,y,l; +vector>arr; +vector>vis; + +bool valid(int x,int y){ + return 0<=x && x>n>>m>>x>>y>>l; + vis.clear(); + arr.resize(n,vector(m)); + vis.resize(n,vector(m,false)); + for(int i=0;i>arr[i][j]; + } + } + dfs(x,y,l); + // cout<<"arr"<>t; + while(t--){ + solve(); + } + return 0; +} diff --git a/5. Wormhole/1.cpp b/5. Wormhole/1.cpp new file mode 100644 index 0000000..7140820 --- /dev/null +++ b/5. Wormhole/1.cpp @@ -0,0 +1,68 @@ +// Solution with Bitmasking +#include +#include +#include +#include +#include +#include +using namespace std; + +#define it(idx) get(it) + +int n,startX,startY,endX,endY; +vector,pair>,int>>v; + +int ans,allone; + +int dist(int x1,int y1,int x2,int y2){ + return abs(x1-x2)+abs(y1-y2); +} + +void getDist(int sourceX,int sourceY,int mask,int sum){ + int d=dist(sourceX,sourceY,endX,endY); + ans=min(ans,sum+d); + if(mask==allone) return; + for(int i=0;i>n>>startX>>startY>>endX>>endY; + for(int i=0;i>x1>>y1>>x2>>y2>>cost; + v.push_back({{{x1,y1},{x2,y2}},cost}); + } + int mask=0,sum=0; + ans=1e9,allone=(1<>T; + for(int t=1;t<=T;t++){ + solve(); + } + return 0; +} \ No newline at end of file diff --git a/6. Burst Balloons/3.cpp b/6. Burst Balloons/3.cpp new file mode 100644 index 0000000..e33db3a --- /dev/null +++ b/6. Burst Balloons/3.cpp @@ -0,0 +1,62 @@ +// Solution with Bitmasking +#include +#include +#include +#include +#include +using namespace std; + +int n; +vectorv; +int getScore(int idx,int mask){ + int prev=0,next=0; + for(int i=idx-1;i>=0;i--){ + if((mask & (1<>n; + v.resize(n); + for(int i=0;i>v[i]; + } + allone=(1< +#include +#include +#include +#include +using namespace std; + +int n; +vectorgate(3); +vectorpeople(3); +int allone,ans; + +bool valid(int index){ + return 0<=index && index0){ + remains--; + peopleMask|=(1<0){ + // cout<0){ + if((peopleMask & (1<0){ + if((peopleMask & (1<>n; + for(int i=0;i<3;i++) cin>>gate[i],gate[i]--; + for(int i=0;i<3;i++) cin>>people[i]; + allone=(1<<3)-1,ans=1e9; + for(int i=0;i<3;i++){ + distributeSeats(i,(1< +#include +#include +#include +#include +using namespace std; + +int n,ans; +vector>v; + +bool valid(int position){ + return 0<=position && position<5; +} + +void game(int index,int position,int sum,int life){ + // cout<>n; + v.resize(n); + for(int i=n-1;i>=0;i--){ + v[i].resize(5); + for(int j=0;j<5;j++){ + cin>>v[i][j]; + } + } + // position,sum,blasted,life + ans=0; + game(0,2,0,5); + game(0,1,0,5); + game(0,3,0,5); + cout<>T; + for(int t=1;t<=T;t++){ + cout<<"#"< +#include +#include +#include +#include +using namespace std; + +#define inf 1e9 + + +int n,m; +vector>mat,dis; + +bool valid(int x,int y){ + return 0<=x && xmax_jump){ + dfs(x,y+1,max_jump); + } + if(left(x,y) && dis[x][y-1]>max_jump){ + dfs(x,y-1,max_jump); + } + for(int i=0;imax(jump,max_jump)){ + dfs(i,y,max(max_jump,jump)); + } + } +} + + +int main() { + /* Enter your code here. Read input from STDIN. Print output to STDOUT */ + cin>>n>>m; + mat.resize(n,vector(m,inf)); + dis=mat; + for(int i=n-1;i>=0;i--){ + for(int j=0;j>mat[i][j]; + } + } + ans=inf; + // for(int i=n-1;i>=0;i--){ + // for(int j=0;j=0;i--){ + // for(int j=0;j