Codeforces Round #664 (Div. 2&&Div. 1)Div2的A-E题解

【低轨】Starlink星链-Ku波段OFDM信号同步机制与PNT应用潜力 本文深入解析了Starlink星链Ku波段OFDM信号的同步机制及其在定位、导航与授时(PNT)领域的应用潜力。研究发现,其信号帧内嵌的同步序列具有相位恒定特性,支持超长相干积分,可在极低信噪比下实现高精度伪距测量,为利用低轨卫星通信信号实现高精度PNT服务提供了新的技术路径。 阅读详情

Codeforces Round #664 (Div. 2&&Div. 1)Div2的A-E题解
//写于大号rating值2075/2184,小号rating值1887/1887
//第一次爆零场,而且是在赛后两道题目都被系统X掉
//大号打的div1组,rating值-109
//这两天离校回家,在亲戚家作客,有可能会鸽一两场比赛,如果鸽了题解也会在赛后补题照常写

//沮丧肯定是有的,但是确实是自己有问题,A题(对应Div2的D)理解错了题意一个细节导致代码出错,然而居然还能把pretest过掉…B题(对应Div2的E)对复杂度的分析太差,也确实是自己思路太狭隘了,完全没往哈希上想,以为是个dfs剪枝,强行剪过了pretest然后重测tle…
//被教育了,但是也让自己看到了缺陷,而且现在的我也确实配不上黄名。
//也不必失去信心什么的,A-C题仍然一如既往的“光速”过题,对比半年多前那个俯冲1300的自己确实已经进步了很多很多很多。
//明天会更好,ACMER从来都不会被失败和挫折击溃

//赛后补了div2的A-E题,照例写个题解

比赛链接:https://codeforces.com/contest/1395

A题
简单思维

这道题需要抓住一些本质特点,关于奇偶性

首先我们分析一下对于一个回文串来说,构成这个回文串的字母数量有什么特点。
1.当回文串总长度为偶数时,由于任意一个位置的字母,在回文串中都必定会有另一个不同位置的字母与它相同,因此这个回文串中出现的任意一种字母,它的出现次数都是偶数
2.当回文串总长度为偶数时,位于中间的那个字母是特殊位置,它与自身对应,因此它的总出现次数为奇数。也就是说这种情况下,除了中间位置的字母外,所有字母的出现次数都是偶数,或者换个说法,出现次数为奇数的字母有且只有一个。

综上,可以构成回文串的情况下,我们手上每个字母的出现次数,要么全部都是偶数,要么有且只有一个是奇数。

再看现在题目给我们四种字母r,g,b,w。我们可以统计一下这四种出现次数中是偶数的有几个,记为tot。

当tot等于0或者1的时候,已经满足了我们上面推出的构成回文串条件,直接输出Yes
当tot大于1时,我们需要判断一下,能否通过题目给定的操作方式将tot改变为0或1。

题目给定的操作是,每次可以把1个r和1个g和1个b变为3个w。
我们注意到,对于四个字母的改变数量都是奇数,也就是说每次操作后,原来出现次数是奇数的会变成偶数,原来出现次数是偶数的会变成奇数。

tot为2时,也就是奇数个数为2,偶数个数为2,经过操作后奇数个数仍然为2,偶数个数仍然为2,因此此时直接输出No
tot为3时,也就是奇数个数为3,偶数个数为2,经过操作后奇数个数为1,偶数个数为3,满足要求;
tot为4时,也就是奇数个数为4,偶数个数为0,经过操作后奇数个数为0,偶数个数为4,满足要求。但是此时我们需要检测下,rgb三个字母的个数是不是都不为0,只有这样我们才有操作的机会。如果可以操作,输出Yes,无法操作则输出No

讨论完毕

#include<bits/stdc++.h>
#define ll long long
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
int32_t main()
{
    IOS;
    int t;
    cin>>t;
    while(t--)
    {
        ll a,b,c,d;
        cin>>a>>b>>c>>d;
        int tot=0;
        if(a&1) tot++;
        if(b&1) tot++;
        if(c&1) tot++;
        if(d&1) tot++;
        if(tot==0||tot==1) cout<<"Yes"<<endl;
        else
        {
            if(tot>2&&a&&b&&c) cout<<"Yes"<<endl;
            else cout<<"No"<<endl;
        }
    }
}

B题
简单构造

题意为在一个n×\times×m的棋盘上,一开始在(x,y)的位置(初始位置必定不在边界位置)上放了一个车(只能横着走或者竖着走),现在希望你输出一种行走路径,能把棋盘上的每个点都走一遍。(注意每次移动只有终点是作为被走到的带你,路上中间的点是不算的)

先想一个起点在(1,1)也就是左上角的可以走遍整个棋盘的方案,一开始往右走,走到头后向下走1格后向左走,走到头后向下走1格后向右走…不断循环,也就是走个蛇形路线。

那么我们先把棋子从初始位置(x,y)向上移到(1,y)的位置再移动到(1,1),之后再按照上述路线走即可,碰到(1,y)和(x,y)两个格子就越过他们走,由于初始位置不在边界上,也就是说y不等于1也不等于m,我们跳过这两个位置是必定可行的。(注意第一步不要向左移动到(x,1),左右边界位置是我们这种方案下,改变行走方向的点,会造成我们路径难以构造)
接下来代码模拟完成这个过程就是了

#include<bits/stdc++.h>
#define ll long long
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int32_t main()
{
    IOS;
    int n,m,x,y;
    cin>>n>>m>>x>>y;
    cout<<x<<' '<<y<<endl;//初始位置
    cout<<1<<' '<<y<<endl;//移动到最上面
    for(int i=1;i<=n;i++)//从(1,1)向右,开始走蛇形路线
    {
        if(i&1)//奇数行向右走
        {
            for(int j=1;j<=m;j++)
            {
                if(j==y&&(i==1||i==x)) continue;//碰到(1,y)和(x,y)这两个点就跳过
                cout<<i<<' '<<j<<endl;
            }
        }
        else//偶数行向左走
        {
            for(int j=m;j>=1;j--)
            {
                if(j==y&&(i==1||i==x)) continue;
                cout<<i<<' '<<j<<endl;
            }
        }
    }
}

C题
位运算,贪心,暴力

题意为给你两个长度分别为n和m的数组a和数组b,对于数组a中的每一个数,你都需要在数组b中找到一个数与之进行&运算,作为c数组的值。(对于不同的a数组中的数,你可以选择同一个b数组中的数进行运算)
现在你希望构造出的长度为n的c数组中,所有数字进行|运算后得到的值最小,求出这个最小值。

首先我们要总结一下|(或)运算的特点,或运算,对于同一个二进制位上,任意一个数字对应的二进制数在该位上出现了1,那么最后的结果在这个位上必然有1。
进行贪心的策略,对于最高位的1来说,我们必然希望它优先被全部清除掉。
我们直接暴力for循环检测,所有a数组中,当前数字在最高位上是否为1,如果是1又是否可以通过与b数组的数进行&运算将这个1除去。如果所有a数组中的数,都可以通过进行&运算将这个1除去,那么代表最后的结果是可以不包括这个最高位的0的。
对于更低位的1来说,如果前面的更高位已经有1可以被全部除去了,那么它的选择就必须在那些可以除去这些最高位的基础上进行,我们用一个del数组记录哪些更高位的1已经可以被全部删除,在暴力for循环检测过程中,在加一个检测是否对del数组中的每一位都不存在1即可。

最后的答案为所有位上都为1的初始值,也就是(1<<9)-1,再减去del数组中可以被除去的所有位上的1后的值。

题目条件中,数字最高只有9位二进制,复杂度为O(9 ×\times× 9 ×\times× n ×\times× m)撑死了才3e7级别的复杂度。

#include<bits/stdc++.h>
#define ll long long
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

vector<int>del;//记录当前为止,哪些更高位的1可以被删除,对于更低位的1来说,在&运算删除自身位上1的过程中还需满足同时删除所有del中更高位的1

int32_t main()
{
    IOS;
    int n,m;
    cin>>n>>m;
    vector<int>a(n),b(m);
    for(auto &x:a) cin>>x;
    for(auto &x:b) cin>>x;
    for(int i=8;i>=0;i--)
    {
        int flag=1;//记录第i位的1是否可全部通过&运算除去
        for(int j=0;j<n;j++)
        {
            if(a[j]&(1<<i))//如果a[j]的第i位上出现了1,检测是否可以通过&运算将这个1除去
            {
                bool F=0;//记录a[j]&b[]是否存在一个组合满足不存在更高的已经确定可删除的位以及当前位上出现1
                for(int k=0;k<m;k++)
                {
                    int temp=a[j]&b[k];
                    bool f=1;//记录a[j]&b[k]的值是否满足不存在更高的已经确定可删除的位以及当前位上出现1
                    for(auto x:del) if(temp&(1<<x)) f=0;
                    if(temp&(1<<i)) f=0;
                    if(f) F=1;//出现任意一个满足要求的组合,F置为1
                }
                if(!F)
                {
                    flag=0;//如果任意一个a[]无法将第i位上的1除去,那么flag就为0
                    break;
                }
            }
        }
        if(flag) del.push_back(i);//如果所有第i位的1都可在满足删除更高位的必须删除的1的基础上,同时可删除第i位的1
        //代表第i位的1也可被除去,压入del数组中
    }
    int ans=(1<<9)-1;
    for(auto x:del) ans-=(1<<x);
    cout<<ans<<endl;
}

D题
贪心,暴力,前缀和

给定n个数字,你需要找到一种排列,在满足题目要求的条件下,最后的总和最大。
题目要求,从数列的头部扫到尾部的过程中,如过某一个值大于给定的值m,那么这个数字后的连续d个数字不被计入到最后的总和中。

//比赛的时候将,当d=1,m=2时
//数列3 3 4的结果,理解成为了3
//然而实际结果应该是7
//不知道我是怎么把pretest骗过去的…

首先对于大于m的所有数来说,如果我们希望得到其中的某一个数值,那么对应的他后面的d个数字就不能计入最后的结果中。也就是说每d+1个数字,我们能使一个大于m的数被取到(当然这不见得是最优的构造)。
如果我们手上有x个数字,记x/(d+1)为cas,如果x%(d+1)等于0的话,那么这x数字最多可以使得cas个大于m的数被选择,如果x%(d+1)不为0的话,最后的末尾部分我们可以再增添一组,最多可以使得cas+1个大于m的数被选择。

对于小于等于m的数字来说,他们只要不出现在大于m的数字后d个内,他们就必然会被取到,我们可以通过枚举多少个小于等于m的数字被取到(这些数字当然是小于等于m的数中最大的,放在数列最前面),剩下的数字作为构造大于m的数字,和大于m的数字一同进行上面一段的操作。在大于m的数字当中选定的那些数字自然也是最大的。

因此我们把数字按照大于m和小于等于m分为两类,从大到小排序后求一个前缀和,就可以O(1)查询前i个最大的数的和是多少,暴力枚举小于等于m的数字我们要取到的个数即可。

其他的讨论方法或多或少都会有难以思考的点或者根本讨论不出来。只有这个方法是最简洁的,这个思路实际上在半年前的某一道题中也出现过一次。

#include<bits/stdc++.h>
#define ll long long
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

ll n,d,m;
deque<ll>high,low;

bool cmp(ll a,ll b)
{
    return a>b;
}

int32_t main()
{
    IOS;
    cin>>n>>d>>m;
    for(ll i=0;i<n;i++)
    {
        ll x;
        cin>>x;
        if(x>m) high.push_back(x);
        else low.push_back(x);
    }
    d++;
    sort(high.begin(),high.end(),cmp);
    sort(low.begin(),low.end(),cmp);
    high.push_front(0);
    low.push_front(0);
    ll ans=0;
    for(ll i=1;i<high.size();i++)
        high[i]+=high[i-1];
    for(ll i=1;i<low.size();i++)
        low[i]+=low[i-1];
    for(ll i=0;i<low.size();i++)//i为小于等于m的数字中我们取的个数
    {
        ll j=(n-i)/d;//j为大于m的数字中我们取的个数
        if((n-i)%d) j++;
        j=min((ll)high.size()-1,j);
        ans=max(ans,high[j]+low[i]);
    }
    cout<<ans<<endl;
}

E题
暴力dfs,哈希优化检测

都看到E了应该没必要讲的和上面一样详细了(肚子也饿了想快点吃饭去了)。
首先第一个关键结论,我们最后构造的结果满足题目要求的话,必须是每个点都恰好有一条入边。
之后再注意到k的值特别小,我们可以dfs暴力枚举k,接着就是一个check最后结果的问题了。

比赛的时候我直接用bool数组模拟…剪枝过掉了pretest,tle在了赛后重测…这里要用hash来优化这个最后的check,对每次枚举做到O(1)的check复杂度。

#include<bits/stdc++.h>
#define ll long long
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const ll maxn=2e5+7;

struct Node
{
    ll to,weight;
};

vector<Node>field[maxn];
vector<ll>sum[10];
vector<ll>hash1[10],hash2[10];//hash[i][j]代表对于出度为i的点,我们选择第j小的边的时候,对应hash函数的增加值,用于dfs过程中O(1)计算
ll n,m,k;
ll ans=0;
ll tar1,tar2;//两个hash函数的最终结果,tar1为累加1到n的i三次方结果,tar2位累加1到n的i二次方结果

bool cmp(Node a,Node b)
{
    return a.weight<b.weight;
}

void dfs(ll deep,ll tot1,ll tot2)//tot1为第一个hash函数的统计结果,tot2为第二个hash函数的统计结果
{
    if(deep==k+1)
    {
        if(tot1==tar1&&tot2==tar2) ans++;//两个hash函数check结果都满足,判定所有点都被走到过了
        return ;
    }
    for(ll i=0;i<deep;i++)
    {
        dfs(deep+1,tot1+hash1[deep][i],tot2+hash2[deep][i]);//这里用hash优化了......
    }
}

int32_t main()
{
    IOS;
    cin>>n>>m>>k;
    for(ll i=0;i<m;i++)
    {
        ll u,v,w;
        cin>>u>>v>>w;
        field[u].push_back({v,w});
    }
    for(ll i=1;i<=n;i++)
    {
        tar1+=i*i*i;
        tar2+=i*i;
        sort(field[i].begin(),field[i].end(),cmp);
        sum[field[i].size()].push_back(i);
    }
    for(ll i=1;i<=k;i++)
    {
        for(ll j=0;j<i;j++)
        {
            unordered_map<ll,ll>M;
            ll temp1=0,temp2=0;
            for(auto &x:sum[i])
            {
                ll to=field[x][j].to;
                if(M.find(to)==M.end())
                {
                    temp1+=to*to*to;
                    temp2+=to*to;
                }
                M[to]=1;
            }
            hash1[i].push_back(temp1);
            hash2[i].push_back(temp2);
        }
    }
    dfs(1,0,0);
    cout<<ans<<endl;
}

24、JavaFX MP3 音频播放器开发详解 本文详细介绍了如何使用JavaFX开发一个功能丰富的MP3音频播放器,涵盖文件拖放加载、音频播放控制、音频频谱可视化、进度定位滑块等核心功能,并提供了完整的代码实现和解析。适合希望学习JavaFX多媒体应用开发的开发者参考。 阅读详情

相关推荐

【STC8G1K08A串口使用】

STC8G1K08A串口打印“Hello world”

m0_47459564的博客 1万+

Codeforces Round #664 (Div. 2)

A. Boboniu Likes to Color Balls 题意: 总共四个颜色,可以进行的操作是,前三个一人拿一个放到第四个,就相当于前三个都减一,第四个 +3+3+3。然后得到的四个数,每个数对应一种字符的个数,问这些字符是否能构成回文串。 构成回文串的情况可以是 个数为偶数的有四个, 或者个数为偶数的有三个为奇数的有一个。 还有就是全部都为奇数,然后经过一次操作前三个颜色都变成了偶数,最后一个颜色也变成了偶数, 然后就是三个奇数的情况,假设前三个里面俩奇数一个偶数,最后那个是奇数,通过一次操作可

邵光亮的博客 14万+

对称加密和非对称加密,数字签名和证书

在对称加密中,任何人都可以使用公钥进行加密。在数字签名中,任何人都可以使用公钥验证签名。数字签名,其实就是将非对称加密反过来使用。公钥私钥非对称加密发送者加密时使用接收者解密时使用数字签名验证者验证签名时使用签名者生成签名时使用谁持有密钥?只要有需要,任何人都可以持有个人持有既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密。公钥负责加密,私钥负责解密。既然是签名,那肯定是不希望有人冒充我发消息,所以只有我才能签名。私钥负责签名,公钥负责验签。

m0_70432049的博客 1410

Codeforces Round #664 (Div. 2)总结

主要针对C 最开始思路就跑偏了。 本以为一位一位处理就可以(分治),结果好不容易写出来结果还不对,才发现这样等于把每个数给拆开了 以后做题的时候一定要注意这种穷举可能的ans然后验证的思路 本来暴力就完事的一个题目 尤其要注意这种反向验证跟二分的结合。 毕竟这种题目从没有正常完成过 ...

l1037746466的博客 290

Word公式批量转MathType终极指南:解决omml2mml.xsl缺失与格式调整难题

本文提供Word公式批量转MathType的终极解决方案,重点解决常见的omml2mml.xsl文件缺失问题,并详细讲解批量转换与格式调整技巧。通过补全文件路径、分批次转换及样式预设等方法,大幅提升学术论文公式编辑效率,适用于Office 2016及以上版本。

weixin_28419039的博客 1351

【VS Code+Verilog+Vivado使用】(1)常用插件

VS Code + Verilog + Vivado联合使用说明

XDUryan的博客 5639

Codeforces Round #664 (Div. 2)题解ABCD

A. Boboniu Likes to Color Balls 题目传送门 Boboniu Likes to Color Balls 题目大意 给你四种颜色的球,给你一种操作:选择前三种各一个,将这三个变成最后一种,你可以执行任意次该操作 问,球的数量可不可以形成回文 思路 分情况考虑一下球的奇偶性就行,奇数有0个,1个,4个都是可以的,奇数为3个的时候就需要分别考虑了,如果其中无0的话直接将前三个转成最后一个,就是三偶一奇了,有0的话只能在d上,不然就NO AC Code #include<cstd

Kuricip的博客 1542

从零搭建云手机:基于Docker与KVM的实战指南

本文提供了一份基于Docker与KVM从零搭建私有云手机的实战指南。详细介绍了服务器配置选择、KVM虚拟化环境检查、Docker容器部署以及通过VNC进行远程访问的全过程。该方案轻量高效,适合应用测试、手游多开及自动化脚本运行等场景,帮助用户低成本拥有高性能云端安卓设备。

weixin_29208327的博客 558

Codeforces Round #690 (Div. 3)——解题报告

比赛链接:https://codeforces.com/contest/1462 A题——Favorite Sequence 根据题意直接模拟即可。 #include <bits/stdc++.h> #define PI atan(1.0)*4 #define rp(i,s,t) for (register int i = (s); i <= (t); i++) #define RP(i,t,s) for (register int i = (t); i >= (s);.

mumei的博客 246

Arduino四足开源机器猫-Opencat(导航贴)

本内容由我和小伙伴共同编写,未经授权,谢绝转载! 1.项目介绍 2.组装调试教程 (一)Opencat-F (1)资料地址(包含程序代码&&3D打印图纸): 链接:https://pan.baidu.com/s/1AcVA5jSiOSzRKqEQAomrTA 提取码:szfx (2) (二)Opencat-B (1)组装调试 (2)组装调试注意事项 (3)添加新技能 3.编程 ...

qqliuzhitong的博客 4172

ChatGPT Plus完整开通指南:从账号注册到稳定使用全流程

自然语言处理(NLP)技术通过深度学习模型实现对人类语言的理解与生成,其核心原理是基于Transformer架构的大规模预训练。GPT-4作为当前最先进的生成式AI模型,在代码编写、文档分析等场景展现出显著的技术价值。在实际应用中,稳定的网络环境和合规的支付方式是确保AI助手持续服务的关键因素。针对ChatGPT Plus的开通,需要系统性地解决账号验证、虚拟信用卡支付等工程实践问题,才能实现工作流的高效整合。

weixin_34239592的博客 429

Codeforces Round #664 (Div. 2) ABC 题解

Codeforces Round #664 (Div. 2) time : 2020/08/14 链接 A. Boboniu Likes to Color Balls time limit per test : 1 second memory limit per test : 256 megabytes input : standard input output : standard output 题目描述 Boboniu gives you r red balls, g green b

qq_30445397的博客 537

解析 RABAX during SAPGUI Logon 错误及其解决方案

登录用户关联了初始启动程序,该程序由于未处理的异常导致运行时错误。在 ST22 查看错误的程序名和错误行。修复初始程序代码中的逻辑问题。重新部署修复后的代码。示例代码:防止未处理的异常TRY." 模拟逻辑处理ENDTRY.此代码通过 TRY-CATCH 块捕获潜在错误,避免程序崩溃。是 SAP 系统中常见的运行时错误,其根源可能涉及多个方面,包括用户配置、系统状态、数据库连接和自定义开发等。通过结合 ST22、SM21 等诊断工具,以及完善的代码实践和系统监控,可以有效预防和解决此类问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1781

Codeforces round #664C

Codeforces round #664C 纪念第一次熬夜打cf还有第一次补题写题解 然而本文还是比较水 Boboniu Chats with Du (CodeForces - 1394A) 比赛题目链接 对应的vj题目链接 题意: Boboniu and Bit Operations (time limit per test1 second) (memory limit per test256 megabytes) Boboniu likes bit operations. He wants to pl

weixin_46286993的博客 314

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Codeforces Round #664 (Div. 2) A~D 思维+暴力

Codeforces Round #664 (Div. 2) A~D 思维+暴力 A - Boboniu Likes to Color Balls 比赛的时候比较暴力,就把所有情况讨论一下就好了。 在总数为偶数的情况下: 1、所有球都是奇数的,转换一次所有球就都是偶数了。 2、所有球都是偶数的,不用转换。 3、红蓝绿的球数量相同时,全部转为白就可以了。 总数为奇数的情况下: 1、红,绿,蓝,白其中有一个是奇数其他全是偶数,不用转换。 2、红,绿,蓝,白其中有一个是偶数其他全是奇数,转换一次就可以。 3、红蓝

zhz的博客 192

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Codeforces Round #664 (Div. 3)题解

A. Boboniu Likes to Color Balls 解题思路: 读题发现题目让你构成一个回文串,如果四个都是偶数显然可以。如果执行换字符的操作,我们可以发现他们每种字符的个数奇偶性并没有发生改变,所以如果执行偶数次操作就纯属闲的。我们并不关心每种字符有几个,我们只关心每种字符的奇偶性。这就是解题的关键,剩下的就好写了。 示例代码: #include <bits/stdc++.h> using namespace std; int main() { int t; i

steven_pzx的博客 158

Codeforces Round #664 (Div. 2)A-D题解

A−BoboniuA - BoboniuA−Boboniu LikesLikesLikes tototo ColorColorColor BallsBallsBalls 思路: 可以知道r,b,g,wr,b,g,wr,b,g,w中的奇数数量不大于1,就可以构造回文序列,若奇数数量大于1,我们只需要一次判断即可,因为修改后的r,g,b,wr,g,b,wr,g,b,w若可以成功就可以成功,反则它每次修改后每个数都 ±奇数,会形成奇数偶数数量互补的情况,整体奇数和偶数的数量不会改变。 参考代码: #include

yangzijiangac的博客 266

Codeforces Round #664 (Div. 2) A~D

A. Boboniu Likes to Color Balls #include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { int a,b,c,d; cin>>a>>b>>c>>d; int num=0; if(a&1) num++; if(b&1) num+.

wait 526

【比赛题解】Codeforces Round #664 (Div. 2) Problem A~D

目录前言题解A. Boboniu Likes to Color BallsDescriptionExampleNoteSolutionCodeB. Boboniu Plays ChessDescriptionInputOutputExamplesNoteSolutionCodeC. Boboniu and Bit OperationsDescriptionInputOutputExamplesNoteSolutionCodeD. Boboniu Chats with DuDescriptionInputOu

t14 的博客 412

Codeforces Round #664(Div.2) A,B,C,D

A Boboniu Likes to Color Balls 分情况讨论一下即可。全为偶数,或者三个为偶数,是肯定可以的。只有两个为偶数是肯定不可以的。有一个为偶数,或者没有一个是偶数的情况,得看是否红,蓝,绿气球都有,如果都有则可以(可以转化成成立的情况),否则不可以。 #include <iostream> #include <stdio.h> using namespace std; int T,r,g,b,w; int main() { scanf("%d",&amp

hhhcbw的博客,欢迎各位来访 225

Codeforces Round #664 Div2 前四题

目录A - Boboniu Likes to Color BallsB - Boboniu Plays ChessC - Boboniu and Bit OperationsD - Boboniu Chats with Du1.前缀和暴力枚举2.贪心 A - Boboniu Likes to Color Balls 思路: 能产生回文,等价于个数为奇数的球的颜色不超过一个。 分类讨论,红绿蓝等价(r奇gb偶 = g奇rb偶 = b奇rb偶),放在一起讨论 Odd Number of RGBs Odd

tcy今天长胖了吗的博客 504

Codeforces Round #664

A - Boboniu Likes to Color Balls #include<bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; int a[5]; int main() { int t; cin>>t; while(t--) { int ji=0,ou=0,minn=INF,f=0; for(int i=1;i<=4;i++) {

qq_45792208的博客 171

Codeforces Round #664 (ABCD题解)

题意: 给你a个红球,b个绿球,c个蓝球,你可以进行任意次颜色转换操作,每次颜色转换是把1个红球,1个绿球,1个蓝球,变成三个白球。问你是否可以把这些球排成回文形状。 思路: 可以想到要是回文形状的话,最多只有一种球的数量是一个奇数。然后发现在这里进行一次操作的话,本质就是改边a,b,c,d的奇偶性而已。然后就看看能否把他们变成最多只有一种球的数量是奇数即可。 . B . 题意: 给你一个n*m的棋盘,和一个初始棋子的坐标,那个棋子相当于象棋中的车,可以移动到同一行或同一列的任意一个..

qq_43559193的博客 868

Codeforces Round #664 (Div. 2) C

害,这个题目被hack掉了,真难受啊,害的我掉了60多分,菜鸡如我到现在还没有上蓝,我太菜了。 这个题目的做法就是暴力枚举,首先得预处理出每个ai和每个bi&的值,然后就开始暴力枚举答案从0到(1<<9);如果满足题意就输出一定是最小的。为什么可以枚举呢?假设a|b=c那么c>=a&&c>=b,所以如果枚举的答案是k那么k|ci<=k #include<iostream> #include<stdio.h> #include&.

qcccc_的博客 154
上一篇: Codeforces Round #663 (Div. 2)A-D题解
下一篇: Educational Codeforces Round 93 (Rated for Div. 2)A-E题解
StandNotAlone
博客等级 码龄7年 338粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值