T1 初出茅庐
题意:
把2*a个数,分成两队,使两队的人中的第一队中的每一个人都大于第二队.是输出YES.
解法:
暴力.
代码:
#include<bits/stdc++.h>
using namespace std ;
int x[1000000 ];
int main()
{
int a;
cin >>a;
for (int i=1 ;i<=2 *a;i++)
cin >>x[i];
sort(x+1 ,x+2 *a+1 );
if (x[a]<x[a+1 ])
cout <<"YES" ;
else
cout <<"NO" ;
return 0 ;
}
小结:
**此类题目水题。**
T2 崭露头角
题意:
输入六个数,要使前三个数和后三个数的数的和相等,要改变几个数.
解法:
暴力.
代码:
#include<bits/stdc++.h>
using namespace std ;
int x[10 ];
int main()
{
char a;
int h1=0 ,h2=0 ,cha;
for (int i=1 ; i<=6 ; i++)
{
cin >>a;
x[i]=a-48 ;
}
h1=x[1 ]+x[2 ]+x[3 ];
h2=x[4 ]+x[5 ]+x[6 ];
sort(x+1 ,x+4 );
sort(x+4 ,x+7 );
cha=h1-h2;
if (cha==0 )
cout <<0 ;
else if (cha>0 &&(cha<=x[3 ]||cha<=9 -x[4 ])||cha<0 &&(abs (cha)<=x[6 ]||abs (cha)<=9 -x[1 ]))
cout <<1 ;
else if ((cha>0 &&(cha<=x[3 ]+x[2 ]||cha<=x[3 ]+9 -x[4 ]||cha<=18 -x[4 ]-x[5 ]))||(cha<0 &&(abs (cha)<=x[6 ]+x[5 ]||abs (cha)<=x[6 ]+9 -x[1 ]||abs (cha)<=18 -x[1 ]-x[2 ])))
cout <<2 ;
else
cout <<3 ;
return 0 ;
}
小结:
**此类题目暴力,横扫一遍。**
T3 渐入佳境
题意:
有几个节目,并且有一个开始时间和结束时间,同时有两个电视,在上一个节目的结束时间不可以看下一个节目,问是否可以看完节目.
解法:
结构图排序.
代码:
#include <bits/stdc++.h>
using namespace std ;
struct node
{
int left ,right;
} x[1000000 ];
bool cmp(node x, node y)
{
if (x.left == y.left)
return x.right < y.right;
else
return x.left < y.left;
}
int main()
{
int a, flag1 = -1 , flag2 = -1 ;
cin >> a;
for (int i = 1 ; i <= a; i++)
cin >> x[i].left>> x[i].right;
sort(x + 1 , x + a + 1 , cmp);
for (int i = 1 ; i <= a; i++)
{
if (x[i].left > flag1)
{
flag1 = x[i].right;
}
else if (x[i].left> flag2)
{
flag2 = x[i].right;
}
else
{
cout << "NO" ;
return 0 ;
}
}
cout << "YES" ;
}
小结:
**此类题目结构性。**
T4 炉火纯青
题意:
给六种不同的交通规则,问你一共犯了几次规.
解法:
暴力.
代码:
#include <bits/stdc++.h>
using namespace std ;
const int N = 1e6 + 10 ;
int n, v, no, sta[N], top;
int main()
{
cin >> n;
int ans = 0 ;
sta[0 ] = 1e9 ;
for (int i = 1 ; i <= n; i++)
{
int tp, x;
cin >> tp;
if (tp == 1 )
cin >> v;
if (tp == 2 )
{
ans += no;
no = 0 ;
}
if (tp == 3 )
{
cin >> x;
sta[++top] = x;
}
if (tp == 4 )
no = 0 ;
if (tp == 5 )
sta[++top] = 1e9 ;
if (tp == 6 )
no++;
while (sta[top] < v)
{
top--;
ans++;
}
}
cout << ans << endl;
return 0 ;
}
小结:
**此类题目预处理就行了。**
T5
题意:
给出一个n*m的方阵,有k个着火点,另有一个点未知,每个点每秒钟都会向外扩张一圈,问最少需要几分钟.
解法:
无
代码:
无
小结:
**此类题目较难。**
T6 事了拂衣去
题意:
给定一个n*m的格子,有空房间和墙的格子.你要在空的房间里放下几个守卫,有几种要求,(详细看原题),最多只能空一个房间不监管,问最多能有几种方法.
解法:
无
代码:
无
小结:
**此类题目较难。**
T7 深藏功与名
题意:
给定n和m条边,以下几行是几条边连的点和走的代价,问能不能花最小的价值从1到n,并输出最小数.
解法:
无
代码:
无
小结:
**此类题目较难。**