1479A - Searching Local Minimum 交互,二分

找一个区间[l,r]始终满足a[l+1]>a[l]&&a[r]<a[r+1],然后不断缩小区间当l==r时就找到了答案,二分出mid,然后询问mid和mid+1,如果a[mid]>a[mid+1]则区间[mid+1,r]还是满足条件的,l=mid+1;如果a[mid]<a[mid+1]则区间[l,mid]是满足条件的,r=mid;

#700 (Div. 2)C. Searching Local Minimum(二分的神奇用法+交互)_lwz_159的博客-CSDN博客

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define lowbit(x) ((x)&(-x))
#define int long long
#define pause system("pause")
const int mod=1e9+7;
const int inf=1e18;
const int N = 5e6+100;
const double eps=1e-10;int qpow(int a,int b)
{int res=1;while(b){if(b&1) res=res*a%mod;a=a*a%mod;b>>=1;}return res;
}
int sgn(double x)
{if(fabs(x)<eps) return 0;else if(x<0) return -1;else return 1;
}
int getinv(int a){return qpow(a,mod-2LL);}
int n,a[N];
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);//freopen("in.txt","r",stdin);cin>>n;int l=1,r=n;while(l<r){int mid=l+r>>1;int x,y;cout<<"? "<<mid<<endl;cout.flush();cout<<"? "<<mid+1<<endl;cout.flush();cin>>x>>y;if(x<y) r=mid;else l=mid+1;}cout<<"! "<<l<<endl;pause;return 0;
}

2019 ccpc 哈尔滨 E 拓扑排序

先bfs一遍确定每个点被访问到的次数,然后再按照这个次数来进行拓扑排序就可以得到1操作的那些序列被用了多少次,然后再将序列的数统计出来就可以

组队训练记录(6):2019CCPC哈尔滨_工口发动机的博客-CSDN博客

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define lowbit(x) ((x)&(-x))
//#define int long long
#define ll long long
#define pause system("pause")
const int mod=998244353;
const int inf=1e18;
const int N = 2e6+100;
const double eps=1e-10;int qpow(int a,int b)
{int res=1;while(b){if(b&1) res=res*a%mod;a=a*a%mod;b>>=1;}return res;
}
int sgn(double x)
{if(fabs(x)<eps) return 0;else if(x<0) return -1;else return 1;
}
int getinv(int a){return qpow(a,mod-2LL);}
int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
int head[N],cnt;
struct Edge
{int next,to;
}e[N];
void addedge(int from,int to)
{e[++cnt].to=to;e[cnt].next=head[from];head[from]=cnt;
};
vector<int>g[N];
unordered_map<int,ll>mp;
int fg[N],vis[N],in[N],t,n;
ll maxx,sum,f[N];
void topo()
{queue<int>q;q.push(n);while(!q.empty()){int u=q.front();q.pop();// if(vis[u]) continue;// vis[u]=1;for(int i=head[u];i;i=e[i].next){int j=e[i].to;in[j]++;if(vis[j]) continue;q.push(j);vis[j]=1;}}q.push(n);f[n]=1;while(!q.empty()){int u=q.front();q.pop();for(int i=head[u];i;i=e[i].next){int j=e[i].to;f[j]+=f[u];in[j]--;if(in[j]<=0) q.push(j);}if(fg[u]){for(auto x:g[u]){mp[x]+=f[u];}}}
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);//freopen("in.txt","r",stdin);cin>>t;while(t--){cin>>n;for(int i=1;i<=n;i++){fg[i]=vis[i]=f[i]=head[i]=in[i]=0;e[i].next=e[i].to=0;g[i].clear();}mp.clear();cnt=0;maxx=0;sum=0;for(int i=1;i<=n;i++){int op;cin>>op;if(op==1){int k;cin>>k;fg[i]=1;for(int j=1;j<=k;j++){int x;cin>>x;g[i].push_back(x);}}else{int x,y;cin>>x>>y;addedge(i,x);addedge(i,y);}}topo();for(auto x:mp){//cout<<x.second<<endl;sum+=x.second;maxx=max(maxx,x.second);}ll ans=0;if(maxx>(sum-maxx)) ans=2*(sum-maxx);else ans=sum;cout<<ans<<endl;}pause;return 0;
}

2019 ccpc 哈尔滨 I

如果h[i]>h[i-1]时答案要乘2,因为第i个数一定是当前排列的最大值或者最小值,然后有很多数变成了中间值,也就是放到i后面不会影响h[i]后面的值,这些数用一个变量num储存起来,每次乘2后,num+=(h[i]-h[i-1]-1),当h[i]==h[i-1]时就表示要放中间数了,就从num取一个

2019ccpc哈尔滨(补题) - LightAc - 博客园 (cnblogs.com).

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define lowbit(x) ((x)&(-x))
#define int long long
//#define ll long long
#define pause system("pause")
const int mod=1e9+7;
const int inf=1e18;
const int N = 2e6+100;
const double eps=1e-10;int qpow(int a,int b)
{int res=1;while(b){if(b&1) res=res*a%mod;a=a*a%mod;b>>=1;}return res;
}
int sgn(double x)
{if(fabs(x)<eps) return 0;else if(x<0) return -1;else return 1;
}
int getinv(int a){return qpow(a,mod-2LL);}
int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
int t,n,a[N];
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);//freopen("in.txt","r",stdin);cin>>t;while(t--){int ans=1,flag=1,num=0;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];if(a[1]!=0) flag=0;if(a[i]<a[i-1]||a[i]>=n) flag=0;}if(flag==0){cout<<"0\n";continue;}for(int i=2;i<=n;i++){if(a[i]>a[i-1]){ans=ans*2LL%mod;num+=(a[i]-a[i-1]-1);}else {ans=ans*num%mod;num--;}}cout<<ans<<endl;}pause;return 0;
}

1479A - Searching Local Minimum 交互,二分,2019 ccpc 哈尔滨 E 拓扑排序相关推荐

  1. CodeForces - 1480C Searching Local Minimum(交互+二分)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的排列,需要找出一个"局部最小值",所谓"局部最小值"就是对于某个 iii 来说,满足 ai<ai− ...

  2. Codeforces Round #700 (Div. 2) C. Searching Local Minimum 交互二分

    传送门 题意: 给一个数组,让你找到a[i]<min(a[i+1],a[i−1])a[i]<min(a[i+1],a[i-1])a[i]<min(a[i+1],a[i−1])位置ii ...

  3. Codeforces 1479A. Searching Local Minimum(注意输入+二分)

    题意 有n个数字,数字范围为1~n且不重复. 有数字流传输过来,你预先不知道其位置,但是你可以在接收数字之前给其定下位置. 问:你能否在确定小于等于100个数字位置之前找到一个数字,这个数字 a[i] ...

  4. Codeforces Round #700 (Div. 2) C. Searching Local Minimum(交互)

    链接: C. Searching Local Minimum 题意: 给你一个大小为 n 排列 , 一次询问可以得到位置 i 的数,要求在不超过 100 次询问的条件下找到该排列的一个波谷,即找到位置 ...

  5. CF1479A Searching Local Minimum

    CF1479A Searching Local Minimum 题意: 题解: 先说结论: 若l,r满足: al−1>al,ar<ar+1a_{l-1}>a_{l},a_{r}< ...

  6. LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置

    前言 国庆前最后一次打卡,国庆后继续开启,公众号bigsai回复进群欢迎加入打卡,如有帮助记得点赞收藏. 近期打卡记录: LeetCode 32最长有效括号(困难) (本周) LeetCode 30串 ...

  7. leetcode 310. Minimum Height Trees | 310. 最小高度树(图的邻接矩阵DFS / 拓扑排序)

    题目 https://leetcode.com/problems/minimum-height-trees/ 题解 方法1:图的邻接矩阵 DFS(超时) 我一想,这不就是个图嘛,于是随手敲出一个 DF ...

  8. P3573-[POI2014]RAJ-Rally【拓扑排序,二分+树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P3573 题目大意 nnn个点mmm条边的DAGDAGDAG,删掉一个点使得最长路最短. 解题思路 先跑一遍拓扑排序 ...

  9. 【CodeForces 1100E】二分答案 | 拓扑排序 | E

    这是一道很美妙的题- 1100E. Andrew and Taxi time limit per test: 2 seconds memory limit per test: 256 megabyte ...

最新文章

  1. java内存栅栏_内存屏障(Memory Barriers/Fences) - 并发编程中最基础的一项技术
  2. 大数据项目产品选型的五个建议
  3. java AC自动机
  4. JSON定义及解析,JSON文件读写
  5. 【CentOS Linux 7】实验2【Shell编程及应用】
  6. 图像中某点绕点旋转后的坐标,图像旋转坐标位置
  7. java验证身份证号码是否有效源代码
  8. 程序员面试算法_程序员的前20个搜索和排序算法面试问题
  9. Python中IOBase详解
  10. Python id(obj), ==, is 三者之间的区别
  11. android倒计时的正确释放,Android 计时器和handler的正确使用方式
  12. 自我与人际沟通课程复习
  13. Google play谷歌应用商店 APP上包上架的一些策略和技巧
  14. 对RS232接口的详细攻破
  15. Elasticsearch 7.X 拼音分词器 pinyin 使用
  16. dna数据u盘_DNA数据库黑客时代来临
  17. 网络原理——基础知识
  18. OTN关联开销(电层开销)OTU开销ODU开销OPU开销
  19. Matlab之real和imag函数
  20. suse日志服务器配置

热门文章

  1. 网站建设如何合理布局关键词
  2. 技术人如何进行结构化思考?
  3. Mysql子查询练习
  4. 清华大学唐杰教授:认知图谱是人工智能的下一个瑰宝 | PPT免费下载
  5. 拔盘Demo大赛,1000元现金等你拿!
  6. 【ASP.NET Web】项目实践—网上宠物店4:创建母版页
  7. 基于阿里云IoT平台和HAAS210云模组的OTA
  8. 腾讯企业邮箱SMTP服务器连接失败 PHPMailer
  9. 火狐扩展:CSDN 博客页面自动 “阅读全文”
  10. 每个人生阶段对自己来说都是一场战役