Advertisement
bool_bool

SPOJ EDIST.cpp

Jul 9th, 2019
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define dist2D(x1,y1,x2,y2) ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
  5. #define dist3D(x1,y1,z1,x2,y2,z2) ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2))
  6. #define EPS 1e-12
  7. #define endl "\n"
  8. #define FastIO ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)
  9. #define FI freopen("in.txt","r",stdin)
  10. #define FO freopen("out.txt","w",stdout)
  11. #define fap(x) cout<<"WTH: "<<x<<endl
  12. #define ff first
  13. #define fof(i,x,y) for(int i=x;i<(int)y;i++)
  14. #define fob(i,x,y) for(int i=x;i>=(int)y;i--)
  15. #define INF 1000000000
  16. #define ld long double
  17. #define ll long long
  18. #define mem(x,y) memset(x,y,sizeof x)
  19. #define mp make_pair
  20. #define msi map<string,int>
  21. #define mii map<int,int>
  22. #define mis map<int,string>
  23. #define MOD 1000000007
  24. #define PI acos(-1.0)
  25. #define PQ priority_queue
  26. #define pb push_back
  27. #define pib pair<int,bool>
  28. #define pii pair<int,int>
  29. #define pll pair<ll,ll>
  30. #define sfi(x) scanf("%d",&x)
  31. #define sfii(x,y) scanf("%d%d",&x,&y)
  32. #define sfiii(x,y,z) scanf("%d%d%d",&x,&y,&z)
  33. #define siz(x) (int)x.size()
  34. #define sortv(v) sort(v.begin(),v.end())
  35. #define ss second
  36. #define ull unsigned long long
  37. #define umsi unordered_map<string,int>
  38. #define umii unordered_map<int,int>
  39. #define umis unordered_map<int,string>
  40. #define vb vector<bool>
  41. #define vi vector<int>
  42. #define vvi vector<vi>
  43. #define vii vector<pii>
  44. #define vvii vector<vii>
  45. #define vll vector<ll>
  46. #define vpll vector<pll>
  47.  
  48. /*
  49. #include <ext/pb_ds/assoc_container.hpp>
  50. #include <ext/pb_ds/tree_policy.hpp>
  51. #include <functional>
  52. using namespace __gnu_pbds;
  53. typedef tree<int,null_type,less<int>,rb_tree_tag,
  54. tree_order_statistics_node_update> ordered_set;
  55. Â
  56. //os.order_of_key(v): returns how many elements strictly less than v
  57. //os.find_by_order(k-1): returns kth smallest element's iterator
  58. */
  59.  
  60. template<class T> class compare{
  61. public:
  62. bool operator()(pair<T,T> &x,pair<T,T> &y){
  63. if(x.first==y.first){
  64. return x.ss>y.ss;
  65. }
  66. return x.ff>y.ff;
  67. }
  68. };
  69.  
  70. //template<class T> ostream& operator<<(ostream &os,const pair<T,T> &a) { os<<a.ff<<" "<<a.ss; }
  71. ll power(ll a,int b) {
  72. ll po = 1;
  73. while (b) {
  74. if (b & 1)
  75. po *= a;
  76. a *= a;
  77. b >>= 1;
  78. }
  79. return po;
  80. }
  81.  
  82.  
  83. int Set(int N,int pos) { return N=N|(1<<pos); }
  84. int reset(int N,int pos){ return N=N&~(1<<pos);}
  85. bool check(int N,int pos){ return (bool) (N&(1<<pos));}
  86.  
  87. ///=======================================template=======================================///
  88.  
  89. int main()
  90. {
  91. //FI;FO;
  92. FastIO;
  93. //clock_t begin=clock(),endd;
  94.  
  95. int t; cin>>t;
  96.  
  97. while(t--){
  98. string a,b; cin>>a>>b;
  99. int m=siz(b),n=siz(a);
  100.  
  101. int dp[m+1][n+1];
  102. mem(dp,0);
  103. for(int i=0;i<=m;i++)
  104. dp[i][0]=i;
  105. for(int i=0;i<=n;i++)
  106. dp[0][i]=i;
  107. for(int i=0;i<m;i++)
  108. for(int j=0;j<n;j++){
  109. if(a[i]==b[j])
  110. dp[i+1][j+1]=dp[i][j];
  111. else{
  112. dp[i+1][j+1]=1+min(dp[i][j],min(dp[i][j+1],dp[i+1][j]));
  113. }
  114. }
  115. cout<<dp[m][n]<<endl;
  116. }
  117.  
  118. //endd=clock();
  119. //cout<<(double)(endd-begin)/CLOCKS_PER_SEC*1000<<endl;
  120. return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement