G. cocktail with snake
题意:给区间宽高:n,m,蛇形走位,问k步之后和原点的曼哈顿距离是多少
分析
int t = k / n
就是走k步后当行数
如果 t 是奇数,说明在往左走
如果 t 是偶数,说明在往右走
k % n 就是当前层往左往右走的步数
讨论一下,算出结果就行了
//-------------------------代码---------------------------- #define int ll const int N = 1e5+10; int n,m,k; void solve() { cin>>n>>m>>k; // n-1步 // 1步 // n-1步 // k / n就是层数 // k % n就是位置 if((k / n) % 2 == 0) { cout<< k / n + k % n <<endl; } else { // k=n -- n-1 // k=n+1 -- n-2 // k=2n-1 -- 0 int t = k % n; int m = n - 1 - t; cout<< k / n + m<<endl; } } void main_init() {} signed main(){ AC();clapping();TLE; cout<<fixed<<setprecision(12); main_init(); // while(cin>>n,n) // while(cin>>n>>m,n,m) int t;cin>>t;while(t -- ) solve(); // {solve(); } return 0; } /*样例区 */ //------------------------------------------------------------
K. chino with c language
分析
题意看懂就会了,就是把前面的重复放到某个位置,放几个。另一个是把之前的赋值到某些位置
//#define int ll const int N = 1e5+10; int n,m; char a[N],b[N],c[N]; void solve() { // cin>>n>>m; cin>>n; cin>>a+1; int p1,p2,l;cin>>p1>>p2>>l; int cnt = 0; fo(i,1,n) { b[i] = a[i]; c[i] = a[i]; } int tmp = p1; fo(i,p2,n) { a[i] = a[p1++]; cnt ++ ; if(cnt >= l) break; } fo(i,1,n) { cout<<a[i]; } cout<<endl; cnt = 0; fo(i,p2,n) { c[i] = b[tmp++]; cnt ++ ; if(cnt >= l) break; } fo(i,1,n) cout<<c[i];cout<<endl; }
标签:Provincial,Xinjiang,p1,cout,Contest,int,cin,solve,fo From: https://www.cnblogs.com/er007/p/16641121.html