Codeforces Round #260 (Div. 2)

Codeforces Round #260 (Div. 2)

题目链接

A:水题,事实上仅仅要推断有没有一个ai != bi就可以,由于都保证是1 - n的不相等数字

B:找到2 3 4的循环节,发现仅仅有4和2,于是把大数%4,%2,在依据循环节去计算就可以

C:dp,dp[i][0]表示不拿i数字。dp[i][1]表示拿i数字。状态转移为
dp(i,0)=max(dp(i1,0),dp(i1,1)),
dp(i,1)=dp(i1,0)+val[i]

D:Trie+博弈。依据字符串建Trie,然后两遍dfs找出能控制自己必胜,和能控制自己必败的状态,假设能控制必胜又能控制必败就赢了,假设仅仅能控制必胜,那么假设k为奇数也是赢,剩下都是输

E:并查集+贪心,对于每一个集合,两遍DFS能找出最长链,然后每次合并操作的时候,肯定是拿两遍的最长链中点去合并是最优的,这样带个权值len表示集合最长长度就可以

代码:

A:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;const int N = 100005;
int n, a[N], b[N];bool judge() {for (int i = 0; i < n; i++)if (a[i] != b[i]) return true;return false;
}int main() {scanf("%d", &n);for (int i = 0; i < n; i++)scanf("%d%d", &a[i], &b[i]);if (judge()) printf("Happy Alex\n");else printf("Poor Alex\n");return 0;
}

B:

#include <cstdio>
#include <cstring>const int N = 100005;
char str[N];int num[5][10];int main() {num[2][0] = 1; num[2][1] = 2; num[2][2] = 4; num[2][3] = 3;num[3][0] = 1; num[3][1] = 3; num[3][2] = 4; num[3][3] = 2;num[4][0] = 1; num[4][1] = 4;scanf("%s", str);if (strcmp(str, "0") == 0) {printf("4\n");return 0;}int yu = 0;for (int i = 0; i < strlen(str); i++) {yu = (yu * 10 + str[i] - '0') % 4;}int sb = yu % 2;int ans = (1 + num[2][yu] + num[3][yu] + num[4][sb]) % 5;printf("%d\n", ans);return 0;
}

C:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;const int N = 100005;
int n;
long long vis[N], dp[N][2];int main() {int a;scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d", &a);vis[a]++;}for (long long i = 1; i <= 100000; i++) {dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]);dp[i][1] = max(dp[i][1], dp[i - 1][0] + vis[i] * i);}printf("%lld\n", max(dp[100000][0], dp[100000][1]));return 0;
}

D:

#include <cstdio>
#include <cstring>const int MAXNODE = 100005;
const int SIGMA_SIZE = 26;struct Trie {int ch[MAXNODE][SIGMA_SIZE];int win[MAXNODE], lose[MAXNODE];int sz;void init() {sz = 1;memset(ch[0], 0, sizeof(ch[0]));}int idx(char c) {return c - 'a';}void insert(char *str) {int n = strlen(str);int u = 0;for (int i = 0; i < n; i++) {int c = idx(str[i]);if (!ch[u][c]) {memset(ch[sz], 0, sizeof(ch[sz]));ch[u][c] = sz++;}u = ch[u][c];}}int dfs1(int u) {win[u] = 0;for (int i = 0; i < SIGMA_SIZE; i++) {int v = ch[u][i];if (!v) continue;int tmp = dfs1(v);if (!tmp) win[u] = 1;}return win[u];}int dfs2(int u) {lose[u] = 0;int bo = 1;for (int i = 0; i < SIGMA_SIZE; i++) {int v = ch[u][i];if (!v) continue;bo = 0;int tmp = dfs2(v);if (!tmp) lose[u] = 1;}if (bo) return lose[u] = 1;return lose[u];}void getsg() {dfs1(0);dfs2(0);}
};const int N = 100005;
int n, k;
char str[N];
Trie gao;bool judge() {gao.init();scanf("%d%d", &n, &k);for (int i = 0; i < n; i++) {scanf("%s", str);gao.insert(str);}gao.getsg();if (gao.win[0] && gao.lose[0])return true;if (gao.win[0]) {if (k&1) return true;return false;}return false;
}int main() {if (judge()) printf("First\n");else printf("Second\n");return 0;
}

E:

#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;const int N = 300005;
int n, m, q, parent[N], len[N], vis[N], Maxu, Maxl;
vector<int> g[N];void dfs(int u, int h, int p) {vis[u] = 1;int flag = 1;for (int i = 0; i < g[u].size(); i++) {int v = g[u][i];if (v == p) continue;flag = 0;dfs(v, h + 1, u);}if (flag) {if (h > Maxl) {Maxl = h;Maxu = u; }}
}int find(int x) {return x == parent[x] ? x : parent[x] = find(parent[x]);
}int main() {scanf("%d%d%d", &n, &m, &q);for (int i = 1; i <= n; i++)parent[i] = i;int u, v;while (m--) {scanf("%d%d", &u, &v);int pu = find(u);int pv = find(v);parent[pu] = pv;g[u].push_back(v);g[v].push_back(u);}for (int i = 1; i <= n; i++) {if (vis[i]) continue;Maxl = -1;dfs(i, 0, 0);Maxl = -1;dfs(Maxu, 0, 0);len[find(i)] = Maxl;}int c, a, b;while (q--) {scanf("%d", &c);if (c == 1) {scanf("%d", &a);printf("%d\n", len[find(a)]);}else {scanf("%d%d", &a, &b);int pa = find(a);int pb = find(b);if (pa != pb) {parent[pa] = pb;len[pb] = max(len[pa], max(len[pb], (len[pb] + 1) / 2 + (len[pa] + 1) / 2 + 1));}}}return 0;
}


版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/zfyouxi/p/4906193.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开始ubuntu 14.04 的装X模式---终端模式下中文输入,听歌,上irc 开启framebuffer看电影 截图...

先上图吧 卡卡的全是在tty1 下的操作&#xff0c;看电影&#xff0c;听歌&#xff0c;截图 &#xff0c;看图 &#xff0c;上irc 等等&#xff0c;相当适合在小白面前装屁&#xff01; 需要安装的软件&#xff1a; 为了能正常显示中文&#xff1a;安装fbterm sudo apt-get ins…

comboBox绑定数据库后SelectedIndexChanged事件出错

comBox控件绑定数据库字段后,在窗体的Load事件之前就已经触发SelectedIndexChanged了,这时可以加一个标识,让其在Load事件之后激发。 bool flag;private void Education_Training_Load(object sender, EventArgs e){ MyDBase DB = new MyDBase(DBUser.sserver, DBUser.DBNam…

odbc mysql 配置文件_ODBC连接主流数据库的配置方法

准备工作安装ODBC基本组件&#xff1a;# yum install -y unixODBC unixODBC-devel安装完成后可用odbcinst -j命令查看安装配置文件所在的位置&#xff0c;有两个比较常用的配置&#xff0c;一个是ODBC驱动配置&#xff0c;默认在/etc/odbcinst.ini&#xff0c;另一个是系统数据…

2017的结尾

2017马上就要结束了&#xff0c;这一年感觉进步不太大&#xff0c;年尾学习了《C和指针》&#xff0c;没有学太多东西&#xff0c;人有点疲惫&#xff0c;同时感觉身体不如以前了&#xff0c;以后一定要好好保重身体&#xff0c;希望一家人健康幸福快乐&#xff0c;学习上&…

.NET6中关于Minimal API的简单使用

微信公众号&#xff1a;趣编程ACE收集并分享日常的.NET实战开发技巧,源码获取关注后回复 源码;**如果觉得本公众号对您有帮助&#xff0c;欢迎关注本文来自社区群粉丝投稿.NET6中关于Minimal API的简单使用详细文档参考官网 https://docs.microsoft.com/en-us/aspnet/core/fund…

大数据量分页查询方法(转)

本文旨在介绍一种对数据库中的大数据量表格进行分页查询的实现方法&#xff0c;该方法对应用服务器、数据库服务器、查询客户端的cpu和内存占用都较低&#xff0c;查询速度较快&#xff0c;是一个较为理想的分页查询实现方案。 1&#xff0e;问题的提出 在软件开发中&#xff…

DVR分布式路由

1. 背景 没有使用DVR的场景&#xff1a; 从图中可以明显看到东西向和南北向的流量会集中到网络节点&#xff0c;这会使网络节点成为瓶颈。 如果启用DVR&#xff0c;如下图&#xff1a; 对于东西向的流量&#xff0c; 流量会直接在计算节点之间传递。 对于南北向的流量&#xff…

浏览器兼容性很重要

<meta http-equiv"X-UA-Compatible" content"IEedge,chrome1">转载于:https://www.cnblogs.com/yeahdwb/p/4203428.html

SQL函数获取一年中每个月的天数

第一步&#xff1a;编写判断一年是否是闰年的函数IsLeapYear <strong>CREATE FUNCTION IsLeapYear( Year INT) RETURNS BIT AS BEGIN IF (Year % 4 0) and ((Year % 100 <> 0) or (Year % 400 0)) RETURN 1 RETURN 0 END</strong> 第二步&#xff1a…

求斐波那契数列的特征方程和通项公式

1、斐波那契数列 f(1) 1; f(2) 1; f(3) f(1) f(2);以此内推1 x 1f(x) 1 x 2f(x - 1) f(x - 2) x > 32、特征方程 解释&#xff1a;特征方程是为研究相应的数学对象而引入的一些等式&#xff0c;它因数学对象不同而不…

php实现pdf文件的生成与下载

2019独角兽企业重金招聘Python工程师标准>>> 这个有点复杂的&#xff0c;我们一步一步来说明。 受先我们要下载pdf需要的文件&#xff0c;搜索‘php生成pdf’找到相关进行下载&#xff0c;这里不做介绍 //pdf下载$name $_SESSION[ex_uname];$name_pdf$name..pdf;$u…

C#-线程

多线程通常一个应用就是一个进程&#xff0c;进程中一般是一个线程&#xff0c;执行一个操作&#xff0c;其他操作等待。多线程&#xff0c;看起来是一个进程&#xff0c;有多个线程同时运行&#xff0c;互相不必等待&#xff0c;实际是把cpu的空闲时间利用起来&#xff0c;cpu…

window 效率神器:Wox

官方网站 http://www.getwox.com/ 下载后以管理员身份运行&#xff0c;右下角可以看到Wox的图标。点击setting可以进入主界面 如果看不懂可以将语言设置为中文 默认快捷键是Alt space 热键呼出。你理应习惯这个风格。这是你高效率的开始 进入主题&#xff08;Theme&#xff09…

Visual Studio listView控件绑定SQL Server数据库并动态显示数据,调整列宽

在Visual Studio中,可以用listView控件直接从SQL Server数据库中动态读取数据,并自动调整列宽。本文讲解如何通过ADO.net连接SQL Server数据库,并用SqlDataReader读取数据,并显示到listview控件中。 代码中的MyDBase为自定义的使用ADO.NET方法交互数据库的类。代码获取:《…

趣学算法之斐波拉契数列实现

1、斐波拉契数列 f(1) = 1; f(2) = 1; f(3) = f(1) + f(2);以此内推1 x = 1 f(x) = 1 x = 2f(x - 1) + f(x - 2) x >= 3 2、代码实现 #include <stdio.h> #include <stdlib.h>int fib1(int n)…

java mysql数据去重_java使用MySQL和HQL数据去重

思路先查询出满足某种条件的数据的最小ID&#xff0c;然后删除最小ID以外的数据就实现了去重实例查询最小ID的重复数据select * from oms_relation_model ormwhere orm.fd_id(select min(t.fd_id) from oms_relation_model twhere orm.fd_ekp_idt.fd_ekp_id and orm.fd_ekp_idt…

scala入门-01-IDEA安装scala插件

2019独角兽企业重金招聘Python工程师标准>>> 由于本人一直使用IDEA开发Java项目&#xff0c;目前scala也可以使用IDEA开发&#xff0c;下载地址&#xff1a;http://www.jetbrains.com/idea/ Community Edition FREE 和 Ultimate Edition Free 30-day trial都支撑s…

GeneralUpdate20220323里程碑版本发布

大家好我是juster&#xff0c;GeneralUpdate的开源项目作者。这次将发布GeneralUpdate里程碑版本&#xff0c;该版本发生了巨大改变历时4个月的时间终于要和大家见面了。开源不易希望大家能多多支持。可能或多或少会有些bug希望大家多多反馈&#xff0c;这里也有一个小小的心愿…

信息安全系统设计基础第七周学习总结

存储器的层次结构 存储技术 静态RAMSRAM将每一位存储在双稳态的存储器单元中 动态RAMDRAM将每一位存储为对电容充电。 传统的DRAMd*w的DRAM存储dw位信息 增强的DRAM 非易失性存储器 访问主存 磁盘存储 磁盘构造 磁盘容量公式&#xff1a;磁盘容量&#xff08;字节数/扇区) *…

FFmpeg的HEVC解码器源码简单分析:解码器主干部分

HEVC源码分析文章列表&#xff1a;【解码 -libavcodec HEVC 解码器】FFmpeg的HEVC解码器源码简单分析&#xff1a;概述FFmpeg的HEVC解码器源码简单分析&#xff1a;解析器&#xff08;Parser&#xff09;部分FFmpeg的HEVC解码器源码简单分析&#xff1a;解码器主干部分FFmpeg的…