Codeforces Round #766 (Div. 2)

D. Not Adding
E. Not Escaping
F. Not Splitting


直接枚举就行了,原本还想的是素倍数,但是素倍数也不行。

bool dis[N];int main()
{int n, x;scanf("%d", &n); int ans = -n;while(n --)scanf("%d", &x), dis[x] = 1;for(int i = 1;i <= 1e6;i ++){int t = 0;for(int j = i;j <= 1e6; j += i)if(dis[j])t = __gcd(t, j);ans += t == i;}cout<<ans<<endl;return 0;

先分层,然后每层出入口的dp可以化简,因为是加法 (∣i−j∣∗x|i-j|*xijx),那么去绝对值+两次遍历求出这层的每个点的最小花费。

typedef long long LL;
typedef pair<int,int> PII;
const int N = 1e6+10;void chmi(LL &a, LL b){if(a > b)a = b;return ;} 
struct point{int a, b, c, d, h;bool operator < (const point &b)const {return a < b.a;};};LL x[N];
point a[N];
vector<int>v[N];
vector<LL>ans[N];
int pos(int i, int a){return lower_bound(v[i].begin(), v[i].end(), a)-v[i].begin();} 
int main()
{int t;scanf("%d", &t);while(t --){int n, m, k;scanf("%d%d%d", &n, &m, &k);for(int i = 1;i <= n;i ++) scanf("%lld", x+i);for(int i = 1;i <= k;i ++) {scanf("%d%d%d%d%d", &a[i].a, &a[i].b, &a[i].c, &a[i].d, &a[i].h);v[a[i].a].push_back(a[i].b);v[a[i].c].push_back(a[i].d);}a[0] = {n, m, n, m, 0};  sort(a, a+k+1);a[k+1] = {0, 0, 0, 0, 0};// 楼梯的处理 v[1].push_back(1); v[n].push_back(m);for(int i = 1;i <= n;i ++){sort(v[i].begin(), v[i].end());v[i].erase(unique(v[i].begin(), v[i].end()), v[i].end());for(int j = 0;j < v[i].size();j ++)ans[i].push_back(1e18);}    // 离散化每层的点,可以存PII, 我存的是两个vector[]。代表点和最小花费的对应关系。 ans[1][0] = 0;  // 每层的处理。 // 以上都是离散化相关操作 int l = 0, r = 0;while(l <= k) {	int now = a[l].a;LL mi = 1e18;for(int i = 0;i < v[now].size();i ++){chmi(mi, ans[now][i]-v[now][i]*x[now]);chmi(ans[now][i], mi+v[now][i]*x[now]);}mi = 1e18;for(int i = v[now].size()-1;i >= 0;i --){chmi(mi, ans[now][i]+v[now][i]*x[now]);chmi(ans[now][i], mi-v[now][i]*x[now]);}	 // 遍历两遍去绝对值。 while(a[r].a == a[l].a){chmi(ans[a[r].c][pos(a[r].c, a[r].d)], ans[a[r].a][pos(a[r].a, a[r].b)] - a[r].h);r ++;}  // 走起始点在这层的楼梯。 l = r;}ans[n].back() < 1e18/2 ?  printf("%lld\n", ans[n].back()) : puts("NO ESCAPE"); // 1e18 也可能不太保险。 for(int i = 1;i <= n;i ++) v[i].clear(), ans[i].clear();}return 0;
} 

额,他要对称,然后我想的是走两边dij,分别看左半和上半部分的最短路,权重就是经过把一对切掉的数量。
写的时候坎坎拌拌,一会儿k全局和局部冲突,一会儿map没脑子clear早了导致结果一直是n。这题不因该呀,难道是对称的证明是重点吗。

int ans[600][600], k, n;  //  
priority_queue<pair<int,PII>, vector<pair<int,PII>>, greater<pair<int,PII>>> p;
map<pair<PII, PII>, int> ma;
int dx[4] = {1, -1, 0, 0}, dy[4] = {0, 0, 1, -1};int dij(int d, int r)
{for(int i = 1;i <= d;i ++)for(int j = 1;j <= r;j ++) ans[i][j] = 0x3f3f3f3f;ans[1][1] = 0;p.push({0, {1, 1}});while(p.size()){int s = p.top().first, x = p.top().second.first, y = p.top().second.second;p.pop();if(s > ans[x][y]) continue;for(int i = 0;i < 4;i ++){int xx = x+dx[i], yy = y+dy[i];if(!xx || !yy ||xx > d || yy > r) continue;if(ans[xx][yy] > ans[x][y] + ma[{{x,y}, {xx, yy}}]) //	cout<<xx<<' '<<yy<<' '<<x<<' '<<y<<' '<<ma[{{x,y}, {xx, yy}}]<<endl,p.push({ans[xx][yy] = ans[x][y] + ma[{{x,y}, {xx, yy}}], {xx, yy}});}}return ans[k/2+1][k/2+1];
}
int main() 
{int t;scanf("%d", &t); while(t --){   // 手欠多写了int n, k; scanf("%d%d", &n, &k);for(int i = 1;i <= n;i ++){int a, b, c, d;scanf("%d%d%d%d", &a, &b, &c, &d);if(a == c)ma[{{a, max(b, d)}, {a+1, max(b, d)}}] ++, ma[{{a+1, max(b, d)}, {a, max(b, d)}}] ++;elsema[{{max(a, c), b}, {max(a, c), b+1}}] ++, ma[{{max(a, c), b+1}, {max(a, c), b}}] ++;a = 1+k-a, b = 1+k-b, c = 1+k-c, d = 1+k-d;if(a == c)ma[{{a, max(b, d)}, {a+1, max(b, d)}}] ++, ma[{{a+1, max(b, d)}, {a, max(b, d)}}] ++;elsema[{{max(a, c), b}, {max(a, c), b+1}}] ++, ma[{{max(a, c), b+1}, {max(a, c), b}}] ++;} //	for(auto x : ma) cout<<x.first.first.first<<" "<<x.first.first.second<<' '<<x.first.second.first<<' '<<x.first.second.second<<' '<<x.second<<endl;printf("%d\n", n-min(dij(k+1, k/2+1), dij(k/2+1, k+1)));ma.clear();  // 放到printf前debug好长时间,,哎。 }return 0;
} 

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

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

相关文章

编程语言之父谈语言设计,龟叔大赞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&…

使用Entity Framework Core访问数据库(Oracle篇)

前言哇。。看看时间 真的很久很久没写博客了 将近一年了。最近一直在忙各种家中事务和公司的新框架 终于抽出时间来更新一波了。本篇主要讲一下关于Entity Framework Core访问oracle数据库的采坑。。强调一下&#xff0c;本篇文章发布之前 关于Entity Framework Core访问oracl…

gym103117J. Ants

gym103117J. Ants 题意&#xff1a; n个蚂蚁在长度为1e91的木棍上&#xff0c;第i个蚂蚁在ai位置上&#xff0c;朝向为0/1&#xff08;0表示左&#xff0c;1表示右&#xff09;,如果蚂蚁相遇则彼此调转方向。木棍两侧分别有厚度为a和b的墙&#xff0c;蚂蚁每撞一次墙&#xf…

Asp.Net Core Docker镜像更新系统从wheezy改为stretch

之前写过一个在Asp.Net Core里调用System.Drawing.Common绘图的DEMO&#xff0c;部署到Docker里运行&#xff0c;需要更新Asp.Net Core镜像的操作系统。https://www.cnblogs.com/sunnytrudeau/p/9384620.html当时用的阿里云的源RUN echo "deb http://mirrors.aliyun.com/d…

Monster Hunter(2020南京M)

Monster Hunter(2020南京M) 题意&#xff1a; 给你一颗树&#xff0c;树上每个节点都是一个hpi 血量的怪物。打败每个怪物所需要的能量值为hpi 所 有 存 活 的 直 接 子 节 点 的 hpj 。每次必须要消灭父节点后才能消灭子节点。此外你还有m个魔咒&#xff0c;每个魔咒可以不…

网络数据采集(AngleSharp)-使用AngleSharp做html解析

有这么一本Python的书: <<Python 网络数据采集>>我准备用.NET Core及第三方库实现里面所有的例子. 这是第一部分, 主要使用的是AngleSharp: https://anglesharp.github.io/(文章的章节书与该书是对应的)发送Http请求在python里面这样发送http请求, 它使用的是pytho…

ASP.NET Core在Azure Kubernetes Service中的部署和管理

目标部署&#xff1a;掌握将aspnetcore程序成功发布到Azure Kubernetes Service&#xff08;AKS&#xff09;上管理&#xff1a;掌握将AKS上的aspnetcore程序扩容、更新版本准备工作注册 Azure 账户官网免费帐户Azure 免费帐户仅适用于新用户&#xff0c;并且仅限每个客户一个免…