AtCoder Regular Contest 059
C - いっしょ / Be Together
数据比较小,暴力就挺好的。O(n^2)可过的好题
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 110;
int nums[MAXN],n;
int main()
{
scanf("%d",&n);
for(int i = 0; i < n; ++i)
scanf("%d",&nums[i]);
int res = 999999999,cost = 0;
for(int i = -100; i <= 100; ++i)
{
cost = 0;
for(int j = 0; j < n; ++j)
cost += (nums[j]-i)*(nums[j]-i);
res = min(res,cost);
}
printf("%d\n",res);
return 0;
}
####D - アンバランス / Unbalanced
也比较水。
思路:假设当前字符串长度为偶数,字符x占了一半,另一半是别的字符,用 * 代替,则字符相邻的方式有两种,x和 * 交错排列;或者x和 * 不交错排列,这种情况下至少有两个x挨着。在交错排列的情况下,若x占了一半以上的话,则必定至少有两个x是挨着的,有种抽屉原理的感觉。对于长度为奇数的情况,即len为奇数,则当x字符占了一半以上,x字符至少有len/2+1个,这种情况下,有两种排列的方式,即交错排列和不交错的排列,也就是至少有两个x是挨着的或者两个x隔着一个字符。
综上,一个字符串的子串如果是不平衡的,则必定有某种字符两个挨在一块或者中间隔着一个。扫一遍判断下即可。
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5+10;
char str[MAXN];
int len;
int main()
{
int s = -1, e = -1;
scanf("%s",str);
len = strlen(str);
for(int i = 0; i < len-1; ++i)
{
if(str[i] == str[i+1])
{
s = i+1;
e = i+2;
break;
}
if(i+2 < len && str[i] == str[i+2])
{
s = i+1;
e = i+3;
break;
}
}
printf("%d %d\n",s,e);
return 0;
}
####E - キャンディーとN人の子供 / Children and Candies
感觉D和E的难度差距太大了,感觉一下子突然难了好多,可能是我dp太水了。
参考:http://kmjp.hatenablog.jp/entry/2016/08/13/1030
https://arc059.contest.atcoder.jp/submissions/1550056
思路:dp[k][n]表示把n个糖果分给k个孩子所得到的x[i]^a[i]的乘积的加和,就是题目要求的那玩意,感觉还挺绕呢。dp[k-1][n-m]表示把n-m个糖果分给k-1个孩子得到的结果。也就是第k个孩子给了他m个糖果。先考虑A[i]==B[i]的情况,这时候dp[k][n] += dp[k-1][n-m] * (A[i]^m)。当A[i] != B[i]的时候,则dp[k][n] += dp[k-1][n-m] * (A[i]^m + (A[i]+1)^m + ... + B[i]^m)。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN = 405;
const LL mod = 1e9+7;
LL sum[MAXN];
LL A[MAXN],B[MAXN];
LL dp[MAXN][MAXN];
LL N,C;
LL calc(int a, int b)
{
memset(sum,0,sizeof(sum));
for(int i = a; i <= b; ++i)
{
LL t = 1;
for(int j = 0; j <= C; ++j)
{
sum[j] = sum[j]+t;
sum[j] %= mod;
t = t*i%mod;
}
}
}
int main()
{
cin >> N >> C;
for(int i = 1; i <= N; ++i)
cin >> A[i];
for(int i = 1; i <= N; ++i)
cin >> B[i];
dp[0][0] = 1;
for(int i = 1; i <= N; ++i)
{
calc(A[i],B[i]);//计算A[i]^m + (A[i]+1)^m + ... + B[i]^m
for(int j = 0; j <= C; ++j)
for(int k = 0; k <= j; ++k)
dp[i][j] = (dp[i][j] + dp[i-1][j-k]*sum[k])%mod;
}
cout << dp[N][C] << endl;
return 0;
}
####F - バイナリハック / Unhappy Hacking
不会,E都吃力,F就不看了,题刷多了,回头再来一块搞F
AtCoder Regular Contest 059的更多相关文章
- AtCoder Regular Contest 059 F Unhappy Hacking
Description 题面 Solution 我们发现如果一个位置需要被退掉,那么是 \(0\) 或 \(1\) 都没有关系 于是我们想到把 \(0,1\) 归为一类 问题转化为每一次可以添加和删除 ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
- AtCoder Regular Contest 094
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
- AtCoder Regular Contest 095
AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...
- AtCoder Regular Contest 102
AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...
- AtCoder Regular Contest 096
AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...
随机推荐
- java swing同时向jlabel添加图片和文字,并且设置文字的位置
jLabColor.setVerticalTextPosition(JLabel.TOP);//靠上 jLabColor.setHorizontalTextPosition(JLabel.CENTER ...
- MyBatis小问题-Mapper中错误No constructor found...
前两天又被公司叫去修改其他产品的一些问题了,没有看java相关的,今天周六,看了看MyBatis东西. 就是简单的在MySql中建了个users表,很简单,包含id,name,age,写了个bean. ...
- python基础--数据类型的常用方法1
1.数字类型 整型 用途:存qq号,手机号,不带字母的身份证号... 进制转换: 二进制转十进制:10 --> 1*(2**1) + 0*(2**0) 2 八进制转十进制: 235 --& ...
- Redhat/Fedora 网络接口的配置文件和网络接口专用配置工具
在Redhat/Fedora 中,与乙太网卡相关的配置文件位于 /etc/sysconfig/network-scripts目录中,比如 ifcfg-eth0.ifcfg-eth1 .... .... ...
- Leetcode71. Simplify Path简化路径
给定一个文档 (Unix-style) 的完全路径,请进行路径简化. 例如, path = "/home/", => "/home" path = &qu ...
- python的pip更改源,因为我们处于局域网中
很多时候,比如网络不给力,连接超时.防火墙阻挡等等各种原因,我们可能无法从Python官方的PyPi仓库进行pip安装,这时候可以选择国内的第三方源,推荐使用豆瓣源,速度不错. 使用方法: pip i ...
- Liferay 7.1发布啦
下载地址: https://cdn.lfrs.sl/releases.liferay.com/portal/7.1.0-m1/liferay-ce-portal-tomcat-7.1-m1-20180 ...
- 七.RBM受限玻尔兹曼机
1.受限玻尔兹曼机 玻尔兹曼机是一大类的神经网络模型,但是在实际应用中使用最多的则是受限玻尔兹曼机(RBM). 受限玻尔兹曼机(RBM)是一个随机神经网络(即当网络的神经元节点被激活时会有随机行为 ...
- 【水滴石穿】github_popular
项目不难,就是文件摆放位置跟别的不一样 https://github.com/chenji336/github_popular //定义入口是app.js ///** @format */ impor ...
- WordPress使用自定义文章类型实现任意模板的方法和怎么做邮件回复
主要就是使用了register_post_type 函数. 1.创建插件目录 新建一个文件夹用来存放插件文件,这里我就命名这个文件夹为myMood 2.创php代码文件 在刚才创建的文件夹里面新建一个 ...