链接:https://cn.vjudge.net/contest/296332#overview
A.
阅读理解题。找出引用数大于h的至少有h篇的论文那个最大的h数。(我晕了)
比如 第二个样例 2 1(下标0) 2(下标1) 3(下标2)
其中下标表示引用数,而ai表示论文的数论,3(下标2)表示引用了2页的论文有3篇。
这里引用数大于2的为3篇,引用数大于1的为5篇,引用数大于0的为6篇。
#include
#include
#include
#include
using namespace std;
long long a[200005];
int main(){
int n;
while(~scanf("%d",&n)){
for(int i = 0;i<=n;++i) scanf("%lld",&a[i]);
for(int i = n-1;i>=0;--i) a[i] += a[i+1];
for(int i = n;i>=0;--i){
if(a[i] >= i){
cout<
F.
这题比较要求精度判断,直接相除会错。
#include
#include
#include
#include
#include
using namespace std;
struct node{
long double a,b,c;
int id;
}a[1005];
/*bool cmp(node a,node b){
if(fabs((a.a+a.b)*(b.a+b.b+b.c) - (b.a+b.b)*(a.a+a.b+a.c)) < 1)
return a.id < b.id;
return (a.a+a.b)*(b.a+b.b+b.c) < (b.a+b.b)/(a.a+a.b+a.c);
}*/
bool cmp(node a,node b){
long double aa=(a.a+a.b)*(b.a+b.b+b.c);
long double bb=(b.a+b.b)*(a.a+a.b+a.c);
//cout<>a[i].a>>a[i].b>>a[i].c;
//cout<<(a[i].a+a[i].b)*1.0/(a[i].a+a[i].b+a[i].c)<
K 2018
题意。给定a,b,c,d,让 a<=x<=b,c<=y<=d,使x*y是2018倍数,求有多少组x,y。
因为2018的因数只有1,2,1009,2018,所以个数 = 2018个数 + 1009个数*偶数个数 - 重复个数。
#include
#include
#include
#include
using namespace std;
int main(){
long long sum,l1,l2,r1,r2,p1,p2,t1,t2,o1,o2; //p 2018倍数 t 1009倍数 o 偶数个数
while(~scanf("%lld%lld%lld%lld",&l1,&r1,&l2,&r2)){
sum = 0;
p1 = r1/2018 - l1/2018;
if(l1 % 2018 == 0) ++p1;
p2 = r2/2018 - l2/2018;
if(l2 % 2018 == 0) ++p2;
//cout<
G.
题意,给定2个只包含'a','b','c',字符串A,B,可以在A上任意增加或删除"aa","bb","abab",问能否让a变为b。
因为字符串中的c是不能变的,所以以字符串的’c'为间隔检查字符串中的子字符串,由样例一得知相邻的ab是可以任意调换顺序的,所以可以将子字符串全部‘a’移到最左边,‘b'移到最右边,然后删除aa,bb,那么可以得知如果a,b数量奇偶性不想听则为"No”
#include
#include
#include
#include
using namespace std;
string a,b;
int main(){
int cn1,cn2,an1,an2,bn1,bn2;
while(cin>>a>>b){
cn1 = cn2 = 0;
a += "c";
b += "c";
for(int i = 0;i