河南十三届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)

相关推荐

  • Hibernate中Criteria有什么用

    技术Hibernate中Criteria有什么用这篇文章主要介绍Hibernate中Criteria有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!现在对Hibernate Criteria

    攻略 2021年12月8日
  • CMS识别软件whatweb怎么用

    技术CMS识别软件whatweb怎么用CMS识别软件whatweb怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。今天给大家介绍一款网站

    攻略 2021年12月10日
  • java中随机数生成方式有哪些

    技术java中随机数生成方式有哪些这篇文章主要介绍了java中随机数生成方式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  随机数的产生在一些代码

    攻略 2021年11月23日
  • 快递名称都有哪些,国内都有哪几家快递公司

    技术快递名称都有哪些,国内都有哪几家快递公司国内快递公司数千家,下面列举一些知名公司快递名称都有哪些。1.跨越速运跨越速运成立于2007年,是一家直营快递公司,全国有2000多家营业网点,全部由总部统一管理,监督机 制完

    生活 2021年10月23日
  • 如何理解django中板的继承及包含

    技术如何理解django中板的继承及包含如何理解django中板的继承及包含,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。模板的继承应用场景,比如一个网站的

    2021年10月21日
  • MySQL如何进行密码管理

    技术MySQL如何进行密码管理这篇文章主要介绍了MySQL如何进行密码管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. mysql安装后默认没有密码

    攻略 2021年11月2日