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

相关推荐

  • what引导的宾语从句,what引导宾语从句用法

    技术what引导的宾语从句,what引导宾语从句用法what引导宾语从句有:what引导宾语从句时在从句中作主语what引导的宾语从句、宾语或表语,表示“所……的……”;表示“……的时间”,相当于the time tha

    生活 2021年10月27日
  • 如何介绍自己,他人介绍的介绍者有哪些

    技术如何介绍自己,他人介绍的介绍者有哪些在他人介绍中,介绍者的确定是有一定之规的。通常,具有 下列身份者,理应在他人介绍中充当介绍者。(1) 社交活动中的东道主。(2) 社交场合的长者。(3) 家庭性聚会中的女主人。(4

    生活 2021年10月20日
  • Linux前台的程序如何转到后台执行并且关闭终端而不杀死命令

    技术Linux前台的程序如何转到后台执行并且关闭终端而不杀死命令这篇文章给大家介绍Linux前台的程序如何转到后台执行并且关闭终端而不杀死命令,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。过SSH或

    攻略 2021年10月21日
  • 我国的少数民族,我国特有的少数民族有哪些

    技术我国的少数民族,我国特有的少数民族有哪些蒙古族那达慕大会;锡伯族抹黑节;彝族的“火把节”;瑶族达努节;藏族望果节。1、瑶族达努节达努节是马山、都安、巴马、平果、隆安、大化等地自称“布努”的瑶族传统节日。又名二九节、祖

    生活 2021年11月1日
  • javascript中prototype方法有什么用

    技术javascript中prototype方法有什么用这篇文章主要为大家展示了“javascript中prototype方法有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习

    攻略 2021年11月15日
  • RAC主机配置ssh互信的方法教程

    技术RAC主机配置ssh互信的方法教程本篇内容主要讲解“RAC主机配置ssh互信的方法教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“RAC主机配置ssh互信的方法教程”吧

    攻略 2021年10月22日