ACM ICPC 2017 Warmup Contest 5
来源:互联网 发布:ubuntu 14.04安装qq 编辑:程序博客网 时间:2024/06/06 17:09
据说似乎是挂错题了,三道水题,估计是某比赛的热身赛吧
结果系统还炸了,什么thin pool溢出,什么测评姬无数据,各种ce
好在最后时刻成功ak了,想想这似乎是我除大一上机50+题ak后时隔两年后的第一次ak,玄学
A. Advice from Jad
思路:简单的字符串匹配,一开始看到的时候,对于字符串渣渣的我来说有点蒙,然而这题确实有点水,一开始以为是个前缀或模式匹配什么的,后来发现kmp都用不到 ,直接O(mn)强行匹配就好了
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 110;char ep[10][maxn];char icpcp[10][maxn];int len[10];int main(){ int n,m,tt; while(scanf("%d",&tt)!=EOF) { for(int t=1;t<=tt;t++) { scanf("%d%d",&n,&m); getchar(); for(int i=0;i<n;i++) { gets(ep[i]); len[i] = strlen(ep[i]); } for(int i=0;i<m;i++) { gets(icpcp[i]); } printf("Case #%d:\n",t); for(int i=0;i<m;i++) { bool diff = true; int icpclen = strlen(icpcp[i]); //cout << icpclen << "*"<<endl; for(int j=0;diff&&j<n;j++) { int pos = 0; for(int k=0;k<icpclen&&pos<len[j];k++) { if(icpcp[i][k] != ep[j][pos]) { break; } else { pos++; } } if(pos >= len[j]) { diff = false; } //cout << pos << "***" << endl; } if(diff) { printf("This problem may be somewhat difficult.\n"); } else { printf("This is an easy problem.\n"); } } printf("\n"); } } return 0;}
C. Chat Parser
思路:其实这题和上题差不多,也是字符串匹配,就是这回按行读,且不知道串长,迫不得已开string,用cin,关同步,并存储于map,就ok了
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e5+10;string s;map<string,bool> p;int main(){ios::sync_with_stdio(false); int tt; while(cin>>tt) { getchar(); for(int t=1;t<=tt;t++) { p.clear(); while(getline(cin,s)) { int len = s.size(); if(len==0) { break; } int pos; for(pos=0;pos<len;pos++) { if(s[pos] == ':') break; } string ns = s.substr(0,pos); p[ns] = true; } cout << "Case #" << t << ": " << p.size()<<endl; } } return 0;}
B. Boats on the lake
思路:计算几何,判断点在多边形内部,利用射线交点奇偶性来判断,对于边缘点,特判点在直线上就好了,感觉计算几何这块可以稍微整理一下,但可能意义不是很大,据说现场赛计算几何的难度都属于不可做,看情况吧
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 110;double bx[maxn],by[maxn],polyX[maxn],polyY[maxn];bool pointInPolygon(int ployCorners,double x,double y);int main(){ int tt; while(scanf("%d",&tt)!=EOF) { for(int t=1;t<=tt;t++) { printf("Case #%d:\n",t); int n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lf%lf",&bx[i],&by[i]); } int m; scanf("%d",&m); for(int i=0;i<m;i++) { int sum = 0; int p; scanf("%d",&p); for(int j=0;j<p;j++) { int pos; scanf("%d",&pos); polyX[j] = bx[pos]; polyY[j] = by[pos]; } for(int j=1;j<=n;j++) { if(pointInPolygon(p,bx[j],by[j])) { sum++; } } // cout << pointInPolygon(p,tx,ty,0,15) << endl; /*for(int j=0;j<p;j++) { cout << tx[j] << " " << endl; }*/ printf("%d\n",sum); } } } return 0;}// Globals which should be set before calling this function://// int polyCorners = how many corners the polygon has// float polyX[] = horizontal coordinates of corners// float polyY[] = vertical coordinates of corners// float x, y = point to be tested//// (Globals are used in this example for purposes of speed. Change as// desired.)//// The function will return YES if the point x,y is inside the polygon, or// NO if it is not. If the point is exactly on the edge of the polygon,// then the function may return YES or NO.//// Note that division by zero is avoided because the division is protected// by the "if" clause which surrounds it.double getdis(double ax,double ay,double bx,double by){ return sqrt((ax-bx)*(ax-bx) + (ay-by)*(ay-by));}bool inLine(double px,double py,double ax,double ay,double bx,double by){ //cout << ax << "^^" << ay << "^^" << bx << "^^" << by << endl; double ap = getdis(ax,ay,px,py); double bp = getdis(bx,by,px,py); double ab = getdis(ax,ay,bx,by) + 1e-8; if(ap+bp<=ab) { //cout << ap << "#" << bp << "#" << ab << endl; return true; } else { //cout << ap << "#" << bp << "#" << ab << endl; return false; }}bool pointInPolygon(int polyCorners,double x,double y){ /*for(int j=0;j<polyCorners;j++) { cout << polyX[j] << " " << endl; }*/ int i, j=polyCorners-1 ; for(i=0;i<j;i++) { if(inLine(x,y,polyX[i],polyY[i],polyX[i+1],polyY[i+1])) { //cout << "*"<<i+1 <<"*"<<x<<"*"<<y<<"*"<<polyX[i]<<"*"<<polyY[i]<<"*"<<polyX[i+1]<<"*"<<polyY[i+1]<< endl; return true; } } if(inLine(x,y,polyX[j],polyY[j],polyX[0],polyY[0])) { return true; } bool oddNodes=false ; for (i=0; i<polyCorners; i++) { if (((polyY[i]< y && polyY[j]>=y) || (polyY[j]< y && polyY[i]>=y)) && (polyX[i]<=x || polyX[j]<=x) ) { oddNodes^=(polyX[i]+(y-polyY[i])/(polyY[j]-polyY[i])*(polyX[j]-polyX[i])<x); } j=i; } //cout << "**" << endl; return oddNodes;}
文章地址:http://blog.csdn.net/owen_q/article/details/78170302
阅读全文
1 0
- ACM ICPC 2017 Warmup Contest 5
- ACM ICPC 2017 Warmup Contest 1
- ACM ICPC 2017 Warmup Contest 6 G
- 计蒜客 ACM-ICPC 2017 Warmup Contest 12
- ACM ICPC 2017 Warmup Contest 1 F. Fleecing the Raffle
- ACM ICPC 2017 Warmup Contest 1 (NCPC 2016)
- 计蒜客 ACM ICPC 2017 Warmup Contest 1 G Game Rank
- 计蒜客 Bridge Automation(ACM ICPC 2017 Warmup Contest 9)
- 计蒜客 Charles in Charge(ACM ICPC 2017 Warmup Contest 9)
- 计蒜客ACM ICPC 2017 Warmup Contest 9--C题
- ACM ICPC 2017 Warmup Contest 4(ACM Northeastern European Regional Contest,Northern Subregion 2015)
- ACM ICPC 2017 Warmup Contest 6(ACM Google Cup 2011 Invitational Programming Contest)
- ACM ICPC 2017 Warmup Contest 2(ACM Northeastern European Regional Contest,Northern Subregion 2016)
- ACM ICPC 2017 Warmup Contest 8(ACM PolyU International Invitation Contest)
- ACM ICPC 2017 Warmup Contest 1(Nordic Collegiate Programming Contest 2016)
- ACM ICPC 2017 Warmup Contest 7(CTU Open Contest 2016)
- ACM ICPC 2017 Warmup Contest 7(CTU Open Contest 2016)
- 计蒜客ACM ICPC 2017 Warmup Contest 9--B题-Battle Simulation
- django开发(7)使用模板
- 第3章 Notifications通知
- 51nod-1376(线段树维护区间最值)
- poj1830 开关问题(gauss)
- URL反解析:reverse
- ACM ICPC 2017 Warmup Contest 5
- Java中关于重写和重载的区别
- 第九章(集合)
- STL STACK
- MySql学习笔记(三)
- 奇数单增序列
- 用代码调出电脑所有的WiFi及密码
- ZendFramework3事件驱动架构核心模块zend-eventmanager
- Codeforces Round #439 C.The Intriguing Obsession(DP + 思维)