Educational Codeforces Round 119 (Rated for Div. 2)

D. Exact Change
E. Replace the Numbers
G. Subsequences Galore


因为1和2的数量最大值不是很多,多了的话可以用3代替,那么枚举1和2的数量然后二分3的数量

int a[110], n;
bitset<10> bit;
bool ch(int x)
{for(int i = 1;i <= n;i ++){int num = a[i];x*3 >= a[i] ? num %= 3 : num -= x*3;while(~num && num < 10 && num <= a[i]) if(bit[num])num = -1;else num += 3;if(num != -1) return 0;}return 1;
}int main() 
{	int t;scanf("%d", &t);while(t --){scanf("%d", &n);for(int i = 1;i <= n;i ++)scanf("%d", a+i);int ans = 0x3f3f3f3f;for(int i = 0;i <= 2;i ++)for(int j = 0;j <= 3;j ++){bit.reset();bit[0] = 1;for(int i = 1;i <= j;i ++) bit |= bit<<2;for(int j = 1;j <= i;j ++) bit |= bit<<1;  int l = 0, r = (1e9+2)/3+10000;while(l < r)ch(mid) ? r = mid : l = mid+1;ans = min(ans, i + j + l);}cout<<ans<<endl;}return 0;
}

代码有注释,不过也不咋好,主要并查集 + ( x = num[id[x]] ) 这操作我整懵了

int id[N], fa[N], num[N], idx = 0;  // id[]  是x在num数组的哪个位置 // num[] 是最后答案的数组,其中用并查集来整合 
int find(int u){return fa[u] == u ? u : fa[u] = find(fa[u]);}int main() 
{	int t;scanf("%d", &t);for(int i = 1;i <= t;i ++) fa[i] = i;while(t --){int f, x, y;scanf("%d%d", &f, &x);if(f == 1){                   num[++idx] = x;           // 加一个数 if(id[x])fa[id[x]] = idx; // 把是x的父亲设为新加的这个数的位置。 id[x] = idx;              // x 在 idx; }else{scanf("%d", &y);if(x == y)continue;     if(!id[y])num[id[x]] = y, id[y] = id[x]; // y不存在 -> 把x变成y; else fa[id[x]] = id[y];                  // y存在   -> 把x指向y; id[x] = 0;                               // 消除x存在的痕迹。 }}for(int i = 1;i <= idx;i ++)printf("%d ", num[find(i)]);return 0;
}

首先我们可以枚举2n子集, 那么一个集合的求法可以用容斥来算,容斥之后就是子集的和了,子集的和网上说sos dp,推荐博客 主要这个博客那张图好好,代码实现也有点复杂,可能我写麻烦了吧。

const int N = 2e6+10, mod = 998244353;
void mull(int &a, LL b){a = a*b%mod;return ;}
void add(int &a, LL b){a = (a+b)%mod;return ;}int a[23][26], dp[1<<23];
char s[N];
int main() 
{	int n;scanf("%d", &n);for(int i = 0;i < n;i ++){scanf("%s", s);for(int j = 0;s[j];j ++)a[i][s[j]-'a'] ++;}dp[0] = 1;for(int i = 1;i < 1<<n;i ++) // 预处理  {int num[26], s = 1, k = 0;for(int j = 0;j < 26;j ++)num[j] = N;for(int j = 0;j < n;j ++)if(i>>j&1){k ++;for(int k = 0;k < 26;k ++)if(num[k] > a[j][k])num[k] = a[j][k];}for(int i = 0;i < 26;i ++) mull(s, num[i]+1);s --;dp[i] = k&1 ? s : -s;}for(int i = 0;i < n;i ++)for(int j = 0;j < 1<<n;j ++)if(j>>i&1) add(dp[j], dp[j^1<<i]);LL ans = 0;for(int j = 0;j < 1<<n;j ++){int k, sum;k = sum = 0;for(int i = 0;i < n;i ++) if(j>>i&1) k++, sum += i+1;add(dp[j], mod); // 因为dp[] 在上面可能是负的 -> 第45行. ans ^= (LL)k*sum*dp[j];}cout<<ans<<endl;return 0;
} 

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

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

相关文章

.NET微服务体系结构中为什么使用Ocelot实现API网关

为什么要使用API网关而不是直接通信&#xff1f;在微服务架构中&#xff0c;客户端应用程序通常需要使用来自多个微服务的功能。如果直接执行该消费&#xff0c;则客户端需要处理多个微服务端点以进行呼叫。当应用程序发展并引入新的微服务或更新现有的微服务时会发生什么&…

P2000 拯救世界

P2000 拯救世界 题意&#xff1a; 为了拯救世界&#xff0c;小 a 和 uim 决定召唤出 kkksc03 大神和 lzn 大神。根据古籍记载&#xff0c;召唤出任何一位大神&#xff0c;都需要使用金木水火土五种五行神石来摆一个特定的大阵。而在古籍中&#xff0c;记载是这样的&#xff1…

Codeforces Round #762 (Div. 3)

E. MEX and Increments F. Let’s Play the Hat? G. Unusual Minesweeper H. Permutation and Queries 用个优先队列模拟。 map<int,int>ma; priority_queue<int> q;int main() {int t;scanf("%d", &t);while(t --){int n;scanf("%d", …

基于Jenkins Pipeline的ASP.NET Core持续集成实践

最近在公司实践持续集成&#xff0c;使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署&#xff0c;因此这里总结一下。一、关于持续集成与Jenkins Pipeline1.1 持续集成相关概念互联网软件的开发和发布&#xff0c;已经形成了一套标准流程&#xff0c…

踩不出足迹(牛客练习赛88 )

踩不出足迹(牛客练习赛88 ) 题意&#xff1a; 长度为n的数组a&#xff0c;每个数是一个k位二进制 定义一下操作&#xff1a; 令第一次得到的结果为 a1a_1a1​。你需要从第二个数开始&#xff0c;每次可以选择与上一次得到的结果异或或者同或起来。 问最大值是多少&#xff1f…

Codeforces Round #766 (Div. 2)

D. Not Adding E. Not Escaping F. Not Splitting 直接枚举就行了&#xff0c;原本还想的是素倍数&#xff0c;但是素倍数也不行。 bool dis[N];int main() {int n, x;scanf("%d", &n); int ans -n;while(n --)scanf("%d", &x), dis[x] 1;for(…

编程语言之父谈语言设计,龟叔大赞TypeScript

争论哪门编程语言孰优孰劣&#xff0c;长期以来都是程序员乐此不疲的“娱乐活动”。之所以说是娱乐活动&#xff0c;因为这些争论到最后往往只是各自在发泄情绪&#xff0c;再则就是&#xff0c;脱离使用场景去讨论所谓哪门语言更好并没意义。但如果让编程语言作者坐在一起讨论…

P2656 采蘑菇

P2656 采蘑菇 题意&#xff1a; 有n个点&#xff0c;m个单向边&#xff0c;每个边都有边权&#xff0c;如果经过这个边&#xff0c;可以获得其边权&#xff0c;而其边权会变成原来的p倍(0.1<p<0.8)&#xff0c;向下取整 从s点出发&#xff0c;问最多可以采到的蘑菇 题…

Codeforces Round #764 (Div. 3)

A. Plus One on the Subset B. Make AP C. Division by Two and Permutation D. Palindromes Coloring E. Masha-forgetful F. Interacdive Problem G. MinOr Tree 就是最小值逐步增加到最大值的过程。 int main() {int t;scanf("%d", &t);for(int _ 1;_ <…

你必须知道的 SmartSql

介绍SmartSql MyBatis Cache(Memory | Redis) R/W Splitting Dynamic Repository Diagnostics ......简洁、高效、高性能、扩展性、监控、渐进式开发&#xff01;她是如何工作的&#xff1f;SmartSql 借鉴了 MyBatis 的思想&#xff0c;使用 XML 来管理 SQL &#xff0c;并…

CF785D Anton and School - 2

CF785D Anton and School - 2 题意&#xff1a; 给定一个长度≤210^5由(和)组成的字符串&#xff0c;问有多少个子串&#xff08;可以不连续&#xff09;&#xff0c;前半部分是由(组成后半部分由)组成. 题解&#xff1a; 怎么括号匹配能出这么多题 如何才能不重不漏的选出…

OsharpNS轻量级.net core快速开发框架简明入门教程

OsharpNS官方资源项目地址&#xff1a;https://github.com/i66soft/osharp-ns20演示地址&#xff1a;https://www.osharp.org 直接使用QQ登录可以查看效果文档地址&#xff1a;https://docs.osharp.org 正在完善中....发布博客&#xff1a;https://www.cnblogs.com/guomingfeng…

cf1491C. Pekora and Trampoline

cf1491C. Pekora and Trampoline 题意&#xff1a; 有n个蹦床&#xff0c;每个蹦床有它的弹力值bib_{i}bi​,从i蹦床起跳可以落到ibiib_{i}ibi​的位置上(前提是这个位置有蹦床)&#xff0c;跳完后&#xff0c;蹦床的弹力值会减1&#xff0c; 题解&#xff1a; 对于一个蹦床…

.net core 注入机制与Autofac

本来是要先出注入机制再出 管道 的&#xff0c;哈哈哈……就是不按计划来……这里扯扯题外话&#xff1a;为什么要注入&#xff08;DI&#xff0c;dependency-injection&#xff09;&#xff0c;而不用 new 对象&#xff1f;可能我们都很清楚&#xff0c;new 对象所造成的影响就…

2021 年第十三届四川省 ACM-ICPC 大学生程序设计竞赛

2021 年第十三届四川省 ACM-ICPC 大学生程序设计竞赛 题号题目知识点AChuanpai水题BHotpot贪心CTriangle PendantDRock Paper Scissors队友做的不知道EDon’t Really Like How The Story Ends思维栈FDirection SettingGHourly Coding ProblemHNihongo wa Muzukashii D模拟IMon…

浅析 .Net Core中Json配置的自动更新

Pre很早在看 Jesse 的Asp.net Core快速入门的课程的时候就了解到了在Asp .net core中,如果添加的Json配置被更改了,是支持自动重载配置的,作为一名有着严重"造轮子"情节的程序员,最近在折腾一个博客系统,也想造出一个这样能自动更新以Mysql为数据源的ConfigureSource…

E. Don‘t Really Like How The Story Ends(代码未补)

Don’t Really Like How The Story Ends 题意&#xff1a; 有n个点&#xff0c;m个边&#xff0c;现在要从1号边开始求dfs序&#xff0c;问最少加多少边可以是的dfs序是从1到n&#xff1f; 题解&#xff1a; dfs序的过程中&#xff0c;不走到叶子节点我们是无法回溯的&…

记录美好生活 艹

Red Black Tree 磨磨蹭蹭地写虚树&#xff0c;结果半天没出来。大佬说 二分 求公共节点的lca&#xff0c;一下就出来了  二分就是取那些要变更的点的lca 然后判断这样log^2&#xff0c;好像也可以排序差分区间和弄到log&#xff0c;虚树就是暴力枚举然后换根dp&#xff0c;没…

.NET Core 迁移躺坑记续集--Win下莫名其妙的超时

继上一集.NET Core 迁移躺坑记里说到遇到的各种问题并且弄了n个解决方案之后&#xff0c;特别是对于问题4的解决方案对于切换了HttpClientFactory我用了你家netcore 2.1下专门解决之前HttpClient口病已久的灵丹妙药了&#xff0c;信心满满的上线…..然后挂了&#xff0c;该超时…

gym103117L. Spicy Restaurant

gym103117L. Spicy Restaurant 题意&#xff1a; 有n个点&#xff0c;m个边&#xff0c;每个点都有一个能量值&#xff0c;现在有q个人&#xff0c;每个人有自己的能量值&#xff0c;现在每个人都要去离自己最近且能量值小于等于自身的点。 1<n,m<1e5 1<q<5e5 1&…