結果
問題 | No.2640 traO Stamps |
ユーザー |
|
提出日時 | 2024-02-19 22:07:47 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 74 ms / 2,000 ms |
コード長 | 3,714 bytes |
コンパイル時間 | 1,394 ms |
コンパイル使用メモリ | 131,364 KB |
最終ジャッジ日時 | 2025-02-19 17:02:47 |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 33 |
ソースコード
/*** ^v^**/#include <iostream>#include <numeric>#include <set>#include <iomanip>#include <chrono>#include <queue>#include <string>#include <vector>#include <functional>#include <map>#include <bitset>#include <algorithm>#include <array>#include <random>using namespace std;using ll = long long int;using ld = long double;#define iamtefu ios_base::sync_with_stdio(false); cin.tie(0);#define fl(i,a,n) for (ll i{a}; i<n; i++)#define fr(x,s) for(auto x:s)#define rfl(i,a,n) for (ll i{n-1}; i>=a; i--)#define ty int _; for(cin>>_; _--;)#define print(a) for(auto ele:a){cout<<ele<<" ";}cout<<'\n';#define all(x) x.begin(), x.end()template <typename L, typename R>inline bool chmax(L &a, R b){if (a<b){a=b;return 1;}return 0;}template <typename L, typename R>inline bool chmin(L &a, R b){if (a>b){a=b;return 1;}return 0;}template <typename L, typename R>ostream& operator<<(ostream &fout, const pair<L, R> &p){fout<<"{"<<p.first<<","<<p.second<<"}";return fout;}template <typename L, typename R, typename U>ostream& operator<<(ostream &fout, const tuple<L, R, U> &p){auto &[l, r, u] = p;fout<<"{"<<l<<","<<r<<","<<u<<"}";return fout;}template <typename T>ostream& operator<<(ostream &fout, const vector <T> &v){for (auto &x:v){fout<<x<<" ";}fout<<"\n";return fout;}template <typename T>ostream& operator<<(ostream &fout, const set <T> &st){for (auto &x:st){fout<<x<<" ";}fout<<"\n";return fout;}template <typename T>ostream& operator<<(ostream &fout, const multiset <T> &st){for (auto &x:st){fout<<x<<" ";}fout<<"\n";return fout;}template <typename K, typename V>ostream& operator<<(ostream &fout, const map<K, V> &mp){fout<<"[";for (auto &[x,y]:mp){fout<<x<<":"<<y<<" ";}fout<<"]\n";return fout;}ll gcd(ll a, ll b){if (b==0){return a;}return gcd(b, a%b);}mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());ll pw(ll a, ll b, ll m){ll res=1;a%=m;while (b){if (b&1){res=(res*a)%m;}a=(a*a)%m;b/=2;}return res;}void scn(){// not necessarily distinct// right downll n, m, k; cin>>n>>m>>k;k++;vector <ll> a(k);fl(i,0,k){cin>>a[i];}vector <vector <ll>> dis(n+1, vector <ll>(n+1, 1e18));fl(i,0,n+1){dis[i][i]=0;}fl(i,0,m){ll u, v, w; cin>>u>>v>>w;dis[u][v] = dis[v][u] = w;}fl(k,0,n+1){fl(i,0,n+1){fl(j,0,n+1){chmin(dis[i][j], (dis[i][k]+dis[k][j]));}}}vector <ll> arr(k+1);fl(i,1,k){arr[i+1] = dis[a[i]][a[i-1]];}vector <ll> fen(k+1);auto ad=[&](ll i, ll x)->void{while (i<=k){fen[i]+=x;i+=(i&(-i));}};auto su=[&](ll i)->ll{ll ret = 0;while (i>0){ret+=fen[i];i-=(i&(-i));}return ret;};fl(i,1,k+1){ad(i, arr[i]);}ll q; cin>>q;fl(i,0,q){// cout<<arr;// fl(i,0,k+1){// cout<<su(i)<<' ';// }// cout<<'\n';ll t, x, y; cin>>t>>x>>y;if (t==1){x++;if (x>1){ad(x, -arr[x]);}if (x+1<=k){ad(x+1, -arr[x+1]);}if (x>1){arr[x] = dis[a[x-2]][y];}if (x+1<=k){arr[x+1] = dis[y][a[x]];}if (x>1){ad(x, arr[x]);}if (x+1<=k){ad(x+1, arr[x+1]);}a[x-1]=y;} else {x++;y++;cout<<su(y)-su(x)<<'\n';}}}int main(){iamtefu;#if defined(airths)auto t1=chrono::high_resolution_clock::now();freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);#endif// ty{scn();}#if defined(airths)auto t2=chrono::high_resolution_clock::now();ld ti=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();ti*=1e-6;cerr<<"Time: "<<setprecision(12)<<ti;cerr<<"ms\n";#endifreturn 0;}