博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #224 (Div. 2) 解题报告
阅读量:6432 次
发布时间:2019-06-23

本文共 2641 字,大约阅读时间需要 8 分钟。

Problem A 

题意:给你若干字母是你可以分配的, 在给你一个已经放好一些字母的天平。每个字母的重量为一,问你能不能用这些可分配的字母是天平平衡。若有解输出解决方案的任意一种。

思路:直接暴力,先统计左右各有多少,在看一下一共有的字母总数,奇数是不可能平衡的,偶数的话再看左右两边绝对值之差,若大于可分配的字母也是不行的。剩下来把总字母数除二一边输出一半就行了。

代码如下:

1 //2014-01-17-23.27 2 #include 
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #define MP(a, b) make_pair(a, b)12 #define PB(a) push_back(a)13 14 using namespace std;15 16 typedef long long ll;17 typedef pair
pii;18 typedef pair
puu;19 typedef pair
pid;20 typedef pair
pli;21 22 const int INF = 0x3f3f3f3f;23 const double eps = 1e-6;24 const int LEN = 10100;25 26 int main()27 {28 // freopen("in.txt", "r", stdin);29 30 char str[LEN], buff[LEN];31 int l, r, f, pos;32 while(scanf("%s", str)!=EOF){33 int len = strlen(str);34 l = r = f = 0;35 for(int i=0; i
ll || (l+r+ll)%2==1)printf("Impossible\n");43 else{44 int num = (l+r+ll)/2;45 for(int i=0; i
View Code

Problem C 

题意:有一排卡片卡片上有数字 ,你只能往任意位置插入一张卡片,问你有多少种情况能满足a2 - a1 = a3 - a2 = a4 - a3 = ... = ai + 1 - ai = ... = an - an - 1.

思路:这道题我用了纯if-else流分好多情况讨论(dip为差值):

 n<=1 无数种

 n=2 差值为非零偶数 三种 num[0]-dip, (num[1]+num[0])/2, num[1]+dip

    差值为奇数 两种 num[0]-dip, num[1]+dip

    差值为零 一种 num[0]

n>=3 先排序然后看差值有几种大于2 直接输出0

              等于2 判断不合法的差值是不是合法的两倍 是 有一种(num[i+1]+num[i])/2

                                  不是 不可能

              等于1 dip不为0 两种 num[0]-dip, num[n-1]+dip

                   否则 一种 num[0]

代码如下:

1 //2014-01-17-23.27 2 #include 
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #define MP(a, b) make_pair(a, b)12 #define PB(a) push_back(a)13 14 using namespace std;15 16 typedef long long ll;17 typedef pair
pii;18 typedef pair
puu;19 typedef pair
pid;20 typedef pair
pli;21 22 const int INF = 0x3f3f3f3f;23 const double eps = 1e-6;24 const int LEN = 101000;25 26 int main()27 {28 // freopen("in.txt", "r", stdin);29 30 int n, num[LEN], nnum[LEN];31 while(scanf("%d", &n)!=EOF){32 for(int i=0; i
nnum[i]){53 if(!el)el = i+1;54 else el = -1;55 }56 }57 if(el==-1 || min(abs(el-0), abs(el-n+1))>1)printf("0\n");58 else if(el == 0){59 int dip = num[1]-num[0];60 if(dip)printf("2\n%d %d\n", num[0]-dip, num[n-1]+dip);61 else printf("1\n%d\n", num[0]);62 }else{63 if(abs(el-n+1)==1)swap(ta,tb);64 if(ta!=2*tb) printf("0\n");65 else{66 printf("1\n");67 for(int i=0; i
View Code

 

转载于:https://www.cnblogs.com/shu-xiaohao/p/3524898.html

你可能感兴趣的文章
o(1)复杂度之双边滤波算法的原理、流程、实现及效果。
查看>>
Logcat多tag过滤
查看>>
corner2
查看>>
我见过的几种类型的员工(转)
查看>>
web前端的十种jquery特效及源码下载
查看>>
poj 3414 Pots (bfs+线索)
查看>>
Binary search
查看>>
http://jingyan.baidu.com/article/08b6a591f0fafc14a9092275.html
查看>>
MySQL查询数据表的Auto_Increment(自增id)
查看>>
java多线程系类:JUC集合:01之框架
查看>>
【Linux】 源码安装make命令详解,避免踩坑
查看>>
数据库中间表插入乱序
查看>>
[Python爬虫] 之四:Selenium 抓取微博数据
查看>>
使用OPENROWSET爆破SQL Server密码
查看>>
Mac_安装Homebrew以及Maven
查看>>
eclipse web开发Server配置
查看>>
曹政--互联网搜索老师傅
查看>>
MUI框架开发HTML5手机APP(一)--搭建第一个手机APP(转)
查看>>
linux下使用 du查看某个文件或目录占用磁盘空间的大小
查看>>
Android水波纹特效的简单实现
查看>>