#533
D. Kilani and the Game
模拟一个游戏,每轮每个玩家可以把距离他拥有的领地的ki步内的格子占领,不能跨越别人的领地以及障碍,问最终每个人占领多少个格子。

写了好几种写法,然后调完才发现是不对的。
最终写了分轮dfs,每个人都有一个bfs队列。对于每一轮知道玩家占领格子的最远距离,当队列头是这些格子时就break出去,下一轮才会考虑从这些格子拓展,就能模拟出这题了。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef unsigned long long ull;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
const int maxn=1000+5;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;int n,m,p;
int s[10];char ma[maxn][maxn];
int ans[10];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
bool vis[maxn][maxn];
int self[maxn][maxn][10];
queue<pii> que[10];int main(){scanf("%d%d%d",&n,&m,&p);for(int i=1;i<=p;i++)scanf("%d",&s[i]);memset(self,-1,sizeof(self));for(int i=0;i<n;i++){scanf("%s",ma[i]);for(int j=0;j<m;j++){if(ma[i][j]=='.'||ma[i][j]=='#')continue;int id=ma[i][j]-'0';vis[i][j]=1;self[i][j][id]=0;ans[id]++;que[id].push(mp(i,j));}}int turn=0;while(1){turn++;bool f=0;for(int i=1;i<=p;i++){int lastp=s[i]*turn;while(!que[i].empty()){pii cc=que[i].front();f=1;int cntx=cc.fi,cnty=cc.se;if(self[cc.fi][cc.se][i]==lastp)break;que[i].pop();for(int k=0;k<4;k++){int nx=cntx+dx[k],ny=cnty+dy[k];if(nx<0||ny<0||nx>=n||ny>=m)continue;if(ma[nx][ny]=='#')continue;if(vis[nx][ny])continue;ans[i]++;self[nx][ny][i]=self[cntx][cnty][i]+1;vis[nx][ny]=1;que[i].push(mp(nx,ny));}}}if(f==0)break;}for(int i=1;i<=p;i++)printf("%d ",ans[i]);return 0;
}

E. Helping Hiasat
你可以改ID,朋友访问时如果你的ID是不是他的名字他就会不高兴,问有多少个朋友会是高兴的。

注意到每两次改名字之间的朋友之间,这有一个能在这一次不会不高兴。
所以问题转换成求最大独立集了。
用补图跑最大团,抄个模板就行了。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef unsigned long long ull;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
const int maxn=40+5;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;int n,m;bool g[maxn][maxn];
int ans;
int mc[maxn];
int lis[maxn][maxn];
int len[maxn];
bool found;
void dfs(int siz){int i,j,k;if(len[siz]==0){if(siz>ans){ans=siz;found=true;}return;}for(k=0;k<len[siz]&&!found;++k){if(siz+len[siz]-k<=ans)break;i=lis[siz][k];if(siz+mc[i]<=ans)break;for(j=k+1,len[siz+1]=0;j<len[siz];++j)if(g[i][lis[siz][j]])lis[siz+1][len[siz+1]++]=lis[siz][j];dfs(siz+1);}
}void max_cluster(){int i,j;mc[m]=ans=1;for(i=m-1;i;--i){found=false;len[1]=0;for(j=i+1;j<=m;++j)if(g[i][j])lis[1][len[1]++]=j;dfs(1);mc[i]=ans;}
}map<string,int> ma;
int tot;
string name;
vector<int> vec;
int main(){scanf("%d%d",&n,&m);for(int i=0,a;i<=n;i++){if(i<n)scanf("%d",&a);if(a==1||i==n){sort(vec.begin(),vec.end());vec.erase(unique(vec.begin(),vec.end()),vec.end());int siz=vec.size();for(int i=0;i<siz;i++){int lef=vec[i];for(int j=i+1;j<siz;j++){int rig=vec[j];g[lef][rig]=g[rig][lef]=1;}}vec.clear();}else{cin>>name;if(ma.find(name)==ma.end()){ma[name]=++tot;}int id=ma[name];vec.pb(id);}}for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){if(i==j)continue;g[i][j]=1-g[i][j];}}max_cluster();printf("%d\n",ans);return 0;
}

#534
D. Game with modulo
交互题,通过问两个数在模意义的大小关系,确定出模数。
还是挺厉害的这一道题目
首先对于i和2i,如果模数a在i和2i之间,那么模意义下i一定大于2i
所以可以倍增i来确定a所在下界
然后在这段区间内,满足前一部分模意义下大于i,后一部分模意义下小于i
第一个模意义下小于i的数就是模数了
还是有些细节的。询问次数也卡的比较死。

这种题目还是需要挖掘性质的,好题。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef unsigned long long ull;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
const int maxn=1e3+15;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;int n;string str;int main(){while(1){cin>>str;if(str=="end"||str=="mistake")break;cout<<"? 0 1"<<endl;fflush(stdout);cin>>str;if(str[0]=='x'){cout<<"! 1"<<endl;fflush(stdout);continue;}ll lef,rig;for(int i=1;i<=1e9;i<<=1){cout<<"? "<<i<<" "<<2*i<<endl;fflush(stdout);cin>>str;if(str[0]=='e')exit(0);else if(str[0]=='x'){lef=i;rig=2*i;break;}}int ret=lef;int cc=lef;lef++;while(lef<=rig){ll mid=(lef+rig)/2;cout<<"? "<<cc<<" "<<mid<<endl;fflush(stdout);cin>>str;if(str[0]=='e')exit(0);else if(str[0]=='x'){rig=mid-1;}else{ret=mid;lef=mid+1;}}cout<<"! "<<ret+1<<endl;fflush(stdout);}return 0;
}

【补题计划】Codeforces Round #533+#534(Div.2)相关推荐

  1. Codeforces Round #533 (Div. 2)题解

    link orz olinr AK Codeforces Round #533 (Div. 2) 中文水平和英文水平都太渣..翻译不准确见谅 T1.给定n<=1000个整数,你需要钦定一个值t, ...

  2. Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)切题报告(A-B题)

    这是我第二次参加CF比赛,也是第一次写博客,写得不好,望各位大佬海涵. A. Single Wildcard Pattern Matching 原题链接 这道题,这是难到让人无法直视,太水了. 题目大 ...

  3. [区间记忆化dp入门][Bribe the Prisoners SPOJ - GCJ1C09C][Codeforces Round #505D (rated, Div. 1 + Div. 2, ba]

    Bribe the Prisoners SPOJ - GCJ1C09C 作为这类题代表,f[i][j]代表第i点到第j点单独处理的最值 这题关键:释放某个囚犯后,就把囚犯分成两段,两段互相独立 这类d ...

  4. codeforces round div2,3周赛补题计划(从开学到期末)

    1. 本学期场次 从2020.09.19-2021.01.18,一共18周. 题号 场次 日期 备注 1475 Codeforces Round #697 (Div. 3) 1.25 1474 Cod ...

  5. Codeforces Round #626(Div.2) 解题报告

    Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) [前言] 最近沉迷只狼,好久没有打CF了,水平 ...

  6. A. Equalize Prices Again(水题) Codeforces Round #590 (Div. 3)

    原题链接:https://codeforces.com/contest/1234/problem/A 派大星既是"比奇堡"一家小商店的店主又是售货员.店里有n种商品,第i种商品价格 ...

  7. Codeforces Round #533 (Div. 2) C.思维dp D. 多源BFS

    题目链接:https://codeforces.com/contest/1105 C. Ayoub and Lost Array 题目大意:一个长度为n的数组,数组的元素都在[L,R]之间,并且数组全 ...

  8. Codeforces Round #533(Div. 2) A.Salem and Sticks

    链接:https://codeforces.com/contest/1105/problem/A 题意: 给n个数,找到一个数t使i(1-n)∑|ai-t| 最小. ai-t 差距1 以内都满足 思路 ...

  9. szu cf套题训练Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3)A~D题解报告

    A. Math Problem 题目大意:就是给你n个线段,你自己再添加一个线段d使得d和所有的线段都有交点,求d这个线段的最小长度是多少 解题思路: 1.首先看d线段的左端点,就是左端点选取的是所有 ...

最新文章

  1. glutInit(argc, argv); glut初始化API
  2. 我国将明确侵犯个人信息定罪及量刑标准
  3. python【蓝桥杯vip练习题库】BASIC-17矩阵乘法(枚举)
  4. java字符串操作_Java的字符串操作
  5. jsr303自定义验证_JSR 310新日期/时间API的自定义JSR 303 Bean验证约束
  6. python中出现ascii编码问题的解决办法
  7. 阿里科学家再获世界级荣誉,平头哥首席科学家谢源当选AAASFellow
  8. python kivy canvas_python – Kivy:使用canvas为动画设置动画的正确方法是什么?
  9. if....else的基本用法
  10. 2014-12-02-2107-Java-UML
  11. 使用dva框架的总结
  12. 【题解】LuoGu4408:[NOI2003]逃学的小孩
  13. Mybatis与JPA的优缺点
  14. python爬虫豆瓣电影按电影类型_Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题...
  15. DSP28335:EPWM
  16. LoadRunner 11(LR11) 下载链接及破解方法
  17. 可达编程 单源最短路
  18. 关于任天堂,你不了解的9件事
  19. DeepFM原理及tensorflow代码实战
  20. 【黑金ZYNQ7000系列原创视频教程】03.体验FPGA里的ARMmdash;mdash;裸机helloworld实验...

热门文章

  1. 规范化、标准化、归一化、正则化
  2. 致爱致青春——关于北京爱情故事
  3. 一篇讲autoconf/automake的好文章
  4. 抖音一个老人和一个机器人歌曲_抖音歌曲少年是谁唱的 最近抖音非常火的一首歌曲...
  5. STC89C52RC单片机实现简单定时闹钟+LCD1602+DS1302
  6. 用C语言写基于单片机的定时闹钟,基于单片机定时闹钟设计.doc
  7. 电影分区发行新模式创造“中国电影市场的新增量”
  8. 全球及中国留学咨询服务行业运营形势与发展前景分析报告2022版
  9. Android stuido 解决Caused by: android.view.InflateException: Binary XML file line #8: Binary XML file
  10. 如何编辑PDF文件?简单好用的编辑方法分享