昨天全隊做了這個比賽,做乙個小小的總結,寫一寫部分題的題解。
【e - rebuild】
【題意】依次輸入n個點的座標,分別為圓心。保證相鄰圓心的距離是個正整數。第n個圓和第1個圓相鄰。要求相鄰兩個圓要相切,求全部圓面積和的最小值,以及此時半徑的取法。
【解題方法】
先根據座標求出相鄰圓心距離依次為a0
,a1,
...,
an−1
設圓半徑分別為x0
,x1,
...,
xn−1
化為方程
然後把這n-1個方程,如果是奇數用當前方程減去下乙個,否則加上下乙個。最後得到的方程為2*x0=(a1-a2+a3-a4....+(-1)^n*a[n-1]),**用last來維護一下這個東西。
【ac **】
#include #include #include #include #include #include using namespace std;
const int maxn = 1e4+10;
const double eps = 1e-8;
const double pi = acos(-1);
struct point
point(){}
void read()
}p[maxn];
double a[maxn];
double dist(point a,point b)
int n;
double solve(double r)
if(n&1)
}double l=minn,r=maxx;
double m,mm;
for(int i=0; i<100; i++)else
}printf("%.2f\n",solve(l));
for(int i=0; if - almost sorted array】
【題意】給乙個序列,你可以刪除乙個元素,如果使得這個序列有序輸出yes,否則輸出no。
【解題方法】lis即可。
【ac **】
#includeusing namespace std;
const int n =2e5;
int a[n],dp[n];
int main()
return 0;
}
【g - dancing stars on me】
【題意】給n個點,判斷能否組成正多邊形。我直接維護了乙個凸包,正解應該是只需要考慮正方形,其他的正多邊形頂點不可能全是整數點。。。。
【ac **】
#include using namespace std;
typedef long long ll;
const int maxn = 110;
struct point
}p[maxn],ans[maxn];
point operator-(point a,point b);}
ll cross(point a,point b)
ll dist(point a,point b)
bool cmp(point a,point b)
int k=m;
for(int i=n-2; i>=0; i--)
if(n>1) m--;
return m;
}int main()
void init()
void insert(int x)
}int ans=0;
for(int i=1;i<=n;i++)
}for(int i=1;i<=n;i++)
}printf("%d\n",ans);
}return 0;
}
解題報告 2015ACM ICPC亞洲區長春站
題目鏈結 分析 不妨先解決這個問題的判斷非降序的部分。既然符合條件的陣列移除乙個數字就能使得整個陣列非降序,那麼我們先統計滿足 a i 1 a i 的i的個數cnt。另外,令idx等於當 cn t 1 時的滿足 a i 1 a i i的值。下面根據cnt的值來分類討論 對非公升序的判斷只要把陣列顛倒...
2012 ACM ICPC 長春賽區網路賽
1001 a problem with integers 題意 有兩種操作,一種是更新區間a b中a i b and i a k 0 的點加上c 一種是詢問aa 的value 思路 明顯的線段樹 但是依然跪倒啊 cnt i k c 代表當前區間i 每隔k個字元累加c,然後就是更新,如果存在要更新的區...
ACM ICPC 區預賽現場VIM配置
acm icpc 區預賽現場vim配置 filetype plugin indent on colo evening set nu set hlsearch set expandtab set syntax on set tabstop 4 set expandtab set shiftwidth ...