AtCoder ZONe Energy Programming Contest 题解

文章目录

  • A - UFO Invasion
  • B - Sign of Friendship
  • C - MAD TEAM
  • D - Message from Aliens
  • E - Sneaking
  • F - Encounter and Farewell

ZONe Energy Programming Contest

A - UFO Invasion

太简单了。

#include <cstdio>
char ch[10] = { 'Z', 'O', 'N', 'e' };
char s[20];int main() {scanf( "%s", s );int tot = 0, idx = 0;for( int i = 0;i < 12;i ++ ) {if( s[i] == ch[idx] ) {idx ++;if( idx == 4 ) {tot ++;idx = 0;}else;} else idx = ( s[i] == ch[0] );}printf( "%d", tot );return 0;
}

B - Sign of Friendship

就是斜率问题。

#include <cstdio>
#include <iostream>
using namespace std;
#define maxn 105
double d[maxn], h[maxn];
int n;
double D, H;int main() {scanf( "%d %lf %lf", &n, &D, &H );for( int i = 1;i <= n;i ++ )scanf( "%lf %lf", &d[i], &h[i] );double ans = 0;for( int i = 1;i <= n;i ++ )ans = max( ans, H - D * ( ( H - h[i] ) / ( D - d[i] ) ) );printf( "%f\n", ans );return 0;
}

C - MAD TEAM

二分最后的答案,利用二进制

如果第iii个的第jjj个属性大于答案,设为111,否则为000

最后相当于找三个二进制串或起来填满了二进制五位25−1=312^5-1=31251=31

#include <cstdio>
#include <set>
using namespace std;
#define maxn 3005
set < int > st;
int n;
int p[maxn][5];bool check( int x ) {st.clear();for( int i = 1;i <= n;i ++ ) {int t = 0;for( int j = 0;j < 5;j ++ ) {t <<= 1;t += ( p[i][j] >= x );}st.insert( t );}for( set < int > :: iterator i = st.begin();i != st.end();i ++ )for( set < int > :: iterator j = st.begin();j != st.end();j ++ )for( set < int > :: iterator k = st.begin();k != st.end();k ++ )if( ( (*i) | (*j) | (*k) ) == 31 ) return 1;return 0;
}int main() {scanf( "%d", &n );for( int i = 1;i <= n;i ++ )scanf( "%d %d %d %d %d", &p[i][0], &p[i][1], &p[i][2], &p[i][3], &p[i][4] );int l = 0, r = 1e9, ans;while( l <= r ) {int mid = ( l + r ) >> 1;if( check( mid ) ) ans = mid, l = mid + 1;else r = mid - 1;}printf( "%d\n", ans );return 0;
}

D - Message from Aliens

考虑以R作为分界点,不妨改写原串1R2R3R4...(1,2,3,4代表一个整字符串,可以为空)

定义1‾\overline{1}1 表示翻转字符串1

手玩一下会发现,答案的长相只与R个数的奇偶性有关

  • 个数为奇数,3‾1‾24\overline{3}\overline{1}243124

    奇数串翻转从大到小,偶数串从小到大

  • 个数为偶数,4‾2‾135\overline{4}\overline{2}13542135

    偶数串翻转从大到小,奇数串从小到大

定义一个整体翻转标记flagflagflag

既可以加在前面又可以加在后面的操作用deque实现

最后连续相同的字符需要删掉。就进行判断,如果即将要入队的字符与已加入的最后一个相同就都扔掉,再定义一个队列操作即可

#include <algorithm>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
#define maxn 500005
deque < char > q, ans;
char s[maxn];int main() {scanf( "%s", s );int len = strlen( s ); bool flag = 0;for( int i = 0;i < len;i ++ ) {if( s[i] == 'R' ) flag ^= 1;elseif( flag ) q.push_front( s[i] );else q.push_back( s[i] );}if( flag ) reverse( q.begin(), q.end() );while( ! q.empty() ) {if( ! ans.empty() && ans.back() == q.front() ) q.pop_front(), ans.pop_back();else ans.push_back( q.front() ), q.pop_front();}while( ! ans.empty() ) printf( "%c", ans.front() ), ans.pop_front();return 0;
}

E - Sneaking

建图跑最短路

特殊情况是点可以无限往上飞,这导致边数过大,且+1+1+1非常不方便

建虚点i′i'ii−i′→1,i′−i→0,i′−(i−1)′→1i-i'\rightarrow1,i'-i\rightarrow 0,i'-(i-1)'\rightarrow 1ii1,ii0,i(i1)1

#include <queue>
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
#define maxn 505
struct node {int v, w;node(){}node( int V, int W ) {v = V, w = W;}bool operator < ( node t ) const {return w > t.w;}
};
priority_queue < node > q;
vector < node > G[maxn * maxn * 2];
int n, m;
int A[maxn][maxn], B[maxn][maxn];
int dp[maxn * maxn * 2];void addedge( int u, int v, int w ) {G[u].push_back( node( v, w ) );
}int id( int i, int j ) {return ( i - 1 ) * m + j;
}int main() {scanf( "%d %d", &n, &m );for( int i = 1;i <= n;i ++ )for( int j = 1;j < m;j ++ )scanf( "%d", &A[i][j] );for( int i = 1;i < n;i ++ )for( int j = 1;j <= m;j ++ )scanf( "%d", &B[i][j] );for( int i = 1;i <= n;i ++ )for( int j = 1;j <= m;j ++ ) {addedge( id( i, j ), id( i, j ) + n * m, 1 );addedge( id( i, j ) + n * m, id( i, j ), 0 );if( i > 1 ) addedge( id( i, j ) + n * m, id( i - 1, j ) + n * m, 1 );if( i < n ) addedge( id( i, j ), id( i + 1, j ), B[i][j] );if( j > 1 ) addedge( id( i, j ), id( i, j - 1 ), A[i][j - 1] );if( j < m ) addedge( id( i, j ), id( i, j + 1 ), A[i][j] );}memset( dp, 0x7f, sizeof( dp ) );dp[1] = 0;q.push( node( id( 1, 1 ), 0 ) );while( ! q.empty() ) {node t = q.top(); q.pop();int u = t.v, w = t.w;if( u == n * m ) return ! printf( "%d\n", w );for( int i = 0;i < G[u].size();i ++ ) {int v = G[u][i].v, cost = G[u][i].w;if( dp[v] > w + cost ) {dp[v] = w + cost;q.push( node( v, dp[v] ) );}}}return 0;
}

F - Encounter and Farewell

SSS为被禁止边权集,其补集为TTTa→ba\rightarrow bab相当于异或若干个TTT内元素,此乃线性基也

有解情况是[1,N)[1,N)[1,N)满秩

#include <cmath>
#include <cstdio>
using namespace std;
#define maxn 262200
int N, M, n;
int id[maxn], A[maxn], f[maxn];
bool flag[maxn];int find( int x ) {return x == f[x] ? x : f[x] = find( f[x] );
}void unionSet( int u, int v ) {int fu = find( u ), fv = find( v );f[fv] = fu;
}int main() {scanf( "%d %d", &N, &M );while( ( 1 << n ) != N ) n ++;n --;for( int i = 1, x;i <= M;i ++ )scanf( "%d", &x ), flag[x] = 1;for( int i = 1;i < N;i ++ ) {if( flag[i] ) continue;int x = i;for( int j = n;~ j && x;j -- ) {if( x >> j & 1 ) {if( ! A[j] ) A[j] = x, id[j] = i;x ^= A[j];}		}}for( int i = 0;i <= n;i ++ )if( ! id[i] ) return ! printf( "-1\n" );for( int i = 0;i < N;i ++ ) f[i] = i;for( int i = 0;i < N;i ++ )for( int j = 0;j <= n;j ++ )if( find( i ) != find( i ^ id[j] ) ) {unionSet( i, i ^ id[j] );printf( "%d %d\n", i, i ^ id[j] );} else;return 0;
} 

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

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

相关文章

2.11模拟总结

前言 145&#xff08;175&#xff1f;&#xff09;pts 100450&#xff08;30&#xff1f;&#xff09; rnk11&#xff08;8&#xff1f;&#xff09; 之所以有括号是因为T3莫名其妙的TLE了&#xff1f; 考后我一模一样的码再交一遍30分就到手了… 应该不是我的问题吧&#xff…

[aspnetcore.apidoc]一款很不错的api文档生成工具

简单徐速一下为什么选用了aspnetcore.apidoc 而没有选用swagger最初我们也有在试用swagger&#xff0c;但总是有些感觉&#xff0c;感觉有点不满意&#xff0c;就但从api文档角度来说&#xff0c;从前后端文档沟通角度来讲apidoc的表现形式&#xff0c;要比swagger简单的多&…

【学习笔记】浅谈短小可爱的左偏树(可并堆)

文章目录左偏树左偏树的合并(merge)操作例题罗马游戏[Apio2012]dispatching[JLOI2015]城池攻占[Baltic2004]sequence左偏树 左偏树是一个堆&#xff0c;而且是一个可并堆&#xff0c;所以一定有权值的限制 以小根堆为例&#xff0c;那么必须满足节点权值小于左右儿子权值&…

2.12 模拟

文章目录前言题目解析染色计划&#xff08;color&#xff09;奇度边集&#xff08;edges&#xff09;猜拳游戏&#xff08;guess&#xff09;代码T1T2LCT整体二分总结前言 120pts 期望&#xff1a;4010020160 实际&#xff1a;406020120 rnk 9 我yue了。 怎么又是不可抗力性挂…

Acwing1069. 凸多边形的划分

Acwing1069. 凸多边形的划分 题意&#xff1a; 一个N个顶点的凸多边形&#xff0c;划分成N-2个互不相交的三角形&#xff0c;对于每个三角形&#xff0c;其三个顶点的权值相乘都可得到一个权值乘积&#xff0c;试求所有三角形的顶点权值乘积之和至少为多少。 题解&#xff1…

徐磊(Devops):一名写了十几年代码但还没写够的程序员

徐磊&#xff08;Devops 社区领袖&#xff09;【个人介绍】徐磊&#xff0c;微软MVP&#xff08;微软最有价值专家&#xff0c;大中华区域社区技术总监&#xff0c;Devops 社区领袖&#xff09;&#xff0c;从事过网管、技术支持、网络、软件开发等工作&#xff0c;一名写了十几…

加强版[BZOJ#3483] SGU505 Prefixes and suffixes(询问在线版)

文章目录descriptionsolutioncode#3483. SGU505 Prefixes and suffixes&#xff08;询问在线版&#xff09;description 给定&#x1d45b;个字符串&#xff0c;有&#x1d45a;个询问。 每个询问给出两个字符串&#x1d460;1, &#x1d460;2&#xff0c;问&#x1d45b;个字…

AcWing 320. 能量项链

AcWing 320. 能量项链 题意&#xff1a; 题解&#xff1a; 和环形石头合并基本一样 代码&#xff1a; #include<bits/stdc.h> #define debug(a,b) printf("%s %d\n",a,b); typedef long long ll; using namespace std;inline int read(){int s0,w1;char c…

ERP不规范,同事两行泪

最近的很多次对外交流&#xff0c;都聊到了ERP建设的话题&#xff0c;并且无一例外的不那么让人省心&#xff0c;回想我这么多年走过的ERP坑坑路&#xff0c;在这里也写下经验和总结&#xff0c;希望能给正在或者即将走上ERP建设路的企业一些思考和帮助。导读1、几个瞎眼而普遍…

2.13模拟总结

文章目录前言题目解析最小划分&#xff08;divide&#xff09;进制路径&#xff08;base&#xff09;欧拉欧拉&#xff08;eular&#xff09;代码T1T2T3总结前言 day9 170pts 期望&#xff1a;10010020220 实际&#xff1a;701000170 rnk7 挂的分有点多qwq 分数要是得满就能拿…

Panasonic Programming Contest (AtCoder Beginner Contest 195) 题解

文章目录A - Health M DeathB - Many OrangesC - CommaD - Shipping CenterE - Lucky 7 BattleF - Coprime PresentPanasonic Programming Contest (AtCoder Beginner Contest 195)A - Health M Death 判断倍数。 #include <cstdio> int main() {int M, H;scanf( "…

长沙.NET社区之光

奈何万事开头难迎着改革开放四十年带来的春风&#xff0c;长沙的互联网生态环境以唐胡子俱乐部为首的一众互联网社群将长沙互联网的环境推上了一个新的台阶。年底&#xff0c;我与有幸一起共事的溪源兄&#xff0c;下班后一起闲聊&#xff0c;觉着长沙的.NET的生态环境亟待改善…

P3205 [HNOI2010]合唱队

P3205 [HNOI2010]合唱队 题意&#xff1a; 有n个数&#xff0c;然后插入队伍中&#xff0c;如果队列当前为空&#xff0c;则直接插入&#xff0c;然后每次插入和上一次插入的比较&#xff0c;如果大于&#xff0c;插入当前队列的最右侧&#xff0c;如果小于&#xff0c;插入当…

2.14模拟总结

前言 节日快乐&#xff01; (逃) day10 50pts 期望&#xff1a;10302060 实际&#xff1a;0302050 rnk11 彻彻底底的摆烂局了。 但是rnk竟然没有太掉&#xff0c;所以我应该并不孤独… 和KH并排坐在机房里&#xff0c;各自看着电脑&#xff0c;痴痴想着各自的心事&#xff0c;…

KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200)题解

文章目录A - CenturyB - 200th ABC-200C - Ringos Favorite Numbers 2D - Happy Birthday! 2E - Patisserie ABC 2F - Minflip SummationKYOCERA Programming Contest 2021&#xff08;AtCoder Beginner Contest 200&#xff09; A - Century 简单的除以200200200向上取整 B…

高级进阶:Azure DevOps搞定.NET Core编译版本号自增

点击上方蓝字关注“汪宇杰博客”熟悉.NET Framework的人知道&#xff0c;我们可以通过指定AssemblyVersion为10.0.*来让编译器自增版本号。但是.NET Core和.NET Standard不行。即使有MSBump这样的开源项目&#xff0c;也有一定的缺陷。一般这样的需求会出现在CI/CD服务器上。我…

Little Boxes UVALive - 8209

Little Boxes UVALive - 8209 题意&#xff1a; 给你四个数&#xff0c;输出四个数之和&#xff0c;四个数小于等于262之内 题解&#xff1a; 这。。。这。。水题 unsigned int 0&#xff5e;4294967295 (10位数&#xff0c;4e9) int -2147483648&#xff5e;2147483647 (…

2.15模拟总结

前言 day11 期望&#xff1a;406030130 实际&#xff1a;4003070 rnk16 挂大分了。。 T2树边不加双向&#xff1a;60->0。 这什么伞兵bug啊&#xff01; 整体状态也不太好&#xff0c;T2死磕无果。 T1看出正解结果写不出来拉插&#xff0c;乐。 题目解析 T1 网格序列&am…

Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)题解

文章目录A - Tiny Arithmetic SequenceB - Do you know the second highest mountain?C - Secret NumberD - Game in Momotetsu WorldE - Xor DistancesF - Insertion SortMynavi Programming Contest 2021&#xff08;AtCoder Beginner Contest 201&#xff09;A - Tiny Arit…

Newbe.Claptrap - 一套以 “事件溯源” 和“Actor 模式”作为基本理论的服务端开发框架...

本文是关于 Newbe.Claptrap 项目主体内容的介绍&#xff0c;读者可以通过这篇文章&#xff0c;大体了解项目内容。轮子源于需求随着互联网应用的蓬勃发展&#xff0c;相关的技术理论和实现手段也在被不断创造出来。诸如 “云原生架构”、“微服务架构”、“DevOps” 等一系列关…