Codeforces Round #169 (Div. 2) A水 B C区间更新 D 思路
2 seconds
256 megabytes
standard input
standard output
Having written another programming contest, three Rabbits decided to grab some lunch. The coach gave the team exactly k time units for the lunch break.
The Rabbits have a list of n restaurants to lunch in: the i-th restaurant is characterized by two integers fi and ti. Value ti shows the time the Rabbits need to lunch in the i-th restaurant. If time ti exceeds the time k that the coach has given for the lunch break, then the Rabbits' joy from lunching in this restaurant will equal fi - (ti - k). Otherwise, the Rabbits get exactly fi units of joy.
Your task is to find the value of the maximum joy the Rabbits can get from the lunch, depending on the restaurant. The Rabbits must choose exactly one restaurant to lunch in. Note that the joy value isn't necessarily a positive value.
The first line contains two space-separated integers — n (1 ≤ n ≤ 104) and k (1 ≤ k ≤ 109) — the number of restaurants in the Rabbits' list and the time the coach has given them to lunch, correspondingly. Each of the next n lines contains two space-separated integers — fi (1 ≤ fi ≤ 109) and ti (1 ≤ ti ≤ 109) — the characteristics of the i-th restaurant.
In a single line print a single integer — the maximum joy value that the Rabbits will get from the lunch.
2 5
3 3
4 5
4
4 6
5 8
3 6
2 3
2 2
3
1 5
1 7
-1
题意:水
题解:模拟
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
#include <map>
#define ll __int64
#define mod 1000000007
#define dazhi 2147483647
using namespace std;
ll n,k;
ll a,b;
ll ans=;
int main()
{
ans=-1e10;
scanf("%I64d %I64d",&n,&k);
for(ll i=;i<=n;i++)
{
scanf("%I64d %I64d",&a,&b);
if(b>k)
ans=max(ans,a-(b-k));
else
ans=max(ans,a);
}
printf("%I64d\n",ans);
return ;
}
2 seconds
256 megabytes
standard input
standard output
The Little Girl loves problems on games very much. Here's one of them.
Two players have got a string s, consisting of lowercase English letters. They play a game that is described by the following rules:
- The players move in turns; In one move the player can remove an arbitrary letter from string s.
- If the player before his turn can reorder the letters in string s so as to get a palindrome, this player wins. A palindrome is a string that reads the same both ways (from left to right, and vice versa). For example, string "abba" is a palindrome and string "abc" isn't.
Determine which player will win, provided that both sides play optimally well — the one who moves first or the one who moves second.
The input contains a single line, containing string s (1 ≤ |s| ≤ 103). String s consists of lowercase English letters.
In a single line print word "First" if the first player wins (provided that both players play optimally well). Otherwise, print word "Second". Print the words without the quotes.
aba
First
abca
Second
题意:给你一个字符串 两个人轮流删除一个字符 在删除之前 若重新组合字符的顺序 使得字符串为回文串 则当前选手获胜
题解:因为题目中说明字符串可以重新排列组合 所以只需要判断初始字符串中每个字符出现的次数 统计出现次数为奇数次的字母的个数 为0或为奇数则先手胜
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
#include <map>
#define ll __int64
#define mod 1000000007
#define dazhi 2147483647
using namespace std;
char a[];
map<char,int> mp;
int main()
{
scanf("%s",a);
int len=strlen(a);
for(int i=;i<len;i++)
{
mp[a[i]]++;
}
int ans=;
for(char i='a';i<='z';i++)
{
if(mp[i]%)
ans++;
}
if(ans==||ans%)
printf("First\n");
else
printf("Second\n");
return ;
}
2 seconds
256 megabytes
standard input
standard output
The little girl loves the problems on array queries very much.
One day she came across a rather well-known problem: you've got an array of n elements (the elements of the array are indexed starting from 1); also, there are q queries, each one is defined by a pair of integers li, ri (1 ≤ li ≤ ri ≤ n). You need to find for each query the sum of elements of the array with indexes from li to ri, inclusive.
The little girl found the problem rather boring. She decided to reorder the array elements before replying to the queries in a way that makes the sum of query replies maximum possible. Your task is to find the value of this maximum sum.
The first line contains two space-separated integers n (1 ≤ n ≤ 2·105) and q (1 ≤ q ≤ 2·105) — the number of elements in the array and the number of queries, correspondingly.
The next line contains n space-separated integers ai (1 ≤ ai ≤ 2·105) — the array elements.
Each of the following q lines contains two space-separated integers li and ri (1 ≤ li ≤ ri ≤ n) — the i-th query.
In a single line print a single integer — the maximum sum of query replies after the array elements are reordered.
Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64d specifier.
3 3
5 3 2
1 2
2 3
1 3
25
5 3
5 2 4 1 3
1 5
2 3
2 3
33
题意:给你n个数 q个区间 问你如何排列这n个数 使得q个区间和的和最大 输出这个最大值
题解:统计每个位置在q个区间中出现的次数 升序排列 对于n个数升序排列 相乘求和
可以线段树区间更新单点查询 也可以利用区间更新的姿势。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
#include <map>
#define ll __int64
#define mod 1000000007
#define dazhi 2147483647
using namespace std;
ll n,q;
ll a[];
ll l,r;
ll s[];
ll ans=;
struct node
{
ll w;
}N[];
bool cmp(struct node aa,struct node bb)
{
return aa.w<bb.w;
}
int main()
{
memset(s,,sizeof(s));
scanf("%I64d %I64d",&n,&q);
for(ll i=;i<=n;i++)
scanf("%I64d",&a[i]);
sort(a+,a++n);
for(ll i=;i<=q;i++)
{
scanf("%I64d %I64d",&l,&r);
s[l]++;
s[r+]--;
}
ll exm=;
for(ll i=;i<=n;i++)
{
exm+=s[i];
N[i].w=exm;
}
sort(N+,N++n,cmp);
for(ll i=;i<=n;i++)
ans+=N[i].w*a[i];
printf("%I64d\n",ans);
return ;
}
2 seconds
256 megabytes
standard input
standard output
A little girl loves problems on bitwise operations very much. Here's one of them.
You are given two integers l and r. Let's consider the values of
for all pairs of integers a and b (l ≤ a ≤ b ≤ r). Your task is to find the maximum value among all considered ones.
Expression
means applying bitwise excluding or operation to integers x and y. The given operation exists in all modern programming languages, for example, in languages C++ and Java it is represented as "^", in Pascal — as «xor».
The single line contains space-separated integers l and r (1 ≤ l ≤ r ≤ 1018).
Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64d specifier.
In a single line print a single integer — the maximum value of
for all pairs of integers a, b (l ≤ a ≤ b ≤ r).
1 2
3
8 16
31
1 1
0
题意:给你一个区间 在区间任意选出两个数 输出最大的两数异或和
题解:数据范围最大为2^62 从高位到低位枚举 寻找上下界异或和为1的最高位
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
#include <map>
#define ll __int64
#define mod 1000000007
#define dazhi 2147483647
using namespace std;
ll l,r;
int main()
{
scanf("%I64d %I64d",&l,&r);
if(l==r)
{
printf("0\n");
return ;
}
ll ans=;
ans=(ll)<<;
while(ans&&(ans&l)==(ans&r)) ans>>=;
printf("%I64d\n",ans*-);
return ;
}
Codeforces Round #169 (Div. 2) A水 B C区间更新 D 思路的更多相关文章
- Codeforces Round #419 (Div. 2) A B C 暴力 区间更新技巧 +前缀和 模拟
A. Karen and Morning time limit per test 2 seconds memory limit per test 512 megabytes input standar ...
- Codeforces Round #538 (Div. 2) F 欧拉函数 + 区间修改线段树
https://codeforces.com/contest/1114/problem/F 欧拉函数 + 区间更新线段树 题意 对一个序列(n<=4e5,a[i]<=300)两种操作: 1 ...
- Codeforces Round #365 (Div. 2) A 水
A. Mishka and Game time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- Codeforces Round #404 (Div. 2)(A.水,暴力,B,排序,贪心)
A. Anton and Polyhedrons time limit per test:2 seconds memory limit per test:256 megabytes input:sta ...
- Codeforces Round #408 (Div. 2)(A.水,B,模拟)
A. Buying A House time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...
- Codeforces Round #394 (Div. 2)A水 B暴力 C暴力 D二分 E dfs
A. Dasha and Stairs time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Codeforces Round #337 (Div. 2) A水
A. Pasha and Stick time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- Codeforces Round #316 (Div. 2) A 水
A. Elections time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- Codeforces Round #362 (Div. 2) A 水也挂
A. Pineapple Incident time limit per test 1 second memory limit per test 256 megabytes input standar ...
随机推荐
- (C#)原型模式—深复制与浅复制
1.原型模式 用原型实例指定创建对象的实例,并且通过拷贝这些原型创建新的对象. *原型模式隐藏了创建对象的细节,提高了性能. *浅复制:被复制对象的所有变量都含有与原来对象相同的值,而且所有对其他对象 ...
- 【WXS全局对象】Math
Math对象用于执行数学任务. 属性: 名称 说明 Math.E 代表算术常量 e,即自然对数的底数,其值近似于 2.71828. Math.LN10 就是 loge10,即 10 的自然对数,其值近 ...
- 本地矩阵(Local Matrix)
本地矩阵具有整型的行.列索引值和双精度浮点型的元素值,它存储在单机上.MLlib支持稠密矩阵DenseMatrix和稀疏矩阵Sparse Matrix两种本地矩阵,稠密矩阵将所有元素的值存储在一个列优 ...
- 人脸识别 ArcFace Demo [Windows]
Arcsoft ArcfaceDemo for Windows, VS2013 C++ 使用虹软技术开发完成 使用步骤: 1.下载SDK包,32位Windows平台将五个SDK包里lib中的文件到 ...
- hibernate 异常a different object with the same identifier value was already associated with the session
在使用hibernate的时候发现了一个问题,记录一下解决方案. 前提开启了事务和事务间并无commit,进行两次save,第二次的时候爆出下面的异常a different object with t ...
- str和repr
在Python2.6和Python3.0以及更早的版本中,在交互式模式下的输出本质上是使用repr,因此对于一些浮点数运算,会显示很多位: 4 / 5.0 #0.8000000000000004 但是 ...
- Spring Security 快速了解
在Spring Security之前 我曾经使用 Interceptor 实现了一个简单网站Demo的登录拦截和Session处理工作,虽然能够实现相应的功能,但是无疑Spring Security提 ...
- 算法与数据结构5.1 Just Sort
★实验任务 给定两个序列 a b,序列 a 原先是一个单调递增的正数序列,但是由于某些 原因,使得序列乱序了,并且一些数丢失了(用 0 表示).经过数据恢复后,找 到了正数序列 b ,且序列 a 中 ...
- @ModelAttribute使用详解
1.@ModelAttribute注释方法 例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个control ...
- PagedDataSource数据绑定控件和AspNetPager分页控件结合使用列表分页
1.引用AspNetPager.dll. 2.放置Repeater数据绑定控件. <asp:Repeater ID="Repeater1" runat="serve ...