首页 > 其他分享 >练习记录-cf-div2-865(A-C)

练习记录-cf-div2-865(A-C)

时间:2023-04-10 09:36:31浏览次数:48  
标签:const int ll 865 cf long return div2 mod

反转就是写的非常烂 Awa10 其他还行吧 丢人

A. Ian Visits Mary

如果这两个数的gcd是1 可以直接过去 如果是0 那就绕一个1 过去 变成三角形 不然就用 (1,b-1) 到(a,1) 这样就是两次的1 不会遇到

#include<bits/stdc++.h>
#define close     std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
const ll MAXN = 3e5+7;
const ll mod =1e9+7;
const ll inf =0x3f3f3f3f;
const ll INF =0x3f3f3f3f3f3f3f3f;

int lowbit(int x){ return x&-x; }
int gcd(int x,int y){int k=0; if(x<y){k=x;x=y;y=k;}while(x%y!=0){k=x%y;x=y;y=k;}return y;}
ll _power(ll a,int b){ll ans=1,res=a;while(b){if(b&1) ans=ans*res%mod;res=res*res%mod;b>>=1;}return ans%mod;}
void solve(){
    int n,m;    cin>>n>>m;
    if(n==0){
        cout<<"2\n";
        cout<<1<<" "<<m+1<<"\n";
        cout<<0<<" "<<m<<"\n";
    }
    else if(m==0){
        cout<<"2\n";
        cout<<n+1<<" "<<1<<"\n";
        cout<<n<<" "<<0<<"\n";
    }
    else{
        int k=gcd(n,m);
        if(k==1){
            cout<<1<<"\n";
            cout<<n<<" "<<m<<"\n";
        }
        else{
            cout<<2<<"\n";
            if(n>m){
                int p=1;
                cout<<n-1<<" "<<1<<"\n";
                cout<<n<<" "<<m<<"\n";
            }
            else{
                
                cout<<1<<" "<<m-1<<"\n";
                cout<<n<<" "<<m<<"\n";
            }
        }
    }
    
}
int main(){
    int t;cin>>t;
    while(t--) 
    solve();
}
View Code

B. Grid Reconstruction

跟着题目给的规律写的 其实因为A拖了一个小时多了 就无所谓了 随便交已发就过了 应该就是交替 还没想到证明 交叉位取的都是正或负交叉 但摆放顺序的影响就不得而知了

#include<bits/stdc++.h>
#define close     std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
const ll MAXN = 3e5+7;
const ll mod =1e9+7;
const ll inf =0x3f3f3f3f;
const ll INF =0x3f3f3f3f3f3f3f3f;
int a[MAXN],b[MAXN];
int lowbit(int x){ return x&-x; }
int gcd(int x,int y){int k=0; if(x<y){k=x;x=y;y=k;}while(x%y!=0){k=x%y;x=y;y=k;}return y;}
ll _power(ll a,int b){ll ans=1,res=a;while(b){if(b&1) ans=ans*res%mod;res=res*res%mod;b>>=1;}return ans%mod;}
void solve(){
    int n;cin>>n;
    deque<int> mins;
    deque<int> maxs;
    int flag=1;
    for(int i=1;i<=n-1;i+=2){
        if(flag==1){
            mins.push_front(i);
            flag*=-1;
        }
        else{
            mins.push_back(i);
            flag*=-1;
        }
    }
    for(int i=n*2-1;i>n;i-=2){
        maxs.push_back(i); 
    }
    for(int i=1;i<=n;i++){
        if(i%2==1){
            a[i]=maxs.front();
            b[i]=mins.front()+1;
        } 
        else{
            a[i]=mins.front();
            mins.pop_front();
            b[i]=maxs.front()-1;
            maxs.pop_front();
            if(i==n) b[i]=n*2; 
        }
    }
    for(int i=1;i<=n;i++) cout<<a[i]<<" ";
    cout<<"\n";
    for(int i=1;i<=n;i++) cout<<b[i]<<' ';
    cout<<"\n";
}
int main(){
    int t;cin>>t;
    while(t--)
    solve();
}
View Code

C. Ian and Array Sorting

首先 如果给的数是奇数个 那通过很多次变换 肯定可以把后面偶数个的数字变成一样 比如 4 3 2  能变成 3 2 2 后面的偶数个一定能通过+ +比前面大 变成非递减 因此一定正确

如果给的数字是偶数个 除去第一个数 后面的数是奇数个 那么后面奇数个一定能变成递增数列  就把所有的n-2个数都变成最后一个数 递增的也要变 比如 5 2 -3 -1 4 5 因为这样就是这个2能最大变动的范围

然后再比较第一个和第二个数字

 

#include<bits/stdc++.h>
#define close     std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
const ll MAXN = 3e5+7;
const ll mod =1e9+7;
const ll inf =0x3f3f3f3f;
const ll INF =0x3f3f3f3f3f3f3f3f;
#define int long long
    int a[MAXN];
int lowbit(int x){ return x&-x; }
int gcd(int x,int y){int k=0; if(x<y){k=x;x=y;y=k;}while(x%y!=0){k=x%y;x=y;y=k;}return y;}
ll _power(ll a,int b){ll ans=1,res=a;while(b){if(b&1) ans=ans*res%mod;res=res*res%mod;b>>=1;}return ans%mod;}
void solve(){
    int n;cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    if(n%2==1) cout<<"YES\n";
    else{
        if(n==2){
            if(a[1]>a[2]) cout<<"NO\n";
            else cout<<"YES\n";
            return;
        }
        int last=a[n];
        for(int i=n;i>=3;i--){
            if(a[i]==last);
            else{
                int k=a[i]-last;
                a[i-1]-=k;
            }
        } 
        if(a[2]<a[1]) cout<<"NO\n";
        else cout<<"YES\n";
    }
}
signed main(){
    close; 
    int t;cin>>t;
    while(t--)
    solve();
}
View Code

D的话一时半会儿写不来 哈哈 2000的题 

标签:const,int,ll,865,cf,long,return,div2,mod
From: https://www.cnblogs.com/xishuiw/p/17301749.html

相关文章

  • CF486D 题解
    题目传送门题目分析不算很难的树形\(\text{dp}\)。令\(dp_i\)表示以\(i\)为根的子树中联通子图的个数。在更新的时候,考虑儿子的联通子图和自己的,则有:\[dp_u=dp_u\times(dp_v+1)\]选根的时候将\(a\)最大的作为根节点。还要注意另外一点,就是当\(a_{fa}=a_{v}\)......
  • CF1599A. Weights
    题意给出n个物品,第i个重量a[i](互不相同)每次任意选一个物品放到秤的左右两边,使得放完之后左>右或左<右给出a[i]和大小关系s[i],构造方案题解必定有解把a排序,假设当前选了LRLRLR,发现在最后加L可以瞬间反转,在最前加R可以保持不变即,当前选了一段连续的a[i],放的顺序为...LRL......
  • FastCFS:再谈 选主 与 过半写:续:2节点+vote节点 群集
    偶数的 2节点+vote节点群集健壮程度如何呢?先说结论:可以保证足够健壮。 虽然vote节点仅参与选主,不参与数据复制过程的过半写,but,对于FastCFS群集来说,先要完成“选主”才能正常进行数据复制层面的”过半写“!如果没有“选主”,根本就不会有后续“过半写”的问题。哈哈。 所......
  • 练习记录-cf-div2-856(A-C)
    vp的写出4道C感觉目前不是能力范围以后有机会留下来打比赛的话再说A-PrefixandSuffixArray给出字符串的前缀和后缀问是不是回文 我采用枚举长度为n-1和1的拼凑但是这并不奏效一直wa3后来改用拼两个n/2的就过了如果有大佬看到了希望能解答一下qwq#include<b......
  • 练习记录-cf-div2-864(A-D)
    状态不怎么好场上就写出3道还磨磨蹭蹭推错结论qwq 警钟长鸣A.LiHuaandMaze一开始以为要切割发现就把其中一个包起来就行了计算包某个块需要的最小块数#include<bits/stdc++.h>#defineclosestd::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)usingn......
  • FastCFS:再谈 选主 与 过半写:续:2节点群集 默认配置下,十分不可靠,几乎100%会发生脑裂问题
     如题:仅能由于测试。千万不要用于生产环境!“选主” 通常能够完成,无法是否有vote参与;问题在于:“过半写”的any或auto模式(即隐含的smart模式)在成功“选主“后,会运行在单节点server的群集模式下,此时,根本就无法且没有完成正常意义上的数据层的主从同步,即必然发生脑裂!数据就不一......
  • 【cf864】赛后结
    属实是失踪人口了,想了一下还是把题解打到这儿。conteset地址:https://codeforces.com/contest/1797 A.题目大意:n*m的方格上给两个点,询问最少增加的障碍格子使得这两个点不连通。解题思路:水题,但是手速有点慢。直接问靠不靠墙,靠几面墙,不靠墙答案4,靠一面答案3,靠两面答案2,取两个点......
  • 【题解】CF472G Design Tutorial: Increase the Constraints
    《正解分块+FFT跑1min,__builtin_popcount暴力跑10s》《没人写正解,CF也不卡》思路正解:分块+FFT乱搞:__builtin_popcount首先我们知道哈明距离可以用一种\(O(|字符集||S|)\)的算法求。具体考虑枚举字符集中的每一个字符,将两个串中是该字符的位置看作\(1\),不是该字......
  • FastCFS:再谈 选主 与 过半写
    这二者乍一看好像是一回事:都是要求遵循大多数原则(即过半数原则)。其实,在概念上是不同的! 选主:本质是功能角色的概念。“国不能一日无主、群龙不能无首;否则,则是”一盘散沙、溃不成军“。对于FastCFS组件的群集来说,必须要有master,这个master是在server中自动选出来的,选择mast......
  • FastCFS:FastVote-server的作用、使用的时机
     第一:fastvote-server仅仅是个简单的投票辅助服务器,所谓的投票客户端功能原生集成在fastdir、faststore服务器组件中第二:fastdir、faststore当且仅当 其群集中的servers个数为【偶数】(even)时,才去使用fastvote-server的辅助投票功能第三:当fastdir、faststore的配置中,servers......