Codeforces Beta Round #95 (Div. 2)
来源:互联网 发布:windows路由跟踪命令 编辑:程序博客网 时间:2024/05/16 10:31
简单总结一下昨晚的cf。两个字:脑残
手速太慢(maybe天气冷到手有点僵),水题都不会水了,组合数那题竟然开eclipse去做!脑残到不会用数组递推,D题图论题意大概看懂就开始搞,搞到很慢,临结束还有2min才交,不过幸运的是1A,E也是水题,不够时间搞。哎,注定只能做div2了=。=
ABC水不贴代码。
D图论,把一个图中成环的点输出0,其他点就输出到环的距离就ok,我的做法是开始先类似拓扑排序那样,依次删去度为1的点,剩下的就是环中的点,再bfs求其余点离环的距离,代码写得有点搓。
#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include <iomanip>#include <cstdlib>#include <limits.h>#include <string.h>#include <iostream>#include <fstream>#include <algorithm>using namespace std;#define LL long long#define MIN INT_MIN#define MAX INT_MAX#define PI acos(-1.0)#define FRE freopen("input.txt","r",stdin)#define FF freopen("output.txt","w",stdout)#define N 3005vector<int> v[N];int n;queue<int> qq;int du[N];struct node{ int id; int t;};queue<node> q;int ans[N];bool vis[N];int main(){ cin>>n; int i,j; memset(vis,0,sizeof(vis)); for (i=0;i<n;i++) { int x,y; cin>>x>>y; v[x].push_back(y); v[y].push_back(x); du[x]++; du[y]++; } for (i=1;i<=n;i++) { if (du[i] == 1) { qq.push(i); } } while(!qq.empty()){ int x = qq.front(); qq.pop(); du[x]--; for (i = 0 ;i < v[x].size(); i++) { int y = v[x][i]; du[y]--; if (du[y] == 1 ){ qq.push(y); } } } while(!qq.empty())qq.pop(); for (i=1;i<=n;i++){ if (du[i]==2){ ans[i] = 0; node tmp; tmp.t = i; tmp.id = 0; q.push(tmp);vis[i] = 1; } } while(!q.empty()){//cout<<"!"<<endl; node x = q.front(); q.pop(); vis[x.t] = 1; for (i=0;i<v[x.t].size();i++){ int y = v[x.t][i]; if (vis[y])continue; vis[y]=1; ans[y] = x.id+1; node tmp; tmp.t = y; tmp.id = x.id+1; q.push(tmp); } } for(i=1;i<=n;i++)cout<<ans[i]<<" "; cout<<endl; return 0;}
E模拟,4次排序:正对角、副对角、x方向、y方向排序,注意处理好细节,要保证排好后同一直线上相邻两个点之间必须没有点,否则会wa
#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include <iomanip>#include <cstdlib>#include <limits.h>#include <string.h>#include <iostream>#include <fstream>#include <algorithm>using namespace std;#define LL long long#define MIN INT_MIN#define MAX INT_MAX#define PI acos(-1.0)#define FRE freopen("input.txt","r",stdin)#define FF freopen("output.txt","w",stdout)#define N 100005struct node{ int x,y; int id;}p[N],q[N];int num[N];int ans[10];bool cmp1(node a,node b){ if (a.x+a.y==b.x+b.y)return (a.x < b.x && a.y > b.y); return a.x+a.y<b.x+b.y;}bool cmp2(node a, node b) { if (a.y - a.x != b.y - b.x) { return a.y - a.x < b.y - b.x; } else { return a.x < b.x; }}bool cmp3(node a,node b){ if (a.x == b.x) return a.y < b.y; return a.x < b.x;}bool cmp4(node a,node b){ if (a.y == b.y) return a.x < b.x; return a.y < b.y;}///////////////////////////////int main(){ int n,m; cin>>n>>m; int i; for (i=0;i<m;i++) { cin>>p[i].x>>p[i].y; p[i].id = i; } for (i=0;i<m;i++) { q[i].x = p[i].x; q[i].y = p[i].y; q[i].id = p[i].id; } sort(q,q+m,cmp1); for (i = 0; i+1 < m; i++){ if ((q[i].x+q[i].y) == (q[i+1].x + q[i+1].y)) { num[q[i].id]++; num[q[i+1].id]++; } } //for (i=0;i<m;i++)cout<<q[i].x<<" "<<q[i].y<<endl; // cout<<num[i]<<endl;//////////////////////////////////////// for (i=0;i<m;i++) { q[i].x = p[i].x; q[i].y = p[i].y; q[i].id = p[i].id; } sort(q,q+m,cmp2); for (i = 0; i+1 < m; i++){ if ((q[i].x-q[i+1].x) == (q[i].y - q[i+1].y)) { num[q[i].id]++;num[q[i+1].id]++; } }//////////////////////////////////////////// for (i=0;i<m;i++) { q[i].x = p[i].x; q[i].y = p[i].y; q[i].id = p[i].id; } sort(q,q+m,cmp3); for (i = 0; i+1 < m; i++){ if (q[i].x == q[i+1].x) { num[q[i].id]++;num[q[i+1].id]++; } }///////////////////////////////////////////////// for (i=0;i<m;i++) { q[i].x = p[i].x; q[i].y = p[i].y; q[i].id = p[i].id; } sort(q,q+m,cmp4); for (i = 0; i+1 < m; i++){ if (q[i].y == q[i+1].y) { num[q[i].id]++;num[q[i+1].id]++; } }///////////////////////////////////////////////// for (i = 0 ; i < m; i++) { ans[num[i]]++; } for (i = 0 ; i < 9;i++) { cout<<ans[i]<<" "; }cout<<endl; return 0;}
- Codeforces Beta Round #95 (Div. 2)
- Codeforces Beta Round #95 (Div. 2)
- Codeforces Beta Round #95 (Div. 2)
- Codeforces Beta Round #95 (Div. 2)
- Codeforces Beta Round #95 (Div. 2)
- Codeforces Beta Round #95 (Div. 2)
- Codeforces Beta Round #95 (Div. 2)
- Codeforces Beta Round #95 (Div. 2)
- Codeforces Beta Round #95 (Div. 2) A B C E
- Codeforces Beta Round #95 (Div. 2) (点双联通)
- Codeforces Beta Round #95 (Div. 2) F - Present to Mom
- Codeforces Beta Round #95 (Div. 2) A题
- Codeforces Beta Round #95 (Div. 2) D.Subway
- Codeforces Beta Round #95 (Div. 2) -- D. Subway (DFS)
- Codeforces Beta Round #95 (Div. 2) Subway (树上找环)
- Codeforces Beta Round #63 (Div. 2)
- Codeforces Beta Round #65 (Div. 2)
- Codeforces Beta Round #67 (Div. 2) ABCD
- 信息数字化解逻辑题分享
- Codeforces Beta Round #95 (Div. 2) A B C E
- Microsoft Office Word遇到问题需要关闭的问题解决
- poj 1511 Invitation Cards spfa比基础题难一些!!练练手挺好
- Java输出数据的对齐方法
- Codeforces Beta Round #95 (Div. 2)
- 培训之路二
- GE笔试C语言部分常见试题
- firefox恢复默认设置
- Vim中ctags -R不能标签子目录的原因以及解决办法
- 如何查询端口号是否被占用
- 在C++中模拟委托事件的方法(上篇)
- java自动编译批处理
- 免费图标地址