B.

把所有正数变为1,负数变为-1。然后如果-1有偶数个,那么把所有的0变为1;如果-1有奇数个,如果数列中存在0,把其中一个0变为-1,其余全变为1,否则把其中一个负数变为1。

Code

#include<bits/stdc++.h>
using namespace std;
int main(){int n,mo=0,cnt0=0;long long ans=0;scanf("%d",&n);for(int i=1;i<=n;i++){long long x;scanf("%lld",&x);if(x>0)ans+=x-1;else if(x<0)ans+=-x-1,mo^=1;else ans++,cnt0++;}if(mo){if(!cnt0)ans+=2;}printf("%lld\n",ans);return 0;
}

C.

瞎凑。

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn=100003;
int n;
int main(){scanf("%d",&n);if(!(n%2)){printf("NO");return 0;}printf("YES\n1 ");for(int i=2,u=n*2,d=3;i<=n;i+=2,u-=2,d+=2){printf("%d %d ",u,d);}printf("2 ");for(int i=2,u=n*2-1,d=4;i<=n;i+=2,u-=2,d+=2){printf("%d %d ",u,d);}return 0;
}

D.

前置知识:floyd求最小环
我们发现,如果存在一个bit,使得数列中至少3个数在这个bit上为1,那么答案就是3。
否则把没有边的节点去掉,这张图就最多只有120个节点。
因此使用floyd求最小环。

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn=100003,maxm=303;
int N,n,g[maxm][maxm],h[maxm][maxm],mp[maxm],cntmp;
long long A[maxn];
int main(){scanf("%d",&N);for(int i=1;i<=N;i++)scanf("%lld",A+i);for(int i=0;i<=60;i++){int p[4],cnt=0;for(int j=1;j<=N;j++){if((A[j]>>i)&1){p[++cnt]=j;if(cnt==3){printf("3");return 0;}}}if(cnt==2){mp[++cntmp]=p[1],mp[++cntmp]=p[2];}}sort(mp+1,mp+cntmp+1);cntmp=unique(mp+1,mp+cntmp+1)-mp-1;for(int i=1;i<=cntmp;i++){for(int j=1;j<=cntmp;j++){if(i!=j){if(A[mp[i]]&A[mp[j]])g[i][j]=1;else g[i][j]=maxn;}h[i][j]=g[i][j];}}int ans=maxn;for(int k=1;k<=cntmp;k++){for(int i=1;i<k;i++){for(int j=1;j<k;j++){if(i!=j&&j!=k&&i!=k)ans=min(ans,h[i][j]+g[i][k]+g[k][j]);}}for(int i=1;i<=cntmp;i++){for(int j=1;j<=cntmp;j++){h[i][j]=min(h[i][j],h[i][k]+h[k][j]);}}}printf("%d",ans==maxn?-1:ans);return 0;
}

E.

首先对表格黑白染色,左上角的格子是黑色。
那么我们可以用 \(n^2\) 不到一点 次询问得到所有黑色节点的值,以及白色节点相对于节点 \((1,2)\) 的值。
然后我们对于 \((1,2)\) 的值是0或1分别 \(O(n^4)\) dp出所有的询问值,由于必定有解,所以必然存在一对节点使得在 \((1,2)\) 的值不同时它们的询问值不同。找出这对节点,再询问一次即可。

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn=53;
int a[maxn][maxn],n,dp[2][maxn][maxn][maxn][maxn];
struct T{int x,y,step;T(){}T(int _x,int _y,int _s):x(_x),y(_y),step(_s){}
};
struct QQ{int sx,sy,x,y;QQ(){}QQ(int _sx,int _sy,int _x,int _y):sx(_sx),sy(_sy),x(_x),y(_y){}
};
vector<QQ> v[maxn*2];
int query(int x1,int y1,int x2,int y2){printf("? %d %d %d %d\n",x1,y1,x2,y2);fflush(stdout);int ret;scanf("%d",&ret);if(ret==-1)exit(0);return ret;
}
int main(){scanf("%d",&n);a[1][1]=1;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if((i==1&&j<=2)||(i==2&&j==1)||(i==n&&j==n))continue;int ii,jj;if(i==1)ii=i,jj=j-2;else if(i>2&&j==1)ii=i-2,jj=j;else ii=i-1,jj=j-1;a[i][j]=a[ii][jj]^query(ii,jj,i,j)^1;if(i==2&&j==3)a[2][1]=a[2][3]^query(2,1,2,3)^1;}}for(int sx=1;sx<=n;sx++){for(int sy=1;sy<=n;sy++){for(int x=sx;x<=n;x++){for(int y=sy;y<=n;y++){v[abs(sx-x)+abs(sy-y)].push_back(QQ(sx,sy,x,y));}}}}for(int b=0;b<=1;b++){for(int i=0;i<=n*2-2;i++){for(int j=0;j<int(v[i].size());j++){int sx=v[i][j].sx,sy=v[i][j].sy,x=v[i][j].x,y=v[i][j].y;if(sx==x&&sy==y)dp[b][sx][sy][x][y]=1;else if(x-sx+y-sy==1)dp[b][sx][sy][x][y]=(a[sx][sy]==a[x][y]);else{if(a[sx][sy]==a[x][y]){if(sx+2<=x)dp[b][sx][sy][x][y]|=dp[b][sx+1][sy][x-1][y];if(sx+1<=x&&sy+1<=y){dp[b][sx][sy][x][y]|=dp[b][sx+1][sy][x][y-1];dp[b][sx][sy][x][y]|=dp[b][sx][sy+1][x-1][y];}if(sy+2<=y)dp[b][sx][sy][x][y]|=dp[b][sx][sy+1][x][y-1];}}}}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if((i+j)&1)a[i][j]^=1;}int flag=-1;for(int sx=1;sx<=n;sx++){for(int sy=1;sy<=n;sy++){for(int x=sx;x<=n;x++){for(int y=sy;y<=n;y++){if(abs(sx-x)+abs(sy-y)>=2&&dp[0][sx][sy][x][y]!=dp[1][sx][sy][x][y]){flag=(query(sx,sy,x,y)==dp[1][sx][sy][x][y]);break;}}if(~flag)break;}if(~flag)break;}if(~flag)break;}puts("!");for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if((i+j)&1)a[i][j]^=flag;printf("%d",a[i][j]);}puts("");}return 0;
}

转载于:https://www.cnblogs.com/BlogOfchc1234567890/p/11440438.html

Codeforces 1206相关推荐

  1. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  2. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  3. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  4. CodeForces 获得数据

    针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...

  5. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...

    题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...

  6. CodeForces 595A

    题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯 ...

  7. codeforces A. Jeff and Digits 解题报告

    题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这 ...

  8. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  9. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)

    Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...

最新文章

  1. 在互联网圈混,怎么能不知道这9个Java方向公众号
  2. 践行RONG理念,2018年清华数据院科研成果一隅
  3. ES6中表达export default const是无效的
  4. primeNG DataTable中Templating ng-template标签报错
  5. 用CONVERT命令转换FAT到NTFS,合适吗?
  6. [大学回忆录-思想]为博乎?为专乎?
  7. Linux 更改共享内存tmpfs的大小
  8. iOS 蓝牙使用小结 bluetooth
  9. python学习-如何高效学 Python?
  10. 如何在 iPhone、iPad 和 Mac 上更改日历颜色?
  11. T-SQL数据类型的细微差别(四)
  12. 如何拥有一个属于自己的网站
  13. linux权限不够的简易解决方法
  14. 划线法构造三角形单元插值函数
  15. nihao, woshi mr jhon
  16. 受欢迎的牛(有向图的强连通分量)
  17. Java内存区域与Java内存模型
  18. python 闭包 lambda_Python lambda闭包范围
  19. 计算机 打印 速度慢,处理打印机在打印文件时打印速度过慢的原因
  20. 历史库存sap_SAP 常用的库存表

热门文章

  1. Kotlin学习-基础知识点
  2. HihoCoder 1513 : 小Hi的烦恼
  3. selenium代码练习
  4. UNIX环境高级编程 第12章 线程控制
  5. Exception异常
  6. BZOJ1082: [SCOI2005]栅栏
  7. 对天天开心消消乐(订餐系统)的建议
  8. VS2005与VSOrcasExpress对LINQ各有所属~
  9. wpf中xaml的类型转换器与标记扩展
  10. 【bzoj3224】 Tyvj1728—普通平衡树