摘要:
第一个图论题,拓扑排序;挺容易的,基本上就是一个裸地拓扑排序;代码: 1 #include 2 #include 3 using namespace std; 4 int a[505][505],ans[505],cnt[505],n,m,x,y; 5 6 void top_sort() 7 { 8 for(int i=1; i<=n; i++) 9 for(int j=1; j<=n; j++)10 if(a[i][j]==1)11 cnt[j]++;12 for(int i=1; i<=n; i++)... 阅读全文
摘要:
昨天想了一下D题,有点思路不过感觉很麻烦,就懒得去敲了;今天上午也想了一下,还是没有结果,看了一下官方题解,证明得很精彩;这道题目其实就是一道裸地最大上升子序列的题;看到这里,直接怒码···· 1 #include 2 #include 3 using namespace std; 4 int a[100009]; 5 int main() 6 { 7 int n,k,x,cnt=0; 8 scanf("%d",&n); 9 for(int i=0;i<n;i++)10 {11 scanf("%d", 阅读全文
摘要:
C题很容易看懂题目,不过两个循环肯定会TLE,所以得用点小聪明;首先排好序,因为是全排列,乱序和顺序的结果是一样的;然后呢····如果是数列 1 2 3 4 5元素1 被 2 3 4 5每个减了2次,它自己减0一次;相抵后为-7;元素2 被 3 5 4 每个减了2次,它减1两次,减0一次;相抵后为 -3;元素3 相抵后为1;可以发现他们的数量相差4;这样就好办了,一个循环就搞定了;代码: 1 #include 2 #include 3 #include 4 using namespace std; 5 int a[100009]; 6 long long 阅读全文
摘要:
B题是一个计算几何的题,虽然以前看过计算几何的ppt,但一直都没有写过;昨晚比赛的时候本来想写的,但是怕不熟练浪费时间,太可惜了!其实没必要选出一个最大的矩形;以矩形的一条对角线为轴,向上或者向下找到最大的三角形的面积就行了,可以看看官方的题解,讲的挺不错的!代码: 1 #include 2 #define eps 0.00000001 3 using namespace std; 4 int a[305][2]; 5 double ccw(int x,int y,int z) 6 { 7 return ((double)(a[y][0]-a[x][0])*(a[z][1]-a[x][... 阅读全文
摘要:
最水的题,可惜当时赶时间没有注意数据范围;暴力超时了!其实应该用x,y的最大公约数来判断;代码: 1 #include 2 using namespace std; 3 int gcd(int a,int b) 4 { 5 return b==0?a:gcd(b,a%b); 6 } 7 int main() 8 { 9 int x,y,a,b;10 cin>>x>>y>>a>>b;11 if(x<y)12 {13 x=x^y;14 y=x^y;15 x=x^y;16 }17 int k=x/... 阅读全文