河南十三届ICPC部分题解

技术河南十三届ICPC部分题解 河南十三届ICPC部分题解A.祝融传火
输入之后,暴力枚举\((x,y)\)判断即可
#include bits/stdc++.h
using namespace std

河南十三届程序设计大赛部分题解

A.祝融传火

输入之后,暴力枚举\((x,y)\)判断即可

#包含位/stdc .h

使用命名空间标准;

常量整数N=1005

整数N,m,a[N][N],h,w;

弯曲件标志=0;

内联int read()

{

int x=0;

char ch=getchar();

while(ch ' 0 ' | | ch ' 9 ')ch=getchar();

while(ch=' 0 ' ch=' 9 ')x=(x 3)(x 1)ch-' 0 ',ch=getchar();

返回x;

}

int main()

{

n=read(),m=read();

for(int I=1;I=n;(一)

{

for(int j=1;j=m;j)a[I][j]=read();

}

h=read() - 1,w=read()-1;

for(int I=1;i h=n标志==0;(一)

{

for(int j=1;j w=m标志==0;j)

{

如果(a[I][j]==a[I h][j]a[I][j]==a[I][j w]a[I][j]==a[I h][j w])标志=1;

}

}

如果(标志)置位('是');

else puts(' NO ');

返回0;

}

E. Dance with a stick

找规律题

如果有偶数个点一定不可以

如果是奇数个点最中间的点一定可以,这里的最中间是只按照横坐标排序最中间的一个,纵坐标也可以

方向指向无穷就行

#包含位/stdc .h

使用命名空间标准;

常量整数N=1e5 5

结构节点{ 0

int x,y;

} a[N];

int MM=1e9

bool cmp(节点s,节点t){ 0

返回s . x . t . x

}

int main(void){ 0

int n;CIN;

for(int I=1;I=n;cin .x a[i].y;

if(n % 2==0){ 0

看跌期权("否");

返回0;

}

排序(a 1,a 1 n,CMP);

看跌期权("是");

printf('%d %d 1 %d\n ',a[n/2 1].x,a[n/2 1].y,-MM);

返回0;

}

F. 图像识别

大水题,找到原点即可

#包含位/stdc .h

使用命名空间标准;

char MP[1100][1100];

int main(void){ 0

int n,m;

CIN;

int x=0,y=0;

int dx,dy;

for(int I=1;I=n;I){ 0

(同Internationalorganizations)国际组织标志=1;

for(int j=1;j=m;j ) {

宫颈癌前病变议员[I][j];

if(mp[i][j]!='* '标志=0;

if(mp[i][j]=='#') {

dx=j,dy=I;

}

}

如果(标志)y=I;

}

for(int j=1;j=m;j ) {

(同Internationalorganizations)国际组织标志=1;

for(int I=1;I=n;I){ 0

if(mp[i][j]!='*') {

标志=0;

打破;

}

}

if(flag)x=j;

}

printf('%d %d\n ',dx - x,y-dy);

返回0;

}

I.七便士

把这个六芒星展开成环,顺序是1 4 7 2 5 8 3 6

然后随便找一个黑色点破环成立链,扫描连续的白色点,假如白色点长度为x则最多可染色点数为x

-1

判断即可

#include bits/stdc++.h
using namespace std;
const int mp[] = { 0 , 1 , 4 , 7 , 2 , 5 , 8 , 3 , 6 };
int t , cnt , sta;
bool a[20];
string s;
void solove()
{
    cin  s;
    memset( a , 0 , sizeof( a ) ) , cnt = 0;
    for( int i = 1 , p ; i = 8 ; i ++ )
    {
        p = s[ i - 1 ] - '0';
        if( p ) a[ mp[i] ] = a[ mp[i] + 8 ] = 1 , cnt ++;
    }
    if( cnt = 1 )
    {
        puts("Yes");
        return ;
    }
    for( sta = 1 ; sta = 8  !a[ sta ]; sta ++ );
    for( int i = sta , j ; i = sta + 7 ; i ++ )
    {
        if( a[i] ) continue;
        for( j = i + 1 ; j = sta + 7  !a[j] ; j ++ );
        cnt += ( j - i - 1);
        i = j;
    }
    if( cnt == 7 ) puts("Yes");
    else puts("No");
    return ;
}
int main()
{
    cin  t;
    while( t -- ) solove();
    return 0;
}

J.甜甜圈

首先我们将两个数列的顶放在中间进行,比如样例就是5 4 1 2 7 3

然后我们维护一个top就是两个数列的顶,每次最大值和top之间的甜甜圈数量就是操作的权值

然后我们吃掉甜甜圈,并将top移动到甜甜圈处,甜甜圈我们可以用树状数组来维护是否被吃掉

#include bits/stdc++.h
#define int long long
using namespace std;
const int N = 1e5+5;
#define ls l,m,rt1
#define rs m+1,r,rt1|1
int ans = 0;
int c[N];
int n, m;
struct Node {
	int x, y;
}arr[N];
int a[N];
bool cmp(Node s, Node t) {
	return s.x  t.x;
}
int lowbit(int x){
	return x(-x);
}
void updata(int i,int k){    //在i位置加上k
	while(i = n + m){
		c[i] += k;
		i += lowbit(i);
	}
}
int getsum(int i){        //求A[1 - i]的和
	int res = 0;
	while(i  0){
		res += c[i];
		i -= lowbit(i);
	}
	return res;
}
signed main(void) {
	std::ios::sync_with_stdio(false);
	cin  n  m;
    int tp = n;
	for(int i = n; i = 1; i--) {
		cin  a[i];
	}
	for(int i = n + 1; i = n + m; i++) {
		cin  a[i];
	}
	for(int i = 1; i = n + m; i++) {
		arr[i].x = a[i];
		arr[i].y = i;
	}
	sort(arr + 1, arr + 1 + n + m, cmp);
	for(int i = 1; i = n + m; i++) {
		updata(i, 1);
	}
    arr[0].y = n;
	for( int i = 1 ; i = n + m ; i ++)
	{
        updata( arr[i].y , -1 );
        ans += abs( getsum(arr[i - 1].y) - getsum( arr[i].y ) );
	}
	cout ans  endl;
	return 0;
}

L.手动计算

据说可以用积分求出面积,但是本题的精度要求并不高,所以我们可以将该图形放在网格中数网格数来求面积,因为要控制精度,所以单位面积是0.0001就可以

#include bits/stdc++.h
using namespace std;
void solve() {
	double a, b, c, d;
	cin  a  b  c  d;
	double ans = 0;
	for(double i = -8; i = 8; i += 0.01) {
		for(double j = -8; j = 8; j += 0.01) {
			if((i * i * b * b + j * j * a * a)  a * a * b * b || (i * i * d * d + j * j * c * c)  c * c * d * d) {
				ans += 0.01 * 0.01;
			}
		}
	}
	printf("%.1lf\n", ans);
}
int main(void) {
	int T; cin  T;
	while(T--) {
		solve();
	}
	return 0;
}

M.输入输出

乍一看很难,但是细读题目就会发现题目要求\([l_i,R_i]\)之间必须全部为黑色,其他全部为白色实际已经告诉了我们答案只需求\(\sum (R_i-L_i)\)即可\(a_i\)实际上没用,反过来细品为啥题目叫输入输出

#include bits/stdc++.h
using namespace std;
const int N = 100005;
int n , m , k , a[N] , l_min = N , r_max = -1 , ans , ls , rs , color[N];
inline int read()
{
      int x = 0;
      char ch = getchar();
    while( ch  '0' || ch  '9' ) ch = getchar();
    while( ch = '0'  ch = '9' ) x = ( x  3 ) + ( x  1 ) + ch - '0' , ch = getchar();
    return x;
}
int main()
{
    n = read() , m = read() , k = read();
    for(   int i = 1 , l , r ; i = m ; i ++ )
    {
        l = read() , r = read();
        ans += r - l ;
    }
    cout  ans  endl;
}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/37479.html

(0)

相关推荐

  • 为什么要使用数据库连接池及其好处是什么

    技术为什么要使用数据库连接池及其好处是什么为什么要使用数据库连接池及其好处是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。对于一个简单的

    攻略 2021年12月2日
  • go环境变量怎么配置

    技术go环境变量怎么配置这篇文章将为大家详细讲解有关go环境变量怎么配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。export GOROOT=/usr/local/goexport

    攻略 2021年11月18日
  • MySQL 5.7.25在Windows平台如何安装

    技术MySQL 5.7.25在Windows平台如何安装这篇文章将为大家详细讲解有关MySQL 5.7.25在Windows平台如何安装,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1

    攻略 2021年11月1日
  • python中什么是aiohttp库

    技术python中什么是aiohttp库这篇文章主要讲解了“python中什么是aiohttp库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中什么是aioh

    攻略 2021年10月20日
  • MySql数据类型的示例分析

    技术MySql数据类型的示例分析这篇文章主要介绍了MySql数据类型的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.简要概述为什么要开通MyS

    攻略 2021年10月31日
  • 多校NOIP31

    技术多校NOIP31 多校NOIP31T1:考场上认为是简单题首先的思路为容斥原理,考虑钦定行或列满足条件
    用总情况数减去不合法情况数即可,考虑的是反演,问
    题如下:不合法方案数的计算公式,于是考虑二维

    礼包 2021年11月19日