BestCoder 2nd Anniversary的前两题
Oracle
Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 79 Accepted Submission(s): 41
The
youngest and most beautiful is Psyche, whose admirers, neglecting the
proper worship of the love goddess Venus, instead pray and make
offerings to her. Her father, the king, is desperate to know about her
destiny, so he comes to the Delphi Temple to ask for an oracle.
The oracle is an integer n without leading zeroes.
To
get the meaning, he needs to rearrange the digits and split the number
into <b>two positive integers without leading zeroes</b>,
and their sum should be as large as possible.
Help him to work out the maximum sum. It might be impossible to do that. If so, print `Uncertain`.
For each test case, the single line contains an integer n (1≤n<1010000000).
112
233
1
35
Uncertain
In the first example, it is optimal to split $ 112 $ into $ 21 $ and $ 1 $, and their sum is $ 21 + 1 = 22 $.
In the second example, it is optimal to split $ 233 $ into $ 2 $ and $ 33 $, and their sum is $ 2 + 33 = 35 $.
In the third example, it is impossible to split single digit $ 1 $ into two parts.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
#define N 10000005
char str[N];
char result[N];
char b[];
int cmp(char a,char b)
{
return a>b;
}
void reverse( char *s ) /*将字符串逆置*/
{
int length;
int i = ;
char temp;
length = strlen( s );
while( i < length - i - )
{
temp = s[i];
s[i] = s[length - i - ];
s[length - i - ] = temp;
i++;
}
}
void AddBigNum( char* s1, char* s2, char* result )
{
int len1 = strlen( s1 );
int len2 = strlen( s2 );
int acc = , temp, i; /*acc为进位标记*/
if( s1 == NULL || s2 == NULL || result == NULL )
{
return;
}
reverse( s1 );
reverse( s2 );
for( i = ; i < len1 && i < len2; i++ )
{
temp = s1[i] - '' + s2[i] - '' + acc; /*计算每位的实际和*/
result[i] = temp % + ''; /*通过求余数来确定每位的最终值*/
if( temp >= ) /*通过这个if..else..条件来判断是否有进位,并设置进位值*/
acc = ;
else
acc = ;
}
if( i < len1 ) /*两个加数位数不同*/
{
for( ; i < len1; i++ )
{
temp = s1[i] - '' + acc; /*依旧要考虑进位,比如9999 + 1的情况*/
result[i] = temp % + '';
if( temp >= )
acc = ;
else
acc = ;
}
}
if( i < len2 )
{
for( ; i < len2; i++ )
{
temp = s2[i] - '' + acc;
result[i] = temp % + '';
if( temp >= )
acc = ;
else
acc = ;
}
}
if( acc == ) /*考虑如:123 + 911 = 1034的情况,如果不增加这个条件会得到结果为034,进位被舍弃*/
result[i++] = '';
result[i] = '\0';
reverse( result );
}
int main()
{
int tcase;
scanf("%d",&tcase);
while(tcase--)
{
scanf("%s",str);
int len = strlen(str);
sort(str,str+len,cmp);
if(len==)
{
printf("Uncertain\n");
}
else
{
bool flag = true;
int ans = ;
for(int i=len-; i>=; i--)
{
if(str[i]!='')
{
ans = i;
break;
}
}
if(ans==)
{
printf("Uncertain\n");
continue;
}
b[] = str[ans];
int id = ;
for(int i=; i<len; i++)
{
if(i==ans) continue;
str[id++] = str[i];
}
str[id]='\0';
AddBigNum(str,b,result);
printf("%s\n",result);
}
}
return ;
}
Arrange
Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 74 Accepted Submission(s): 30
This has drawn the fury of his mother, Venus. The goddess then throws before Psyche a great mass of mixed crops.
There are n heaps of crops in total, numbered from 1 to n.
Psyche needs to arrange them in a certain order, assume crops on the i-th position is Ai.
She is given some information about the final order of the crops:
1. the minimum value of A1,A2,...,Ai is Bi.
2. the maximum value of A1,A2,...,Ai is Ci.
She wants to know the number of valid permutations. As this number can be large, output it modulo 998244353.
Note that if there is no valid permutation, the answer is 0.
For each test case, the first line of input contains single integer n (1≤n≤105).
The second line contains n integers, the i-th integer denotes Bi (1≤Bi≤n).
The third line contains n integers, the i-th integer denotes Ci (1≤Ci≤n).
3
2 1 1
2 2 3
5
5 4 3 2 1
1 2 3 4 5
0
In the first example, there is only one valid permutation (2,1,3) .
In the second example, it is obvious that there is no valid permutation.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
const long long mod = ;
const int N = ;
int b[N],c[N];
long long dp[N];
int main()
{
int tcase;
scanf("%d",&tcase);
while(tcase--)
{
int n;
scanf("%d",&n);
int MIN = ;
int MAX = -;
bool flag = true;
for(int i=;i<=n;i++){
scanf("%d",&b[i]);
if(b[i]<||b[i]>n) flag = false;
if(b[i]>MIN) flag = false;
MIN = min(MIN,b[i]);
}
for(int i=;i<=n;i++){
scanf("%d",&c[i]);
if(c[i]<MAX) flag = false;
if(c[i]<||c[i]>n) flag = false;
MAX = max(MAX,c[i]);
if(c[i]<b[i]) flag = false;
}
if(!flag||c[]!=b[]) printf("0\n");
else{
memset(dp,,sizeof(dp));
dp[] = ;
int num = ;
for(int i=;i<=n;i++){
if(c[i]==c[i-]&&b[i-]==b[i]) {
dp[i] = dp[i-]*(c[i]-b[i]-num+)%mod;
}
else if(b[i]<b[i-]&&c[i-]==c[i]||b[i]==b[i-]&&c[i-]<c[i]){
dp[i] = dp[i-];
}
num++;
}
printf("%I64d\n",dp[n]);
}
}
return ;
}
BestCoder 2nd Anniversary的前两题的更多相关文章
- BestCoder 2nd Anniversary
A题 Oracle http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=703&pid=1001 大数相加: ...
- Educational Codeforces Round 58 (Rated for Div. 2) (前两题题解)
感慨 这次比较昏迷最近算法有点飘,都在玩pygame...做出第一题让人hack了,第二题还昏迷想错了 A Minimum Integer(数学) 水题,上来就能做出来但是让人hack成了tle,所以 ...
- 牛客 2020.10.20 TG 前两题
T1 GCD 数学水题... 对于每个数,如果这个数有两个及以上的质因数的话,它所有除 \(1\) 之外的因数求 \(GCD\) 的值一定为 \(1\).那么判断是否是质数或质数的次方即可(质数除 \ ...
- hdu 5720 BestCoder 2nd Anniversary Wool 推理+一维区间的并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5720 题意:有n(n <= 105)个数 ,每个数小于等于 1018:问在给定的[L,R]区间中 ...
- BestCoder 2nd Anniversary 1001 Oracle
找到最小的非零数字拆开来相加. 高精度. #include <iostream> #include <cstdio> #include <cstring> #inc ...
- hihocoder 前两题思路
1800 : 玩具设计师 二维前缀和的写法有很多,最常见的是s[x-1][y]+s[x][y-1]-s[x-1][y-1]+a[x][y]; 涉及二维矩阵求和,联想前缀和,求>=指定面积的最大耐 ...
- BestCoder 2nd Anniversary/HDU 5719 姿势
Arrange Accepts: 221 Submissions: 1401 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/2 ...
- BestCoder 2nd Anniversary/HDU 5718 高精度 模拟
Oracle Accepts: 599 Submissions: 2576 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/26 ...
- hdu 5719 BestCoder 2nd Anniversary B Arrange 简单计数问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5719 题意:一个数列为1~N的排列,给定mn[1...n]和mx[1...n],问有符合的排列数为多少 ...
随机推荐
- [bzoj1999][noip2007]Core树网的核
好久没写题解了.这题不算太水就写一下题解. 话说回来,虽然不水但是挺裸.可以说题意即一半题解了. 我猜粘了题面也没有人去看的,所以直接人话题意了. 给一棵树,点数1e6,(当年noip的n当然是只有3 ...
- Eclipse 创建 Java 项目---Eclipse教程第08课
打开新建 Java 项目向导 通过新建 Java 项目向导可以很容易的创建 Java 项目.打开向导的途径有: 通过点击 "File" 菜单然后选择 New > Java P ...
- 《Cracking the Coding Interview》——第18章:难题——题目10
2014-04-29 04:22 题目:给定一堆长度都相等的单词,和起点.终点两个单词,请从这堆单词中寻找一条变换路径,把起点词变成终点词,要求每次变换只能改一个字母. 解法:Leetcode中有Wo ...
- sentry
https://docs.sentry.io/quickstart/?platform=javascript
- java单例模式(类只能创建唯一对象)
//饿汉式 class Single { private static final Single s= new Single(); private Single(){} public static S ...
- JavaScript里面之dom操作
1.dom之选择元素 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- kvm搭建完成了,那么问题来了,到底是什么原理
kvm中到底是怎么模拟的CPU和内存? 收到了大量的 这里有一个裸的调用kvm接口的实例,超赞: http://www.cnblogs.com/Bozh/p/5753379.html 使用kvm的AP ...
- Redis String
Redis String Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME ...
- spring in action 学习笔记十三:SpEL语言(Spring Expression Language)
SpEl语言的目的之一是防止注入外部属性的代码硬代码化.如@Value("#{student.name}")这个注解的意思是把Student类的name的属性值注入进去.其中stu ...
- 如何在Windows2008中禁用IPv6
我自己修复此问题 更改 DisabledComponents 注册表值 您可以通过将DisabledComponents注册表值的主机上禁用 IPv6.DisabledComponents注册表值会影 ...