AIM Tech Round 5 (codeforces上题目编号是1028)(A-E)

---完全被这次比赛打击,自己真的很渣---

战况

  • 依旧3题选手
  • 被构造题坑得好惨
  • 稍稍涨了rating,希望下次比赛好好准备进入蓝名,就可以被div1虐了
  • 题目看题解也很难懂呀

A. Find Square

  • 水题,找出矩形得中心,可以略过

B. Unnatural Conditions

题意:

  • s(A)代表数字A各个数位之和即s(1234)=1+2+3+4=10
  • 给出 m,n,需要求出满足条件A,B;s(A)>=m,s(B)>=m,s(A+B)<=n
  • 自己也是想了一会才知道是构造题目(毕竟没经验),但我一直蜜汁自信构造这s(A)=m,s(B)=m但min(s(A+B))的情况
  • 实际上s(A),s(B)的大小和s(A+B)完全没有相关性,s(A),s(B)都可以无限大,s(A+B)最小可以是1
  • so 就是这样呀:
  • A=55555555555555555555555555555555555
  • B=44444444444444444444444444444444445
  • 这样一想已变成水题(连读入都不需要读了),代码略

C. Rectangles

题意

  • 给k个矩形,找出任意(k-1)个矩形相交区域的点(即相交区域任一点即可)
  • 程序的判定大概是这样应该是算出所有(k-1)个相较矩形的并,然后判定我们输出的点是否在这些区域内
  • 我的做法不同于标程,我是按照之前比赛的求线段(k-1)交的题目方法做的
  • 将其看作两维情况,同时抽掉一个矩形,观察影响x轴线段并和y轴线段并,如果还有区间,输出即可
  • 我的程序时间复杂度是O(nlogn)(需要排序),但其实可以优化因为只需有的最小值,次小值,最大值和次大值,这样就是O(n)
  • 标答的做法是采用前缀最大预处理前缀最大并区域和后缀最大并区域(真的是很聪明的方法)
  • 这里只给出我的做法

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=140000;
int xl[maxn];
int xr[maxn],yd[maxn],yu[maxn];
int tmpx1[maxn],tmpx2[maxn],tmpy1[maxn],tmpy2[maxn];
bool help(int x,int y,int x1,int x2,int y1,int y2){
return (x>=x1&&x<=x2)&&(y>=y1&&y<=y2);
}
int main(){
int x1,y1,x2,y3;
int n;
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d %d %d %d",&xl[i],&yd[i],&xr[i],&yu[i]);
tmpx1[i]=xl[i];tmpx2[i]=xr[i];tmpy1[i]=yd[i];tmpy2[i]=yu[i];
}
//printf("db raed over\n");
sort(xl+1,xl+1+n);
sort(xr+1,xr+1+n);
int tl=xl[n],tr=xr[1];
sort(yd+1,yd+1+n);
sort(yu+1,yu+1+n);
int td=yd[n],tu=yu[1];
for(int i=1;i<=n;i++){
int tl=xl[n],tr=xr[1];
int td=yd[n],tu=yu[1];
//printf("db1:%d %d %d %d %d\n",i,tl,tr,td,tu);
if(tmpx1[i]==xl[n]) tl=xl[n-1];
if(tmpx2[i]==xr[1]) tr=xr[2];
if(tmpy1[i]==yd[n]) td=yd[n-1];
if(tmpy2[i]==yu[1]) tu=yu[2];
//printf("db2:%d %d %d %d %d\n",i,tl,tr,td,tu);
if(tr>=tl&&tu>=td){
//printf("db:%d %d %d %d %d\n",i,tl,tr,td,tu);
printf("%d %d\n",tl,td);
return 0;
}
}
return 0;
}

D. Order book

题意

  • 个人感觉题目真的很毒瘤,题意很长而且难懂,所以比赛时果断放弃
  • 一个本本里记录着 sell mi;buy ni 这样两种形式的内容;每次达成一次交易是min(mi) max(ni),然后删除这样两项
  • 现在给出add m;accept n;表示加入某项(并不知是sell or buy),accept n 代表一次交易(可能是buy n也可能是sell n)
  • 现在求有多少可能情况(很毒瘤吧)
  • 可以分析每次accept就能确定很多情况,所以维护min(sell)和max(buy)
  • 如果在max(buy)-min(sell)区间内则情况数翻倍,并且更新min(sell) max(buy) 删除accept的元素
  • 最终剩下的Min(sell) max(buy)的区间长度就是情况数另一个因子(可以枚举sell的位置,比sell大的都是sell)

代码如下

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n;
ll modv=1e9+7;
ll p;
char str[10];
set<ll> s;
ll lo=-1e9,hi=1e9;
ll ans=1;
int main(){
scanf("%lld",&n);
s.insert(lo);s.insert(hi);
for(ll i=1;i<=n;i++){
scanf("%s %lld",str,&p);
if(str[1]=='D'){
s.insert(p);
}
else{
if(p<lo||p>hi){printf("0\n");return 0;}
if(p>lo&&p<hi){
ans=(ans*2)%modv;
}
auto it=s.find(p);
lo=*prev(it);
hi=*next(it);
s.erase(it);
} }
int res=0;
for(auto it=s.find(lo);it!=s.find(hi);it++){
res++;
}
printf("%lld\n",(res*ans)%modv);
return 0;
}

E. Restore Array(毒瘤构造题,不过很多人都构造出来了,是我太渣,还是自己见识太少)

题意

  • 数组 a[n]是由b[n] 通过a[i]=b[i]%bi+1得到的
  • 试根据a[n]求得b[n]
  • 构造题,没有唯一解,需判定解的存在性;大概思想是根据差项得到a[i],所以b[i]是某种形式的前缀和或者后缀和(注意足够大)
  • 作为基准(起点)的应该是a[i]==max&&a[i]>a[i-1]

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=200005;
ll a[N];
ll b[N];
int mod(int a,int p){
if(a%p==0) return p;
else return a%p;
}
int main(){
ll n;
cin>>n;
ll minv=INT_MAX,maxv=INT_MIN;
for(ll i=1;i<=n;i++){
scanf("%d",a+i);
minv=min(a[i],minv);
maxv=max(a[i],maxv);
}
if(minv==maxv){
//maybe No
if(minv==0){
//construct same
printf("Yes\n");
for(int i=1;i<=n;i++){
printf("%lld ",(ll)1);
}
}
else{
printf("No\n");
}
}
else{
int maxindex=-1;
a[0]=a[n];
for(ll i=1;i<=n;i++){
if(a[i]==maxv&&a[i-1]<maxv){maxindex=i;break;}
}
b[maxindex]=a[maxindex];
//int lo=(maxindex-1+n)%n;
int lo=mod(maxindex-1+n,n);
b[lo]=a[lo]+maxv*2;
//cout<<lo<<b[lo]<<endl;
for(int i=n-2;i>=1;i--){
//b[(i+maxindex)%n]=b[(i+1+maxindex)%n]+a[(i+maxindex)%n];
b[mod(i+maxindex,n)]=b[mod(i+1+maxindex,n)]+a[mod(i+maxindex,n)];
}
printf("Yes\n");
for(int i=1;i<=n;i++){
printf("%lld ",b[i]);
} }
return 0;
}

求下一次蓝名啊,我要打div1!!!!

AIM Tech Round 5 1028cf(A-E)的更多相关文章

  1. codeforce AIM tech Round 4 div 2 B rectangles

    2017-08-25 15:32:14 writer:pprp 题目: B. Rectangles time limit per test 1 second memory limit per test ...

  2. AIM Tech Round (Div. 1) D. Birthday 数学 暴力

    D. Birthday 题目连接: http://www.codeforces.com/contest/623/problem/D Description A MIPT student named M ...

  3. AIM Tech Round 3 (Div. 2)

    #include <iostream> using namespace std; ]; int main() { int n, b, d; cin >> n >> ...

  4. AIM Tech Round 3 (Div. 2) A B C D

    虽然打的时候是深夜但是状态比较好 但还是犯了好多错误..加分场愣是打成了降分场 ABC都比较水 一会敲完去看D 很快的就想出了求0和1个数的办法 然后一直wa在第四组..快结束的时候B因为低级错误被h ...

  5. AIM Tech Round 3 (Div. 2) B

    Description Vasya takes part in the orienteering competition. There are n checkpoints located along ...

  6. AIM Tech Round 3 (Div. 2) A

    Description Kolya is going to make fresh orange juice. He has n oranges of sizes a1, a2, ..., an. Ko ...

  7. AIM Tech Round (Div. 2) D. Array GCD dp

    D. Array GCD 题目连接: http://codeforces.com/contest/624/problem/D Description You are given array ai of ...

  8. AIM Tech Round (Div. 2) C. Graph and String 二分图染色

    C. Graph and String 题目连接: http://codeforces.com/contest/624/problem/C Description One day student Va ...

  9. AIM Tech Round (Div. 2) B. Making a String 贪心

    B. Making a String 题目连接: http://codeforces.com/contest/624/problem/B Description You are given an al ...

随机推荐

  1. [IOI2011]Race $O(nlog^{2}n)$ 做法

    这个应该还不是正解,明天看一下正解到底是什么... Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in&qu ...

  2. java中String和int的互相转化

    1. String 转 int 方式1:Integer.parseInt(); 方式2: Integer.valueOf(myStr).intValue(); 2.  int 转String 方式1: ...

  3. ThinkPHP3.1.3分表状态时候的自动验证的代码BUG

    问题描述 ThinkPHP3.1.3 当使用TP的分库分表后 有些地方需要使用Model自动验证create,当验证唯一性unique会出现BUG, 具体描述 因为自动验证检测唯一性会使用隐式的使用f ...

  4. matplotlib 显示两张图片,折线图 和 scipy

    显示两张图片的代码: import numpy as np from scipy.misc import imread, imsave, imresize import matplotlib.pypl ...

  5. 参数化取值策略Sequential

    1.Sequential+Each iteration(顺序方式+每次迭代更新取值),设置Run—Logic中action循环迭代11次,并运行以上脚本,结果如下:     2.Sequential+ ...

  6. Strtus配置Tomcat出现问题

    在使用 eclipse 过程中,如果你加入了某些自定义的框架(比如 struts)后,在启动 services 后, 控制台出现一片红色的字样,表明有问题.这时仔细查看 eclipse 控制台信息, ...

  7. spring cloud 中Actuator不显示更多信息的处理方式

    spring cloud 中Actuator不显示更多信息的处理方式 直接咨询了周大立,他说 management.security.enabled = false 就可以了: 学习了:http:// ...

  8. mysql Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)

    [现象说明] C/S程序远程訪问正常,本地訪问报下面异常 MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to h ...

  9. jQuery中实现自己定义方法的扩展

    JQuery包装器提供了大量的方法.能够再页面中直接使用.可是.没有 不论什么一个库能够满足全部的需求.所以.JQuery库提供了丰富的扩展功能 .以禁用一组表单元素为例.看看怎么简单有效的在JQue ...

  10. HDOJ 2647 Reward 【逆拓扑排序+分层】

    题意:每一个人的基础工资是888. 因为一部分人要显示自己水平比較高,要求发的工资要比其它人中的一个人多.问你能不能满足他们的要求,假设能的话终于一共要发多少钱,假设不能就输出-1. 策略:拓扑排序. ...