Codeforces Round 857 (Div. 2)【A-C】
创始人
2024-06-01 05:39:38
0

文章目录

  • A. Likes【贪心、模拟】
  • B. Settlement of Guinea Pigs【贪心】
  • C. The Very Beautiful Blanket【构造、观察】

链接
传送门

A. Likes【贪心、模拟】

分析
为了使得当前时间点赞的尽可能大,那么前面的赞的数目也要尽可能大,所以前面把能赞的都要先赞上,尽管后面撤赞了也使得其相对更大。为了使得每个点的赞仅可能小,前面留下的赞也要仅可能小,所以前面赞完之后马上要撤赞,即使后面不得不要点赞也可以保证此时最小。只需要模拟一下即可,统计一下,只赞不撤和又赞又撤的情况数目,模拟一下即可。
实现

#include 
#define ll long long
#define ls (u << 1)
#define rs (u << 1 | 1) 
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef pair PII;
const int N = 1005, M = 1e6 + 5;
int a[N], b[N];
void solve() {int n;cin >> n;for (int i = 1; i <= n; i++) a[i] = b[i] = 0;for (int i = 1; i <= n; i++) {int c;cin >> c;if (c > 0) a[c] = 1;else b[-c] = 1;}int cnt1 = 0, cnt2 = 0;for (int i = 1; i <= n; i++) {if (a[i] && !b[i]) cnt1++;//只赞if (a[i] && b[i]) cnt2++; //又赞又撤}int p = 0, t1 = cnt1 + cnt2, t2 = cnt2;//t1表示前面递增的长度for (int i = 1; i <= n; i++) {if (i != 1) cout << ' ';if (t1) cout << ++p, t1--;else if (t2) cout <<  --p, t2--;}cout << '\n';int m1 = 2 * cnt2, m2 = cnt1, q = 0;//m1表示前面又赞又撤的长度for (int i = 1; i <= n; i++) {if (i != 1) cout << ' ';if (i <= m1) {cout << (i & 1 ? 1 : 0);} else {cout << ++q;}}cout << '\n';
}
int main() {ios::sync_with_stdio(false);cin.tie(0);int T = 1;cin >> T;while (T--) {solve();}
}

B. Settlement of Guinea Pigs【贪心】

分析
这题本身不难。创建两个变量,cnt表示当前的豚鼠的数目,tmp表示最坏的情况(至少需要多少个笼子),如果说医生还没有来的话,多一个豚鼠,就需要多一个笼子,如果医生来的话就可以鉴定了,例如我们有100只豚鼠,性别已知,数目情况下数目最多,答案是一只异性,其余同性,1 + (99 + 1) / 2,共需要51个笼子,为什么呢?可以这样想,对于装满两只的笼子,这个笼子里是什么性别并不重要,反正是装满了,所以多余所有的情况都可以转化位,要么全部同性,要么有一只异性,全部同性,可能是有一个是一只笼子的,这样把他转话为异性,也不会增加笼子数,刚好整装,那么有一个异性则是可以增加一个笼子,为了确保这样的情况,所以我们就单取出一只异性即可。
实现

#include 
#define ll long long
#define ls (u << 1)
#define rs (u << 1 | 1) 
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef pair PII;
const int N = 1005, M = 1e6 + 5;
void solve() {int n;cin >> n;int ans = 0, cnt = 0, tmp = 0;for (int i = 1; i <= n; i++) {int c;cin >> c;if (c == 1) cnt++, tmp++;else {if (cnt) {tmp = 1 + cnt / 2;}}ans = max(tmp, ans);}cout << ans << '\n';
}
int main() {ios::sync_with_stdio(false);cin.tie(0);int T = 1;cin >> T;while (T--) {solve();}
}

C. The Very Beautiful Blanket【构造、观察】

分析
乍一看,你可能觉得这是什么用脚造的数据,太毒瘤了,但是实际上不是的。
在这里插入图片描述
观察一下我们就可以发现,每个数都是由一个子矩阵
0 1
2 3
加上一个数得到的,我们还可以发现所有的2*2的矩阵异或和都为零。那么加多少呢
如果说,我们不考虑数不能重复,那么我们可以这样构造。
0 1 0 1 0 1
2 3 2 3 2 3
0 1 0 1 0 1
2 3 2 3 2 3
对于相邻两个我们加多少合适,写成二进制。
000 001 100 101
010 011 110 111
可以发现,加4是合理的,对于中间四个而言,4的那一位是独立的,
0 4
0 4 这样对应位的异或和也是0,一位4的位数比较高,而且不影响末尾的0 1 2 3,那么下一行加多少呢,由于有200列,我们选择加一个大的2的幂,不影响最低位。
对于加粗部分的矩阵,虽然每两行之间是有差值的,但是两列(奇数列(1,3,5列)在前)之间必然是1,一个是偶数,一个是对应偶数加1,异或之后就是1。两个1异或就是0。另外的奇数列在前就是上面加4的情况,即使这两行不是奇数行在前,由于同行加的高位的2的幂是相同的异或会抵消,就相当于
0 4
0 4
完毕。
实现

#include 
#define ll long long
#define ls (u << 1)
#define rs (u << 1 | 1) 
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef pair PII;
const int N = 205, M = 1e6 + 5;
ll a[N][N];
void solve() {int n, m;cin >> n >> m;a[1][1] = 0, a[1][2] = 1;a[2][1] = 2, a[2][2] = 3;for (int j = 3; j <= m; j++) {a[1][j] = a[1][j - 1] + 4;a[2][j] = a[2][j - 1] + 4; }for (int i = 3; i <= n; i++) {for (int j = 1; j <= m; j++) {a[i][j] = a[i - 2][j] + 4096;}}cout << n * m << '\n';for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cout << a[i][j] << " \n"[j == m];}}
}
int main() {ios::sync_with_stdio(false);cin.tie(0);int T = 1;cin >> T;while (T--) {solve();}
}
/*
1
4 4
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15 
*/

相关内容

热门资讯

平板电脑通用安卓系统吗 你有没有想过,为什么你的平板电脑可以轻松运行那么多应用,而朋友的平板却不行呢?这背后其实有个大秘密—...
tcl老电视刷安卓系统,系统升... 你家的老TCL电视是不是已经有点儿跟不上时代的潮流了?别急,今天就来教你怎么给它来个华丽变身——刷上...
美国车道级导航安卓系统,车道级... 美国车道级导航安卓系统的革命与日常应用想象在你驾驶着爱车,穿梭于繁忙的美国街道时,突然发现手机上的导...
格力派工系统安卓最新,效率升级... 你有没有听说最近格力派工系统安卓版更新了?没错,就是那个让无数格力员工每天都能高效工作的神器!今天,...
安卓系统qq怎么隐藏,可能需要... 你是不是也有过这样的烦恼:手机里藏着一些不想让别人看到的秘密,尤其是那个安卓系统上的QQ,里面藏着不...
车机安卓系统开机画面 亲爱的车友,你是否曾好奇过,当你启动爱车的那一刻,那充满科技感的安卓车机系统开机画面背后,究竟隐藏着...
安卓系统dns缓存时间,深度揭... 你有没有发现,手机上网的时候,有时候网页加载得特别快,有时候又慢得让人抓狂?这其中的奥秘,就藏在安卓...
现在安卓系统用久了会卡,揭秘性... 你有没有发现,你的安卓手机用久了,就像老牛拉车一样,越来越慢了呢?是不是觉得打开个应用都要等半天,玩...
安卓怎么下蔚蓝档案系统,安卓设... 你有没有想过,手机里装个蔚蓝档案系统,是不是瞬间感觉自己的手机都高级了不少?没错,安卓手机也能玩转蔚...
安卓子系统简单安装教程,安卓子... 你有没有想过,给安卓手机装个子系统,让它瞬间变身?别小看这个小小的操作,它能让你的手机功能大升级,就...
安卓能卸载的系统应用,安卓系统... 手机里的安卓系统应用是不是越来越多,有时候感觉就像是个小型的超市,琳琅满目的商品让人挑花了眼?不过,...
分区助手影响系统吗安卓,分区助... 你有没有发现,手机里的分区助手最近好像有点儿不一样了?没错,就是那个帮你轻松管理手机存储空间的神奇小...
安卓水费管理系统app,便捷高... 你有没有想过,家里的水费管理是不是也能变得像手机游戏一样轻松有趣呢?现在,就让我带你走进一个神奇的世...
安卓系统微信标签删除,轻松管理... 你有没有发现,手机里的微信有时候会变得乱糟糟的?别急,今天就来给你详细说说安卓系统微信删除的那些事儿...
安卓车载音响系统,智能驾驶的音... 你有没有发现,随着科技的发展,汽车已经不仅仅是一个代步工具,它更像是一个移动的家。而在这个移动家中,...
华为安卓系统使用方法,畅享智能... 你有没有想过,手机里的操作系统就像是我们生活的城市,各有各的风采和特色?今天,就让我带你走进华为安卓...
安卓系统淘宝直播悬浮窗,安卓系... 你有没有发现,现在用安卓手机看淘宝直播的时候,那个悬浮窗功能简直太方便了!想象你正在追剧,突然直播间...
拈花湾攻略系统和安卓,安卓系统... 你打算去拈花湾游玩吗?别急,别急,让我来给你支个招,让你玩得开心又尽兴!拈花湾,这个充满禅意的古镇,...
怎么切换到安卓系统界面,探索安... 你有没有想过,为什么你的手机界面看起来和别人不一样呢?是不是好奇怎么才能把你的安卓系统界面切换成别人...
安卓m3系统,功能升级与用户体... 你有没有发现,你的安卓手机最近是不是有点不一样了?是不是感觉运行速度更快了,界面也更美观了?哈哈,那...