Codeforces Round #418 (Div. 2)
来源:互联网 发布:我的淘宝没有我要开店 编辑:程序博客网 时间:2024/06/05 07:25
A、水
B、输给英语:permutation是排列的意思,也就是所有数字只能够出现一次。
给2个序列列,这两个序列不完全相同,也就是存在不同的位置,要求找到第3个排列,使得其与第一序列和第二序列exactly一个不同。
显然第一个序列和第二个序列不同的值不超过2个,那么特判全部情况,然后第三个排列输出的时候注意判重即可。
C、
可以预处理出各个字母如果添加n个的时候,最多连续能到多少。
!!!!!如果觉得对的思想,不要尝试一下就想着放弃,因为可能自己代码写错(即便自己认为正确的想法也不一定一发可以ac,更不用说不一定正确的,不是吗)
D、
暴力,给n个圆,两两圆不相交2个交点,存在包含和分离2个不同位置的情况,可以以r从大到小排序,那么这些圆哪个在后面的位置也就可知了。
那么可以这么贪心,从后面的圆开始判断这个圆放在哪个位置会使得sum最大,如果两个圆的sum相同,显然这个圆放在两个地方的结果都一样,因为后期的圆放哪都一样。
#include <stdio.h>#include<algorithm>#include <math.h>#include <iostream>#include <string.h>#include <stdio.h>using namespace std;const int MOD=1e4+7;const double PI=3.1415926535897932;struct ttt{double x,y,r;};ttt qq[1050];int cmp1(ttt a,ttt b){ return a.r>b.r; //r��ķ���ǰ��}int q1[1050];int q2[1050];double fun1(ttt a,ttt b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int i,j,k,l,f1,f2,f3,t1,t2,t3; int r,c,m; int a1,b1,c1; int T,n; cin >>n; for(i=1;i<=n;i++){ cin >> qq[i].x >> qq[i].y>> qq[i].r; } sort(qq+1,qq+1+n,cmp1); /*for(i=1;i<=n;i++){ cout <<i <<" " << qq[i].x <<" "<<qq[i].y <<" "<<qq[i].r << endl; }*/ f1=0;f2=0; double sum1=0,sum2=0; for(i=1;i<=n;i++){ t1=0;t2=0; for(j=1;j<=f1;j++){ if(fun1(qq[q1[j]],qq[i])<qq[q1[j]].r+qq[i].r){ t1++; } } for(j=1;j<=f2;j++){ if(fun1(qq[q2[j]],qq[i])<qq[q2[j]].r+qq[i].r){ t2++; } } if(t1%2==0){ //��������� q1[++f1]=i; //这个f1中存的是i这个下标 }else if(t2%2==0){ q2[++f2]=i; }else{ q1[++f1]=i; } } for(i=1;i<=f1;i++){ t1=0; for(j=1;j<i;j++){ if(fun1(qq[q1[i]],qq[q1[j]])<qq[q1[i]].r+qq[q1[j]].r){ t1++; } } if(t1%2==0){ //ǰ��ż�������Ϊ���� sum1+=PI*qq[q1[i]].r*qq[q1[i]].r; }else{ sum1-=PI*qq[q1[i]].r*qq[q1[i]].r; } } for(i=1;i<=f2;i++){ t1=0; for(j=1;j<i;j++){ if(fun1(qq[q2[i]],qq[q2[j]])<qq[q2[i]].r+qq[q2[j]].r){ t1++; } } if(t1%2==0){ //ǰ��ż�������Ϊ���� sum1+=PI*qq[q2[i]].r*qq[q2[i]].r; }else{ sum1-=PI*qq[q2[i]].r*qq[q2[i]].r; } } printf("%.9f\n",sum1+sum2); //cout << sum1+sum2 <<endl; return 0;}
阅读全文
0 0
- Codeforces Round #418 (Div. 2)
- Codeforces Round #418 (Div. 2)
- Codeforces Round #418 (Div. 2)
- Codeforces Round #418 (Div. 2)
- Codeforces Round #418 (Div. 2)
- Codeforces Round #418 (Div. 2)
- Codeforces Round #418 (Div. 2) C
- Codeforces Round #418 (Div. 2) 题解 ABC
- Codeforces Round#418 (Div.2) ABC
- Codeforces Round #418 (Div. 2) ABCD
- Codeforces Round #418 (Div. 2) Codeforces 814A-D
- Codeforces Round #102 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #104 (Div. 2)
- Codeforces Round #105 (Div. 2)
- Codeforces Round #105 (Div. 2)
- Codeforces Round #107 (Div. 2)
- JavaScript面向对象(1)——谈谈对象
- 测试信号屏蔽与解除并递达
- GetSafeHwnd 解释
- 嵌入式视频方案学习第十二篇——视频编码模块VENC 一般初始化过程
- 数据结构与算法-01(算法走起)
- Codeforces Round #418 (Div. 2)
- 【论文阅读】Neural Machine Translation By Jointly Learning To Align and Translate
- leetcode-49. Group Anagrams
- iOS 笔试题~两个有序数组合并成一个有序数组
- 验证子进程退出时会给父进程发送信号的机制 、 编写父进程等待子进程的异步版本
- BigDecimal
- 从零开始-基础算法篇-插入排序
- 9、源码包管理
- VIM中的保存和退出、VIM退出命令、如何退出vim编辑、VIM命令大全