初日のパンチCodeforcesラウンド#569(本部2)

紫の名前の早いことができるようにするために、私はここに毎日録画タイトルレコードブラシを開きます。
毎日のテーマに加えて、日が実行する仮想競争を駆動し、CFを設定します。水問題

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<climits>
#include<stack>
#include<vector>
#include<queue>
#include<set>
#include<bitset>
#include<map>
//#include<regex>
#include<cstdio>
#define up(i,a,b)  for(int i=a;i<b;i++)
#define dw(i,a,b)  for(int i=a;i>b;i--)
#define upd(i,a,b) for(int i=a;i<=b;i++)
#define dwd(i,a,b) for(int i=a;i>=b;i--)
//#define local
typedef long long ll;
typedef unsigned long long ull;
const double esp = 1e-6;
const double pi = acos(-1.0);
const int INF = 0x3f3f3f3f;
const int inf = 1e9;
using namespace std;
ll read()
{
    char ch = getchar(); ll x = 0, f = 1;
    while (ch<'0' || ch>'9') { if (ch == '-')f = -1; ch = getchar(); }
    while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
    return x * f;
}
typedef pair<int, int> pir;
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define lrt root<<1
#define rrt root<<1|1
int n;
int main()
{
    n = read();
    int sum = 0; int len = 2 * n - 1;
    upd(i, 1, n - 2)sum += i;
    cout << (len*len-((n-1)*(n-1) - sum)*4) << endl;
    return 0;
}

Bは、
この質問は7回ワ。私は少しを導き出すために少し後で、気持ちで始めました。
それはああすべきではありません。

問題の意味:特定の値の順序で行うことができる必要な一連の動作与えられたIは、 -a = I -1、Qの最大製品。
解決法:
図から分かるように、絶対値でだけ見て、その後、我々は唯一の肯定があることを見ることができますが、正のリターン負となります。我々は気にしないことを、最初にすべてのシーケンスの言うことはマイナスになります。
シーケンス長が偶数であれば積が正である、そして、それはまだ上です。
系列長が奇数の場合、製品が負で、上はまだありません。
その後、我々は正の数に負を変更する必要があります。
それは数があると仮定しました。(A <0)の
数bの存在を前提とし、| | <| B |
コストとなるように1である。SUMは、
Bの料金となる1-B。
SUM 2
同一の部分を除去し、(1-A)となるB(1-B)我々多数ので絶対値の変化。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<climits>
#include<stack>
#include<vector>
#include<queue>
#include<set>
#include<bitset>
#include<map>
//#include<regex>
#include<cstdio>
#define up(i,a,b)  for(int i=a;i<b;i++)
#define dw(i,a,b)  for(int i=a;i>b;i--)
#define upd(i,a,b) for(int i=a;i<=b;i++)
#define dwd(i,a,b) for(int i=a;i>=b;i--)
//#define local
typedef long long ll;
typedef unsigned long long ull;
const double esp = 1e-6;
const double pi = acos(-1.0);
const int INF = 0x3f3f3f3f;
const int inf = 1e9;
using namespace std;
ll read()
{
    char ch = getchar(); ll x = 0, f = 1;
    while (ch<'0' || ch>'9') { if (ch == '-')f = -1; ch = getchar(); }
    while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
    return x * f;
}
typedef pair<int, int> pir;
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define lrt root<<1
#define rrt root<<1|1
const int N = 1e5 + 10;
struct node {
    int val, pos;
    bool operator < (const node &a)const {
        return val < a.val;
    }
}b[N];
int a[N];
int n;
int ans[N];
int main()
{
    n = read();
    upd(i, 1, n)a[i] = read(),b[i].val=a[i],b[i].pos=i;
    upd(i, 1, n)
        if (b[i].val >= 0)b[i].val = -b[i].val - 1;
    sort(b+1, b + n+1);
    if (n %2)
    {
        b[1].val = -b[1].val - 1;
    }
    upd(i, 1, n)ans[b[i].pos] = b[i].val;
    upd(i, 1, n)cout << ans[i] << " ";
}

C:両端キューを与えるために、小さな尾に、最初の大規模な番号の最初の2、A、Bを、取り出します。
m番目の操作においてQ AおよびB。
第二外にタイトルを読んでください。私はBよりもはるかに簡単に感じます。
明らかに、このトピックの古いルーチン大メートルので、まず、法律を見つけます。
チームは、n-1デジタル意志無限ループが続く、最大最初に移動したときに案の定、サンプルの対象と見が見つかりました。
したがって、我々は、最高にまたは前に最初に別の議論の後に移動し、チームで何mが決定します。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<climits>
#include<stack>
#include<vector>
#include<queue>
#include<set>
#include<bitset>
#include<map>
//#include<regex>
#include<cstdio>
#define up(i,a,b)  for(int i=a;i<b;i++)
#define dw(i,a,b)  for(int i=a;i>b;i--)
#define upd(i,a,b) for(int i=a;i<=b;i++)
#define dwd(i,a,b) for(int i=a;i>=b;i--)
//#define local
typedef long long ll;
typedef unsigned long long ull;
const double esp = 1e-6;
const double pi = acos(-1.0);
const int INF = 0x3f3f3f3f;
const int inf = 1e9;
using namespace std;
ll read()
{
    char ch = getchar(); ll x = 0, f = 1;
    while (ch<'0' || ch>'9') { if (ch == '-')f = -1; ch = getchar(); }
    while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
    return x * f;
}
typedef pair<int, int> pir;
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define lrt root<<1
#define rrt root<<1|1
int n, q;
const int N = 1e5 + 10;
int a[N];
deque<int>dq;
int a2[N];
pair<int, int>p[N];
int main()
{
    n = read(), q = read();
    int maxn = -1, pos = -1;
    up(i, 0, n)
    {
        a[i] = read();
        if (maxn < a[i])maxn = a[i], pos = i;
        dq.push_back(a[i]);
    }
    int num = 1;
    int cnt = 0;
    while (1)
    {
        int a = dq.front();
        if (a == maxn)break;
        dq.pop_front();
        int b = dq.front();
        dq.pop_front();
        p[cnt++] = make_pair(a, b);
        if (a < b)swap(a, b);
        dq.push_front(a);
        dq.push_back(b);
        num++;
        if (a == maxn)break;
    }
   ll m = 0;
    up(i, 0, n)
        a2[i] = dq.front(), dq.pop_front();
    //cout << num << endl;
    while (q--)
    {
        m = read();
        if (m < num)
        {
            printf("%d %d", p[m-1].first,p[m-1].second);
        }
        else {
            ll temp = m - num;
            int mod = temp % (n - 1);
            printf("%d %d", a2[0], a2[mod + 1]);
        }
        cout << endl;
    }
    return 0;
    
}

D:法律を見つけるには、
格子であることができ、それぞれが自由に歩くことができるが、(方向を含む)2点間の経路、すなわち、ラインは、全く同じではないことを確認するために与えます。
1はこれをしない見出される対応する半分を下る、上がって、私はそれは対称的な関係を見つけるためのものと思ったタイトルを見て開始します。
慎重に最初の旅行で対称回で、上下に見つけると、発見について考えます。
即ち、1,1から繰り返しジャンプする横- N、M - 1,2 - N、M-1 --......-- 1、M - N、1--2,1 --.....

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<climits>
#include<stack>
#include<vector>
#include<queue>
#include<set>
#include<bitset>
#include<map>
//#include<regex>
#include<cstdio>
#define up(i,a,b)  for(int i=a;i<b;i++)
#define dw(i,a,b)  for(int i=a;i>b;i--)
#define upd(i,a,b) for(int i=a;i<=b;i++)
#define dwd(i,a,b) for(int i=a;i>=b;i--)
//#define local
typedef long long ll;
typedef unsigned long long ull;
const double esp = 1e-6;
const double pi = acos(-1.0);
const int INF = 0x3f3f3f3f;
const int inf = 1e9;
using namespace std;
ll read()
{
    char ch = getchar(); ll x = 0, f = 1;
    while (ch<'0' || ch>'9') { if (ch == '-')f = -1; ch = getchar(); }
    while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
    return x * f;
}
typedef pair<int, int> pir;
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define lrt root<<1
#define rrt root<<1|1
int n, m;
vector<int>vec;
int main()
{
    n = read(), m = read();
    if (n & 1)
    {
        upd(i, 1, n / 2)
        {
            upd(j, 1, m)
            {
                printf("%d %d\n%d %d\n", i, j, n - i+1, m - j+1);
            }
        }
        if(m%2)
        {
            upd(j, 1, m / 2)
            {
                printf("%d %d\n%d %d\n", n / 2 + 1, j, n / 2 + 1, m - j + 1);
            }
            printf("%d %d\n", n / 2 + 1, m / 2 + 1);
        }
        else {
            upd(j, 1, m / 2)
            {
                printf("%d %d\n%d %d\n", n / 2 + 1, j, n / 2 + 1, m - j + 1);
            }
        }
    }
    else {
        upd(i, 1, n / 2)
        {
            upd(j, 1, m)
            {
                printf("%d %d\n%d %d\n", i, j, n - i + 1, m - j + 1);
            }
        }
    }
    return 0;
}

おすすめ

転載: www.cnblogs.com/LORDXX/p/11979735.html
おすすめ