AtCoder Grand Contest 021
A - Digit Sum 2
Time limit : 2sec / Memory limit : 256MB
Score : 300 points
Problem Statement
Find the maximum possible sum of the digits (in base 10) of a positive integer not greater than N.
Constraints
- 1≤N≤1016
- N is an integer.
Input
Input is given from Standard Input in the following format:
N
Output
Print the maximum possible sum of the digits (in base 10) of a positive integer not greater than N.
Sample Input 1
100
Sample Output 1
18
For example, the sum of the digits in 99 is 18, which turns out to be the maximum value.
Sample Input 2
9995
Sample Output 2
35
For example, the sum of the digits in 9989 is 35, which turns out to be the maximum value.
Sample Input 3
3141592653589793
Sample Output 3
137
找小于等于一个数的位数和最大
很容易想到就是尽量多的填9,比如3位数我就可以填首位,其他的填9,所以就是首位-1+9*(位数-1)
但是99的时候我是可以99的啊,这种贪心就会忽略,所以正确的方式是先把这个数+1
公式为9*(位数-1)+(n+1)的首位-1
#include<bits/stdc++.h>
using namespace std;
long long n,s;
int main()
{
cin>>n,n++;
while(n>)s+=,n/=;
cout<<s+n-;
return ;
}
B - Holes
Time limit : 2sec / Memory limit : 256MB
Score : 600 points
Problem Statement
There are N holes in a two-dimensional plane. The coordinates of the i-th hole are (xi,yi).
Let R=10101010. Ringo performs the following operation:
- Randomly choose a point from the interior of a circle of radius R centered at the origin, and put Snuke there. Snuke will move to the hole with the smallest Euclidean distance from the point, and fall into that hole. If there are multiple such holes, the hole with the smallest index will be chosen.
For every i (1≤i≤N), find the probability that Snuke falls into the i-th hole.
Here, the operation of randomly choosing a point from the interior of a circle of radius R is defined as follows:
- Pick two real numbers x and y independently according to uniform distribution on [−R,R].
- If x2+y2≤R2, the point (x,y) is chosen. Otherwise, repeat picking the real numbers x,y until the condition is met.
Constraints
- 2≤N≤100
- |xi|,|yi|≤106(1≤i≤N)
- All given points are pairwise distinct.
- All input values are integers.
Input
Input is given from Standard Input in the following format:
N
x1 y1
:
xN yN
Output
Print N real numbers. The i-th real number must represent the probability that Snuke falls into the i-th hole.
The output will be judged correct when, for all output values, the absolute or relative error is at most 10−5.
Sample Input 1
2
0 0
1 1
Sample Output 1
0.5
0.5
If Ringo put Snuke in the region x+y≤1, Snuke will fall into the first hole. The probability of this happening is very close to 0.5. Otherwise, Snuke will fall into the second hole, the probability of which happening is also very close to 0.5.
Sample Input 2
5
0 0
2 8
4 5
2 6
3 10
Sample Output 2
0.43160120892732328768
0.03480224363653196956
0.13880483535586193855
0.00000000000000000000
0.39479171208028279727
这个题就是一个很简单的几何
#include<bits/stdc++.h>
using namespace std;
const double pi=acos(-.);
const int N=;
int n,x[N],y[N];
double p[N+N];
signed main()
{
cin>>n;
for(int i=; i<n; i++)cin>>x[i]>>y[i];
for(int i=; i<n; i++)
{
int tot=;
for(int j=; j<n; j++)
if(i!=j)p[tot++]=atan2(y[j]-y[i],x[j]-x[i]);
sort(p,p+tot);
for(int j=; j<tot; j++)p[j+tot]=p[j]+*pi;
double ans=;
for(int j=; j<tot; j++)ans=max(ans,pi-p[j+tot-]+p[j]);
printf("%.8f\n",ans//pi);
}
return ;
}
C - Tiling
Time limit : 2sec / Memory limit : 256MB
Score : 900 points
Problem Statement
Takahashi has an N×M grid, with N horizontal rows and M vertical columns. Determine if we can place A 1×2 tiles (1 vertical, 2horizontal) and B 2×1 tiles (2 vertical, 1 horizontal) satisfying the following conditions, and construct one arrangement of the tiles if it is possible:
- All the tiles must be placed on the grid.
- Tiles must not stick out of the grid, and no two different tiles may intersect.
- Neither the grid nor the tiles may be rotated.
- Every tile completely covers exactly two squares.
Constraints
- 1≤N,M≤1000
- 0≤A,B≤500000
- N, M, A and B are integers.
Input
Input is given from Standard Input in the following format:
N M A B
Output
If it is impossible to place all the tiles, print NO. Otherwise, print the following:
YES
c11…c1M
:
cN1…cNM
Here, cij must be one of the following characters: ., <, >, ^ and v. Represent an arrangement by using each of these characters as follows:
- When cij is
., it indicates that the square at the i-th row and j-th column is empty; - When cij is
<, it indicates that the square at the i-th row and j-th column is covered by the left half of a 1×2 tile; - When cij is
>, it indicates that the square at the i-th row and j-th column is covered by the right half of a 1×2 tile; - When cij is
^, it indicates that the square at the i-th row and j-th column is covered by the top half of a 2×1 tile; - When cij is
v, it indicates that the square at the i-th row and j-th column is covered by the bottom half of a 2×1 tile.
Sample Input 1
3 4 4 2
Sample Output 1
YES
<><>
^<>^
v<>v
This is one example of a way to place four 1×2 tiles and three 2×1 tiles on a 3×4 grid.
Sample Input 2
4 5 5 3
Sample Output 2
YES
<>..^
^.<>v
v<>.^
<><>v
Sample Input 3
7 9 20 20
Sample Output 3
NO
C这是要大力模拟?没有想到好做法
抄了一个思路
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int m,n,a,b;
char c[][];
int main()
{
scanf("%d%d%d%d",&m,&n,&a,&b);
for(int i=; i<=m; i++)
for(int j=; j<=n; j++)c[i][j]='.';
if(n&)
{
for(int i=; i<m&&b; i+=)
c[i][n]='^',c[i+][n]='v',b--;
}
if((b&)&&(m&)&&n>&&m>)
c[m-][n-]='^',c[m][n-]='v',b--;
for(int i=; i<m; i++)
for (int j=; j<=n-(n&)&&b; j++)
if(c[i][j]=='.'&&c[i+][j]=='.')
c[i][j]='^',c[i+][j]='v',b--;
for(int i=; i<=m; i++)
for(int j=; j<n&&a; j++)
if(c[i][j]=='.'&&c[i][j+]=='.')
c[i][j]='<',c[i][j+]='>',a--;
if(a||b)
puts("NO");
else
{
puts("YES");
for(int i=; i<=m; i++)printf("%s\n",c[i]+);
}
return ;
}
D - Reversed LCS
Time limit : 2sec / Memory limit : 256MB
Score : 900 points
Problem Statement
Takahashi has decided to give a string to his mother.
The value of a string T is the length of the longest common subsequence of T and T', where T' is the string obtained by reversing T. That is, the value is the longest length of the following two strings that are equal: a subsequence of T (possibly non-contiguous), and a subsequence of T' (possibly non-contiguous).
Takahashi has a string S. He wants to give her mother a string of the highest possible value, so he would like to change at most Kcharacters in S to any other characters in order to obtain a string of the highest possible value. Find the highest possible value achievable.
Constraints
- 1≤|S|≤300
- 0≤K≤|S|
- S consists of lowercase English letters.
- K is an integer.
Input
Input is given from Standard Input in the following format:
S
K
Output
Print the highest possible value achievable.
Sample Input 1
abcabcabc
1
Sample Output 1
7
Changing the first character to c results in cbcabcabc. Let this tring be T, then one longest common subsequence of T and T' is cbabcbc, whose length is 7.
Sample Input 2
atcodergrandcontest
3
Sample Output 2
15
一个字符串S,你可以改变其中k个字母,使其变为T,T和T的反转串T' 最长公共子串长度
相当于再求回文串,我改变or不改变然后向内向左扩展就可以了,记忆化搜索避免超时
#include<bits/stdc++.h>
using namespace std;
const int N=;
string s;
int dp[][][],K;
int dfs(int l,int r,int x)
{
if(r<l)return ;
if(l==r)return ;
if(dp[l][r][x]!=-)return dp[l][r][x];//记忆化思想,减少搜索次数
int t=max(dfs(l+,r,x),dfs(l,r-,x));//向左或右扩展一个
if(s[l]==s[r])t=max(t,dfs(l+,r-,x)+);//相等,进行扩展
else if(x)t=max(t,dfs(l+,r-,x-)+);//改变一个字符,向内扩展
return dp[l][r][x]=t;
}
int main()
{
cin>>s>>K;
memset(dp,-,sizeof(dp));
cout<<dfs(,s.size()-,K)<<endl;
return ;
}
E - Ball Eat Chameleons
Time limit : 2sec / Memory limit : 256MB
Score : 1200 points
Problem Statement
In Republic of AtCoder, Snuke Chameleons (Family: Chamaeleonidae, Genus: Bartaberia) are very popular pets. Ringo keeps NSnuke Chameleons in a cage.
A Snuke Chameleon that has not eaten anything is blue. It changes its color according to the following rules:
- A Snuke Chameleon that is blue will change its color to red when the number of red balls it has eaten becomes strictly larger than the number of blue balls it has eaten.
- A Snuke Chameleon that is red will change its color to blue when the number of blue balls it has eaten becomes strictly larger than the number of red balls it has eaten.
Initially, every Snuke Chameleon had not eaten anything. Ringo fed them by repeating the following process K times:
- Grab either a red ball or a blue ball.
- Throw that ball into the cage. Then, one of the chameleons eats it.
After Ringo threw in K balls, all the chameleons were red. We are interested in the possible ways Ringo could have thrown in Kballs. How many such ways are there? Find the count modulo 998244353. Here, two ways to throw in balls are considered different when there exists i such that the color of the ball that are thrown in the i-th throw is different.
Constraints
- 1≤N,K≤5×105
- N and K are integers.
Input
Input is given from Standard Input in the following format:
N K
Output
Print the possible ways Ringo could have thrown in K balls, modulo 998244353.
Sample Input 1
2 4
Sample Output 1
7
We will use R to represent a red ball, and B to represent a blue ball. There are seven ways to throw in balls that satisfy the condition: BRRR, RBRB, RBRR, RRBB, RRBR, RRRB and RRRR.
Sample Input 2
3 7
Sample Output 2
57
Sample Input 3
8 3
Sample Output 3
0
Sample Input 4
8 10
Sample Output 4
46
Sample Input 5
123456 234567
Sample Output 5
857617983
给你n,k
AtCoder Grand Contest 021的更多相关文章
- AtCoder Grand Contest 021完整题解
提示:如果公式挂了请多刷新几次,MathJex的公式渲染速度并不是那么理想. 总的来说,还是自己太弱了啊.只做了T1,还WA了两发.今天还有一场CodeForces,晚上0点qwq... 题解还是要好 ...
- Atcoder Grand Contest 021 F - Trinity(dp+NTT)
Atcoder 题面传送门 & 洛谷题面传送门 首先我们考虑设 \(dp_{i,j}\) 表示对于一个 \(i\times j\) 的网格,其每行都至少有一个黑格的合法的三元组 \((A,B, ...
- AtCoder Grand Contest 021 D - Reversed LCS
Description Takahashi has decided to give a string to his mother. The value of a string T is the len ...
- AtCoder Grand Contest 021题解
传送门 \(A\) 咕咕 ll n,res;bool fl; int main(){ scanf("%lld",&n),fl=1; while(n>9)res+=9, ...
- AtCoder Grand Contest 012
AtCoder Grand Contest 012 A - AtCoder Group Contest 翻译 有\(3n\)个人,每一个人有一个强大值(看我的假翻译),每三个人可以分成一组,一组的强大 ...
- AtCoder Grand Contest 011
AtCoder Grand Contest 011 upd:这篇咕了好久,前面几题是三周以前写的... AtCoder Grand Contest 011 A - Airport Bus 翻译 有\( ...
- AtCoder Grand Contest 031 简要题解
AtCoder Grand Contest 031 Atcoder A - Colorful Subsequence description 求\(s\)中本质不同子序列的个数模\(10^9+7\). ...
- AtCoder Grand Contest 010
AtCoder Grand Contest 010 A - Addition 翻译 黑板上写了\(n\)个正整数,每次会擦去两个奇偶性相同的数,然后把他们的和写会到黑板上,问最终能否只剩下一个数. 题 ...
- AtCoder Grand Contest 009
AtCoder Grand Contest 009 A - Multiple Array 翻译 见洛谷 题解 从后往前考虑. #include<iostream> #include< ...
随机推荐
- MySQL如何找出未提交事务信息
前阵子,我写了一篇博客"ORACLE中能否找到未提交事务的SQL语句", 那么在MySQL数据库中,我们能否找出未提交事务执行的SQL语句或未提交事务的相关信息呢? 实验验证了一下 ...
- [论文理解] Connectionist Text Proposal Network
Connectionist Text Proposal Network 简介 CTPN是通过VGG16后在特征图上采用3*3窗口进行滑窗,采用与RPN类似的anchor机制,固定width而只预测an ...
- [手势识别] CNN + OpenCV 手势识别记录
这几天没事,想着再学点一些视觉识别方向的东西,因为之前做了验证码识别,有了机器学习的信心,因此这次打算做个手势识别,参考了很多网上的图像处理方式,中间也遇到了很多问题,最终算是做出来了吧. 1.训练集 ...
- leetcode 179. Largest Number 、剑指offer33 把数组排成最小的数
这两个题几乎是一样的,只是leetcode的题是排成最大的数,剑指的题是排成最小的 179. Largest Number a.需要将数组的数转换成字符串,然后再根据大小排序,这里使用to_strin ...
- BigDecimal and double
BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数 ...
- echarts实现仪表盘(自己动起来,没有后端,顺便重温math.random
let a = parseInt(Math.random() * (2 + 1), 10); let arr = []; arr.push(res[a]); let option = { toolti ...
- VB6 代码编辑页面添加支持滚轮模式
VB6 中的代码编辑页面默认是不支持滚轮模式的,这让在编辑代码时的体验很是不爽. 但在64位win10系统进行加载配置时,可能会出现问题,可用如下方法解决: http://download.micro ...
- MYSQL不能显示中文字,显示错误“ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89'”
或者建表时带上编码utf8 CREATE TABLE `students`( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR( ...
- Python3学习了解日记
# 单行注释 ''' 多行注释 ''' """ 这个也是多行注释 """ ''' 声明变量 Python 中的变量不需要声明.每个变量在使用 ...
- python将excel数据写入数据库,或从库中读取出来
首先介绍一下SQL数据库的一些基本操作: 1创建 2删除 3写入 4更新(修改) 5条件选择 有了以上基本操作,就可以建立并存储一个简单的数据库了. 放出python调用的代码: 此处是调用dos 操 ...