传送门

B题题意:

给你n个数,让你把这n个数分成k个段(不能随意调动元素位置)。你需要保证这k个段里面所有元素加起来的和是一个奇数。问可不可以这样划分成功。如果可以打印YES,之后打印出来是从哪里开始断开的。

否则打印出NO

题解:

加上奇数可以使和的性质改变,原来使偶数则变为奇数,奇数则变为偶数。加上一个偶数就不会有这样的变化。所以第一步就找出来有多少个奇数。因为要保证k个段的和都为奇数,所以每个段得先有一个奇数

剩下来的奇数数量如果是偶数那就不影响,这样就可以成功划分。如果是奇数那就划分不成功

代码:

 1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<map>
6 #include<math.h>
7 using namespace std;
8 typedef long long ll;
9 const int maxn=2e5+5;
10 const int mod=26;
11 const int block=300;
12 int v[maxn];
13 int main()
14 {
15 int t;
16 scanf("%d\n",&t);
17 while(t--)
18 {
19 int n,m,sum=0,a;
20 scanf("%d%d",&n,&m);
21 for(int i=1;i<=n;++i)
22 {
23 scanf("%d",&v[i]);
24 if(v[i]%2)
25 sum++;
26 }
27 sum-=m;
28 if(sum<0)
29 printf("NO\n");
30 else if(sum==0 || sum%2==0)
31 {
32 //sum/=2;
33 printf("YES\n");
34 int i;
35 if(sum==0) i=0;
36 else i=1;
37 if(sum!=0)
38 for(i;i<=n;++i)
39 {
40 if(v[i]%2)
41 {
42 sum--;
43 if(sum==0)
44 break;
45 }
46 }
47 for(i+=1;i<=n;++i)
48 {
49 if(m==1)
50 {
51 printf("%d\n",n);
52 break;
53 }
54 if(v[i]%2)
55 {
56 printf("%d ",i),m-=1;
57 }
58 }
59 }
60 else printf("NO\n");
61 }
62 return 0;
63 }

C题题意:

给你n个机器人,这n个机器人有四个移动方向,但是有可能它的中枢坏了导致不能向某个方向移动。现在你需要找到一个坐标,机器人得到这个坐标会来到这里,但是也有某些方向损坏的机器人来不了

所以你需要找出来有没有能让所有机器人都到达这里的一个坐标。能找出来的话就先打印一个“1”再打印出这个坐标,否则打印出0

题解:

找出来所有机器人可移动区间,再让它们取并集就可以了

代码:

 1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<map>
6 #include<math.h>
7 using namespace std;
8 typedef long long ll;
9 const int maxn=1e5;
10 const int mod=26;
11 const int block=300;
12 struct shudui
13 {
14 int xmin,xmax,ymin,ymax,x,y;
15 } m[maxn+5];
16 int main()
17 {
18 int t;
19 scanf("%d",&t);
20 while(t--)
21 {
22 int xmin=-maxn,xmax=maxn,ymin=-maxn,ymax=maxn,flag=0;
23 int n,x1,x2,x3,x4,x,y;
24 scanf("%d",&n);
25 for(int i=1; i<=n; ++i)
26 {
27 scanf("%d%d%d%d%d%d",&x,&y,&x1,&x2,&x3,&x4);
28 m[i].x=x;
29 m[i].y=y;
30 if(!flag)
31 {
32 if(x1)
33 m[i].xmin=-maxn;
34 else m[i].xmin=x;
35 if(x2)
36 m[i].ymax=maxn;
37 else m[i].ymax=y;
38 if(x3)
39 m[i].xmax=maxn;
40 else m[i].xmax=x;
41 if(x4)
42 m[i].ymin=-maxn;
43 else m[i].ymin=y;
44 if(xmin>m[i].xmax || xmax<m[i].xmin || ymin>m[i].ymax || ymax<m[i].ymin)
45 {
46 flag=1;
47 }
48 else
49 {
50 xmin=max(xmin,m[i].xmin);
51 xmax=min(xmax,m[i].xmax);
52 ymin=max(ymin,m[i].ymin);
53 ymax=min(ymax,m[i].ymax);
54 }
55 }
56 }
57 if(!flag)
58 {
59 printf("1 %d %d\n",xmin,ymin);
60 }
61 else printf("0\n");
62 }
63 return 0;
64 }

最新文章

  1. 可拖拽的ListView
  2. oracle中字符串连接用||
  3. 被忽略的js细节
  4. merge sort and quick sort 自己去理解吧
  5. 【转载】OLE DB, ADO, ODBC关系与区别
  6. struts2 拦截器 interceptor
  7. Flex SuperTabNavigator Tab标签图片不显示或图片显示不完全
  8. 【Qt】Qt之启动外部程序【转】
  9. 【HighCharts系列教程】四、颜色属性——colors
  10. iOS打包后收不到推送信息
  11. spring mvc:ueditor跨域多图片上传失败解决方案
  12. 【BZOJ1483】【HNOI2009】梦幻布丁
  13. Visual Studio中Image Watch的使用
  14. 【转】Spring-boot 字符集设置 解决乱码方案
  15. java中将表单转换为PDF
  16. Big-endian/Little-endian, LSB/MSB
  17. 让PETSc跑得再快一些
  18. iOS设备上出现的click,live,on点击失去效果
  19. 【GOF23设计模式】--工厂模式
  20. html页面典型页面制作

热门文章

  1. 网络之HTTPS
  2. 二 prometheus 监控 Redis
  3. Kubernetes学习笔记之安装minikube并运行个简单应用程序
  4. 腾讯QQ,人人都是高手
  5. 【Linux】系统打开文件最大数量限制(进程打开的最大文件句柄数设置)
  6. VSCode运行时弹出powershell
  7. ctfhub技能树—信息泄露—备份文件下载—vim缓存
  8. awk中引用shell变量的方法
  9. Java 8中字符串拼接新姿势:StringJoiner
  10. mysql 设置外键约束时如何删除数据