luyencode / comments

Server lưu trữ bình luận trên Luyện Code
https://luyencode.net
6 stars 3 forks source link

https://oj.luyencode.net/problem/REVERSE #613

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

Chi tiết bài tập - Luyện Code Online

https://luyencode.net/problem/REVERSE

khiempham06 commented 2 years ago
#include 
int main() {
  printf("Lap Trinh Khong Kho!");
  return 0;
}
zerorei00 commented 2 years ago

xin các cao nhân hướng giải quyết để không bị time limit ạ ;-; em xin cảm ơn.

AnnNaa0511 commented 2 years ago

Cách làm AC của mình ạ:>

Xem code AC

1 chuỗi gồm 8 kí tự "abcdefgh", kí tự 'a' đc đảo tương ứng với kí tự 'h', phép đảo từ 1 tới 8 sẽ tác động đến 'a' và 'h', các phép đảo từ 2 đến 7, 3 đến 6, 4 đến 5 sẽ không tác động đến 2 kí tự 'a' và 'h'. Vậy nên số lần 'a' và 'h' đảo cho nhau bằng số phép đảo từ 1 đến 8. Nếu số lần đảo là số chẵn thì vị trí 2 kí tự 'a' 'h' không thay đổi. Tương tự với cặp kí tự 'b' và 'g' sẽ bị tác động với phép đảo từ 1 đến 8 và từ 2 đến 7. Cặp 'c' và 'f' bị tác động bởi phép đảo từ 1 đến 8, từ 2 đến 7, từ 3 đến 6. ```cpp #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0);cout.tie(0); string a; cin>>a; long n,x,A=a.size(); cin>>n; mapM; while(n--){ cin>>x; M[x-1]++; } long prefix_kq[A]; for(long i=0;i<=(A-1)/2;i++){ if(i==0) prefix_kq[i]=M[i]; else prefix_kq[i]=prefix_kq[i-1]+M[i]; if(prefix_kq[i]%2!=0) swap(a[i],a[A-1-i]); } cout<

102210292githug commented 1 year ago

FenwickTree nha anh em.

Xem code AC

#include using namespace std; #define MOD 1000000007 #define base 31 #define rep(i, n) for(int i = 1; i <= (n); i++) #define fo(i, n) for(int i = 0; i < (n); i++) #define per(i, n) for(int i = (n); i >= 1; i--) #define rfo(i, n) for(int i = (n-1); i >= 0; i--) #define pb push_back #define ff first #define ss second #define vt vector #define all(x) x.begin(),x.end() #define make_unique(x) sort(all((x))); (x).resize(unique(all((x))) - (x).begin()) typedef unsigned long long ull; typedef long long ll; typedef pair pii; typedef pair pli; typedef pair pll; typedef map mii; typedef vt vti; const double Pi = acos(- 1.0); const int N = 1e6+6; const int inf = INT_MAX; templateostream& operator<<(std::ostream& os, const std::vector& vec) {for(T i : vec) os << i << ' '; return os;} //void solve(){ // ull n; cin >> n; // if (n < 5){ // cout << 0; // }else{ // n -= 6; // ull d = n/6; // d %= MOD; // d = (((d*(d+1)/2)*6)%MOD + (n%6)*(d+1) + (n%6==0))% MOD; // cout << 1ull*d; // } //} template class fenwick { public: vector fenw; int n; fenwick(int _n) : n(_n) { fenw.resize(n); } void modify(int x, T v) { while (x < n) { fenw[x] += v; x |= (x + 1); } } T get(int x) { T v{}; while (x >= 0) { v += fenw[x]; x = (x & (x + 1)) - 1; } return v; } }; void solve(){ string s; cin >> s; int n = s.size(); int m; cin >> m; fenwick fw(n); while(m--){ int l; cin >> l; int r = n-l+1; --l, fw.modify(l, 1); fw.modify(r, 1); } for(int i = 0; i < n; i++){ int x = fw.get(i); if(x & 1) cout << s[n-i-1]; else cout << s[i]; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int t = 1;// cin >> t; while(t--) { solve(); } return 0; } /* Test: */